使用挂钩更改Woocommerce的“添加到购物车”按钮仅影响特定查询内部,而不会全局

时间:2019-02-09 11:06:01

标签: php wordpress woocommerce

我想列出具有特定元值的所有产品,并且这些产品必须具有用于简单产品/所有产品的“查看产品”按钮,而不是通常的“添加到购物车”按钮。但是当我使用add_filter('woocommerce_loop_add_to_cart_link')挂钩时,它将更改网站上列出的所有产品的添加到购物车按钮。

我需要的是仅更改通过此查询列出的产品的“添加到购物车”按钮。而且没有其他实例。

代码如下。有没有解决的办法? 预先感谢。

public function global_products_shortcode($atts)
{
        global $woocommerce_loop;
        extract( shortcode_atts(
               array(
                    'columns' => '4',
                    'posts_per_page' => '10',

               ),
               $atts
        ));

        $woocommerce_loop['columns'] = $columns;



        $args = array(

            'post_type' => 'product',
            'posts_per_page' => $posts_per_page,
            'meta_query' => array(
                                array(
                                'key' => '_global_field',
                                'value' => 'yes'
                                )
                            ),
        );

        $products = new WP_Query($args);
        ob_start();
        if ( $products->have_posts() ) :
            woocommerce_product_loop_start();
            while ( $products->have_posts() ) : $products->the_post();
            global $product, $post;


                wc_get_template_part( 'content', 'product' );


            endwhile;
            woocommerce_product_loop_end();

            else:
            do_action( "woocommerce_shortcode_products_loop_no_results", $atts );
            echo "<p>No results.</p>";
        endif;

        woocommerce_reset_loop();
        wp_reset_postdata();
  return '<div class="woocommerce columns-' . $columns . '">' . ob_get_clean() . '</div>';

}



function replacing_add_to_cart_button( $button, $product ) {
    $button_text = __("View product", "woocommerce");
    $button = '<a class="button" href="' . $product->get_permalink() . '">' . $button_text . '</a>';

    return $button;
}
add_filter( 'woocommerce_loop_add_to_cart_link', 'replacing_add_to_cart_button', 10, 2 );

0 个答案:

没有答案