如何使用&&运算符实现WooCommerce满足尺寸和红色属性时输出内容
代码不生效的核心原因
is_tax()函数用于判断当前页面是否为指定分类法的归档页,一个WordPress归档页不可能同时属于pa_size和pa_color两个属性的归档页,所以两个is_tax判断用&&拼接后永远返回假,逻辑从根上就不成立。is_tax(array('pa_color','red'))属于语法错误,判断某个分类法的指定术语归档的正确写法为is_tax( 'pa_color', 'red' ),不可将分类法名和术语名放在同一个数组内传参。
适配需求的修改方案
根据你描述的「尺寸属性归档页下,颜色属性取值为red时显示内容」的需求,默认适配WooCommerce筛选场景,对应代码如下:
add_action( 'woocommerce_before_main_content','show_something', 5 ); function show_something() { // 先判断当前为pa_size属性归档页 if ( is_tax('pa_size') ) { // 兼容获取当前筛选的pa_color值,适配固定链接和参数两种筛选格式 $current_pa_color = get_query_var( 'pa_color' ) ?: ( $_GET['filter_pa_color'] ?? '' ); // 校验颜色为red时输出内容 if ( $current_pa_color === 'red' ) { echo "<h2>Hello World</h2>"; } } }
如果你的实际需求是单个产品页下,产品同时具备尺寸属性、且颜色属性为red时显示内容,则使用以下代码:
add_action( 'woocommerce_before_main_content','show_something', 5 ); function show_something() { // 仅在单个产品页执行逻辑 if ( is_product() ) { global $product; // 获取产品对应属性值 $has_size = $product->get_attribute( 'pa_size' ); $product_color = $product->get_attribute( 'pa_color' ); if ( $has_size && $product_color === 'red' ) { echo "<h2>Hello World</h2>"; } } }
内容的提问来源于stack exchange,提问作者carlozsan
相关产品推荐
相关产品推荐

