使WooCommerce产品类别仅在主页上显示图片

时间:2019-07-23 作者:Saenen

我正在尝试设置我的网站,以便我的WooCommerce产品类别只在我的主页上显示图像。目前我有:

<?php
function fp_categories() {
    if( is_front_page() ) {
        add_action( \'woocommerce_before_subcategory_title\', \'woocommerce_subcategory_thumbnail\', 10 ) ;
    } else {
        remove_action( \'woocommerce_before_subcategory_title\', \'woocommerce_subcategory_thumbnail\', 10 ) ;
    }
}
?>
这确实会删除图像,但会从每个页面中删除。我试过使用is_home 而不是is_front_page, 但这也没用。有什么建议吗?

3 个回复
最合适的回答,由SO网友:Andi Ruggles 整理而成

尝试运行与template\\u重定向操作挂钩的函数,如下所示:

<?php
function fp_categories() {
    if( is_front_page() ) {
        add_action( \'woocommerce_before_subcategory_title\', \'woocommerce_subcategory_thumbnail\', 10 ) ;
    } else {
        remove_action( \'woocommerce_before_subcategory_title\', \'woocommerce_subcategory_thumbnail\', 10 ) ;
    }
}

add_action( \'template_redirect\', \'fp_categories\' );
?>
我不清楚为什么这样做会起作用,我相信函数在可用之前就已经运行了,但希望有人能进一步澄清。

SO网友:Faisal Sheikh

请试试这个is_home() 阿尔索利克:

if( is_home() || is_front_page() )

SO网友:nmr

我将提出一种不同的方法,在操作开始时更改挂钩函数的列表(添加、删除)。

add_action( \'woocommerce_before_subcategory_title\', \'fp_categories\', 1 );
function fp_categories()
{
    if ( ! is_shop() && ! is_front_page() )
        remove_action(\'woocommerce_before_subcategory_title\', \'woocommerce_subcategory_thumbnail\', 10);
    else
        add_action(\'woocommerce_before_subcategory_title\', \'woocommerce_subcategory_thumbnail\', 10);
}
在这种特殊情况下,使用上述方法或公认的答案不会产生任何影响。

如果条件将基于某些产品特性(例如元字段、拥有的标记),此方法将允许为每个产品添加或删除挂钩函数(每次执行时检查条件)。