在WooCommerce的单个帖子中获取产品类别的完整产品单页

时间:2017-10-10 11:32:38

标签: php wordpress woocommerce shortcode product

我正在寻找一个代码,以便在一个帖子上显示我选择的特定产品类别的所有产品的完整产品信息(产品标题,购买按钮,图片库,描述等)。

实际上没有任何短代码,我没有自己写东西的技能。

也许某人有解决方案?

1 个答案:

答案 0 :(得分:0)

这是一个自定义短代码,它在循环中使用现有的[product_page] woocommerce短代码,输出定义的产品类别的所有单个产品页面(一个接一个)。

此自定义短代码有两个参数:

    产品类别(slug)的
  • cat
  • limit 了解要显示的帖子数量(默认为全部)

代码:

if( !function_exists('single_product_pages_by_category') ) {

    // Add Shortcode
    function single_product_pages_by_category( $atts ) {

        // Attributes
        $atts = shortcode_atts(
            array(
                'cat' => '',
                'limit'   =>'-1'
            ),
            $atts, 'product_pages_cat'
        );

        $posts = get_posts( array(
            'post_type'      => 'product',
            'post_status'    => 'publish',
            'posts_per_page' => $atts['limit'],
            'tax_query'      => array( array(
                'taxonomy'   => 'product_cat',
                'field'      => 'slug',
                'terms'      => $atts['cat'],
            ) )
        ) );

        $output = '<div class="products-in-'.$atts['cat'].'">'; // DIV container html tag (opening)

        // Iterating though each product in the defined category
        foreach( $posts as $post ){
            $post_id = $post->ID; // The Product ID
            // Using WooCommerce [product_page] existing shortcode in the loop
            $output .= '<div class="product-'.$post_id.'">' . do_shortcode ( "[product_page id=$post_id]" ) . '</div>';
        }

        $output .= '</div>'; // DIV container html tag (closing)

        // Always return the output (never echo)
        return $output;
    }

    add_shortcode( 'product_pages_cat', 'single_product_pages_by_category' );
}

代码进入活动子主题(活动主题或任何插件文件)的function.php文件中。

在WooCommerce 3 +中测试并运行

USAGE ('海报'产品类别slug的示例):

[product_pages_cat cat="posters"]