показывать похожие товары по основным категориям в WordPress

#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/