Product attribute lists permalinks ("/attribute/term") were not working
for attribute names containing non-ascii characters. That's because
when the attribute taxonomy was registered the url rewrite rules were
created using the sanitized version of the attribute name, which
implies converting these characters into the urlencoded version.
The fix consists of applying "urldecode" to the sanitized attribute
name before using it to create the rewrite rule. The sanitization
needs to be kept for compatibility purposes, since it also replaces
latin characters with accents into the non-accent versions
(this conversion won't be affected by "urldecode")
get_related_products_query in the WC_Product_Data_Store_CPT class is
querying the suitable products with a "limit" clause, this causes
that products down in the table are never picked for display.
This commit adds a ORDER BY RAND() to the query so that all products
have a chance to get picked.
The feature was using option names prefixed with
"woocommerce_attribute_lookup__". That double underscore breaks WP
standards for option names. The option names have been changed
so that they use a single underscore instead.
The original event used, 'pull_request', runs in the context of the
pull request. In the case of pull requests created from forks this means
that a read-only GitHub token is used for API calls, and thus the
call used to assign the milestone fails.
The fix is using the 'pull_request_target' event, which runs in the
context of the base branch, and thus with a read-write token. See:
https://docs.github.com/en/actions/reference/events-that-trigger-workflows#pull_request_target
Also, added a warning message when no milestone without a release
branch is found and thus the newest existing milestone is assigned
(this is a fallback that should normally not happen).
This method is now redundant since the `$object_type` property is set for the class. This means the parent method will now return the exact same value.
If the GH API call to assign the milestone to a merged PR returns an
error, the data returned from the call will be dumped to the console,
and thus will be readable by looking at the action execution log.