WooCommerce-仅排除较旧的缺货商品

时间:2019-04-22 作者:Yoav Aner

试图找到一种方法将缺货项目从列表中排除,但仅在一段时间后(比如,如果它们超过一个月)。

我知道我可以很容易地排除所有这些选项,或者使用以下命令更改顺序this, 但我正在寻找介于两者之间的东西。。。我想使用pre_get_posts 钩子,但不确定具体的查询。

有什么建议吗?

1 个回复
最合适的回答,由SO网友:Nicolai Grossherr 整理而成

大多数必要的信息可以在Code Reference: WP_Query | Class . 其他有用资源Theme Handbook: Conditional Tags. 下面的代码包含一些明确的注释。请注意,这是未经测试的代码,因此不能保证,但它应该可以让您继续。

add_action( \'woocommerce_product_query\', \'custom_woocommerce_product_query\' );
function custom_woocommerce_product_query( $q ) {
  if ( ! is_admin() ) {   
    //query for the out of stock items we want to exclude
    $oos_query = new WP_Query( [ 
      // items must be older than 1 month
      \'date_query\' => [ [ 
        \'column\' => \'post_date\', 
        \'before\' => \'1 month ago\' 
      ], ],
      //only out of stock items...
      \'meta_query\' => [ [ 
        \'key\' => \'_stock_status\',
        \'value\' => \'outofstock\',
        \'compare\' => \'=\',
       ], ],
      //we want products, nothing else
      \'post_type\' => \'product\',
      //we want them all
      \'posts_per_page\' => -1,
      //the ids are enough, no need to get more data 
      \'fields\' => \'ids\',
    ] );
    //getting array of ids from object
    $exclude_ids = $oos_query->posts;

    //excluding the above queried products from woocommerce\'s product query
    $q->set( \'post__not_in\', $exclude_ids );
  }
}

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post