【问题标题】:Change WPBakery Woocommerce product loop shortcode to order out of stock products at last or hide更改 WPBakery Woocommerce 产品循环短代码以最后订购缺货产品或隐藏
【发布时间】:2018-04-16 21:25:08
【问题描述】:

我在我的网站中使用了定制的商店页面。在那里,我使用了 WPBakery(前 Visual Composer)的“产品循环”组件。

我想更改“最近”订单以使“缺货”产品在这种情况下不显示,我尝试将 'stock_status' => 'instock', 在下面的代码中,但它不起作用。

$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
switch ($display) {
    case 'recent':
       $args = array(
            'post_type'             => 'product',
            'post_status'           => 'publish',
            'stock_status'          => 'instock',
            'ignore_sticky_posts'   => 1,
            'posts_per_page'        => $count,
            'orderby'               => 'date',
            'order'                 => 'desc',
            'paged'                 => $paged,
            'meta_query'            => WC()->query->get_meta_query(),
        );
        break;

无论有没有线,结果都是一样的。

另一种情况:

我想更改“评分最高”选项,以使“缺货”产品出现在产品循环的末尾。 我有以下代码:

case 'top_rated':
       $args = array(
            'post_type'             => 'product',
            'post_status'           => 'publish',
            'ignore_sticky_posts'   => 1,
            'posts_per_page'        => $count,
            'order'                 => $order,
            'paged'                 => $paged,
            'meta_key'              => '_wc_average_rating',
            'orderby'               => 'meta_value_num',
            'meta_query'            => WC()->query->get_meta_query(),
            'tax_query'             => WC()->query->get_tax_query(),
        );
        break;

我需要使用带有 2 个参数的查询,最高评价和 stock_status。如何在上面的代码中创建查询?

我的环境:
主题 Jupiter 版本 6.1.1
WPBakery 5.4.5.1
WooCommerce 版本 3.3.4
WordPress 4.9.4

对不起,我的PHP知识是新手...

【问题讨论】:

    标签: php wordpress woocommerce visual-composer


    【解决方案1】:

    Para o segundo caso。 案例'top_rated':

        //RAS
        //cria uma variável com a meta query padrao do woocommerce
        $meta_query  = WC()->query->get_meta_query();  
        /*cria instancias para as 2 metakeys(array) para utilizar como argumento no orderby, e adiciona a variável acima.*/         
    
        $meta_query = array(
        'relation' => 'AND',
        'rating' => array('key' => '_wc_average_rating','compare' => 'EXISTS',),
        'stockstatus' => array('key' => '_stock_status','compare' => 'EXISTS',), 
        );     
    
       $args = array(
            'post_type'             => 'product',
            'post_status'           => 'publish',
            'ignore_sticky_posts'   => 1,
            'posts_per_page'        => $count,
            //'order'                 => $order,
            'paged'                 => $paged,
            //'meta_key'            => '_wc_average_rating',
            //'orderby'             => 'meta_value_num',
            'meta_query'            => $meta_query,//usa a variavel criada como argumento
            'tax_query'             => WC()->query->get_tax_query(),
             'orderby' => array('rating'=>'DESC','stockstatus'=>'ASC',),//usa as instancias criadas como argumento para orderby.
        );
    
        break;
    

    【讨论】:

      【解决方案2】:

      对于“最近”的案例:

      //RAS
      //creates a variable with the standard meta query of woocommerce
      $meta_query  = WC()->query->get_meta_query();
      /*adds custom metakey to variable above with argument to display all that have the field
      '_stock_status' with value other than outofstock
      */
      $meta_query[] =  array(
          'relation' => 'AND',
          array(
              'key'     => '_stock_status',
              'value'   => 'outofstock',
              'compare'   => '!='
          ),
      
      );
      
         $args = array(
              'post_type'             => 'product',
              'post_status'           => 'publish',
              'ignore_sticky_posts'   => 1,
              'posts_per_page'        => $count,
              'orderby'               => 'date',
              'order'                 => 'desc',
              'paged'                 => $paged,
              'meta_query'            =>  $meta_query,//use variable created as an argument
      
          );
          break;
      

      【讨论】:

        猜你喜欢
        • 2014-08-20
        • 1970-01-01
        • 1970-01-01
        • 2019-09-27
        • 1970-01-01
        • 2022-01-26
        • 2021-06-13
        • 2014-09-26
        • 2011-09-01
        相关资源
        最近更新 更多