WooCommerce - 最新产品抵消

时间:2015-11-02 14:01:21

标签: php wordpress woocommerce

背景:WooCommerce提供了一个短代码,可以显示我想要的任何地方的最新产品。

  <?php echo do_shortcode('[recent_products columns="3"]'); ?>

WP_Query 中有一个名为偏移的参数,允许我们传递所需数量的帖子。

  <?php $query = new WP_Query( array( 'offset' => 3 ) ); ?>

所以,如果我使用上面的查询循环帖子,我得到的第一个结果将是第四个最新帖子。正确?

问题:我想知道是否有可能延长WC的近期帖子短码来接受偏移量论点?

1 个答案:

答案 0 :(得分:2)

您必须更改wp-content/plugins/woocommerce/includes/class-wc-shortcodes.php这样的recent_products()方法:

public static function recent_products( $atts ) {
        $atts = shortcode_atts( array(
            'per_page' => '12',
            'columns'  => '4',
            'orderby'  => 'date',
            'order'    => 'desc',
            'offset'   => 0,
            'category' => '',  // Slugs
            'operator' => 'IN' // Possible values are 'IN', 'NOT IN', 'AND'.
        ), $atts );
        $query_args = array(
            'post_type'           => 'product',
            'post_status'         => 'publish',
            'ignore_sticky_posts' => 1,
            'posts_per_page'      => $atts['per_page'],
            'orderby'             => $atts['orderby'],
            'order'               => $atts['order'],
            'offset'              => $atts['offset'],
            'meta_query'          => WC()->query->get_meta_query()
        );
        $query_args = self::_maybe_add_category_args( $query_args, $atts['category'], $atts['operator'] );
        return self::product_loop( $query_args, $atts, 'recent_products' );
    }

这样就添加了offset属性(默认值为0),将在WP_Query中使用。