【问题标题】:woocommerce : is_home() not working in functions.phpwoocommerce:is_home() 在functions.php 中不起作用
【发布时间】:2014-05-10 12:27:35
【问题描述】:

我正在尝试在我的主页 (home.php) 上显示产品,而不是静态首页,使用 woocommerce 短代码,并将其挂接到 functions.php...

这是 home.php 中的简码: echo do_shortcode('[product_category category="stuff" columns="3"]' );

这是我在functions.php中的代码:

if (is_home())
{ 
remove_action( 'woocommerce_after_shop_loop_item','woocommerce_template_loop_add_to_cart', 10 );
remove_action( 'woocommerce_after_shop_loop_item_title','woocommerce_template_loop_price', 10 );
}

我已经尝试过,wp_reset_query() 和 wp_reset_postdata() 但没有任何效果......

产品已显示,但如果我用 if(is_home())... 包装它,挂钩将不起作用...

谢谢

【问题讨论】:

    标签: wordpress woocommerce


    【解决方案1】:

    如果is_home() 不起作用,请尝试使用is_page_template()。目前,您的主页由 home.php 显示,我可以从您的问题中得出。所以你可以试试这个

    function remove_woocommerce_actions() {
    if (is_page_template( 'home.php' ))
    { 
    remove_action( 'woocommerce_after_shop_loop_item','woocommerce_template_loop_add_to_cart', 10 );
    remove_action( 'woocommerce_after_shop_loop_item_title','woocommerce_template_loop_price', 10 );
    }
    }
    add_action( 'template_redirect', 'remove_woocommerce_actions' ); 
    

    【讨论】:

    • 谢谢彼得,但它根本不起作用。在我的 woocommerce 短代码之前,我在 Custom POst 类型上有 3 个循环,每个循环结束时都有 wp_reset_postdata() ......这可能是原因吗?
    • @user2160627 我更新了我的答案。您使用 CPT 的事实并不重要。我认为remove_action 运行得很早,稍后会被碾压。尝试将其添加到 after_setup_theme 钩子中。
    • @user2160627 使用template_redirect 钩子,after_setup_theme 为早
    • 我会尽快试试这个并告诉你。谢谢
    • is_page_template() 如果您将 home.php 存储在主题内的文件夹中,例如“模板”,也将不起作用。您可以将其更新为 is_page_template('templates/home.php')
    【解决方案2】:

    尝试使用函数 is_front_page()

    【讨论】:

      猜你喜欢
      • 2014-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-11
      • 1970-01-01
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      相关资源
      最近更新 更多