首页 > 解决方案 > 在 wordpress 中按主要类别显示相关产品

问题描述

我有分配了两个类别的产品,我在类别选择下选择了每个产品的主要类别。
现在我想按主要产品显示相关产品。
我正在使用 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 );

请帮帮我,我该怎么做?

标签: wordpresswoocommerceyoastrelated-products

解决方案


过滤器应该没问题,问题是 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/


推荐阅读