WooCommerce - 有条件的has_term在更新后不再起作用了

时间:2016-08-25 02:25:14

标签: php wordpress woocommerce categories product

因此我使用此example中代码段的条件,并this thread code成功:

但在更新我的WordPress核心和WooCommerce插件后,它已不再有效。

if ( is_product() && has_term( 'sample-category', 'product_cat' ) ){

    add_action( 'woocommerce_after_add_to_cart_button', 'add_custom_button', 10, 0 );
    function add_custom_button() {
        global $products;

        $product_link = get_permalink( $products->id );
        $sample_link = substr($product_link, 0, -1) . '-swatch-card/';
        echo '<a class="button alt btn-sample" href="' . esc_url( $sample_link ) .'">' . __( "Order a Sample", "my_theme_slug" )  . '</a>';

    }

}

Child插件仍然在function.php文件中有正确的代码。

我该如何解决这个问题?

由于

1 个答案:

答案 0 :(得分:3)

尝试这种方式可能是,使用$ post全局对象并在函数中嵌入条件:

add_action( 'woocommerce_after_add_to_cart_button', 'add_custom_button', 10, 0 );
function add_custom_button() {
    global $post;
    if ( has_term( 'collection', 'product_cat', $post->ID ) ) {
        $product_link = get_permalink( $post->ID );
        $sample_link = substr($product_link, 0, -1) . '-swatch-card/';
        echo '<a class="button alt btn-sample" href="' . esc_url( $sample_link ) .'">' . __( "Order a Sample", "my_theme_slug" )  . '</a>';
    }
};
  

条件has_term()有时需要它的第三个参数才能工作......在function.php中它无法找到当前帖子所以在这种情况下最好将它嵌入$ post后的函数中$ product global object。