在 wordpress 中按主要类别显示相关产品
show related product by primary category in 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 );
请帮我看看我该怎么做?
过滤器应该没问题,问题是 Wordpress 中的相关产品使用瞬态缓存在数据库中。
瞬变可以在 wp_options table 中找到,名称为 _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/
我有分配了两个类别的产品,我在类别选择下为每个产品选择了主要类别。
现在我想按主要产品显示相关产品。
我正在使用 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 );
请帮我看看我该怎么做?
过滤器应该没问题,问题是 Wordpress 中的相关产品使用瞬态缓存在数据库中。
瞬变可以在 wp_options table 中找到,名称为 _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/