#wordpress #woocommerce #yoast #related-products
#wordpress #woocommerce #yoast
Вопрос:
У меня есть товары с двумя назначенными категориями, я выбрал основную категорию для каждого товара в разделе «Выбор категории». Теперь я хочу показать похожие товары по основным продуктам.
Я использую плагин yoast seo.
Я добавил приведенный ниже код фильтра в дочернюю тему function.php файл, но он не работает.
// Alter related products query to pull items from Yoast Primary Category
add_filter( 'woocommerce_get_related_product_cat_terms', function( $terms, $product_id ) {
if ( function_exists( 'yoast_get_primary_term_id' ) ) {
$primary_term_product_id = yoast_get_primary_term_id( 'product_cat', $product_id );
if ( $primary_term_product_id ) {
return array( $primary_term_product_id );
}
}
return $terms;
}, 10, 2 );
Ответ №1:
Фильтр должен быть в порядке, проблема в том, что связанные продукты в WordPress кэшируются в базе данных с использованием переходных процессов.
Переходные процессы можно найти в таблице wp_options с именами _transient_wc_related_[product_id]
и _transient_timeout_wc_related_[product_id]
.
Чтобы сразу увидеть эффект фильтрации, вам нужно удалить их из своей базы данных.
Следующий SQL-запрос должен выполнить удаление:
DELETE FROM wp_options WHERE option_name REGEXP '^_transient_timeout_wc_related_[0-9]*$|^_transient_wc_related_[0-9]*$'
После удаления WordPress воссоздаст новые переходные процессы с обновленными данными.
Больше информации о переходных процессах WordPress:
https://developer.wordpress.org/apis/handbook/transients/