2015-11-02 3 views
1

Фон: WooCommerce предлагает короткий код для отображения последних продуктов в любом месте, которое я хочу.WooCommerce - Последние продукты Офсет

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

Существует аргумент в WP_Query назвал смещение, что позволяет перейти на желательные посты номер.

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

Так что, если я использую приведенный выше запрос в цикле по постам, первый результат я получаю будет четвертый последнее сообщение. Правильно?

Вопрос: Мне было интересно, можно ли продлить короткий код WC для коротких сообщений, чтобы принять аргумент offset?

ответ

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.

+0

Это похоже на нежное решение. Мне не удалось найти файл shortcodes-init.php. Или это файл, который мне нужно будет создать? Извините за беспокойство, но я не гожусь с WooCommerce. –

+0

Извините, это было из старой версии. Посмотрите на обновленный ответ. – vard

+0

Прохладный. Можно ли это сделать без изменения самого плагина? Потому что изменение будет идти после следующего обновления. Правильно? –

Смежные вопросы