问题描述
我为产品分配了两个类别,我在类别选择下为每个产品选择了主要类别。
现在,我想按主要产品显示重新订购的产品。
我正在使用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中的相关产品使用瞬态缓存在数据库中。
瞬态可以在名称为 _transient_wc_related_[product_id]
和 _transient_timeout_wc_related_[product_id]
的 wp_options 表中找到。
为了立即看到过滤效果,您需要从数据库中删除这些。
以下 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/