如果(!$loop->Have_Posts())条件不起作用-WP_QUERY

时间:2020-04-09 作者:Bruce Banner

所以我几乎可以肯定的是,我让它工作得很好,然后不知从哪里出来,它似乎没有工作。我到处修补,让它把一切都隐藏起来,然后什么也不隐藏。想知道是否有人发现我做错了什么?

下面的代码基本上可以扫描我的所有产品-simple & variable - 看看是否有IN STOCK 产品有sale 它们的价格。如果没有IN STOCK 具有的产品sale 价格,隐藏某个CSS ID。否则,什么也不做。不知道我错过了什么。。。

// -----------------------------------------
// HIDE WEEKLY SPECIALS IF THERE ARE NO PRODUCTS

function weeklyspecials() {
    $args = array(
            \'post_type\'      => \'product\',
            \'posts_per_page\' => 4,
            \'meta_query\'     => array(
                    \'relation\' => \'AND\',
                    array(
                        \'relation\' => \'OR\',
                        array( // Simple products type
                            \'key\'           => \'_sale_price\',
                            \'value\'         => 0,
                            \'compare\'       => \'>\',
                            \'type\'          => \'numeric\'
                        ),
                        array( // Variable products type
                            \'key\'           => \'_min_variation_sale_price\',
                            \'value\'         => 0,
                            \'compare\'       => \'>\',
                            \'type\'          => \'numeric\'
                        )
                    ),
                    array( // Stock status
                        \'key\' => \'_stock_status\',
                        \'value\' => \'instock\'
                    )
                )
        );

        $loop = new WP_Query( $args );

        if ( ! $loop->have_posts() ) {
            echo \'<style>#weeklyspecials {display:none;}</style>\';
        }
}
add_action ( \'wp_body_open\', \'weeklyspecials\' );

Results of my VAR_DUMP()

object(WP_Query)[18711]
  public \'query\' => 
    array (size=3)
      \'post_type\' => string \'product\' (length=7)
      \'posts_per_page\' => int 4
      \'meta_query\' => 
        array (size=3)
          \'relation\' => string \'AND\' (length=3)
          0 => 
            array (size=3)
              ...
          1 => 
            array (size=2)
              ...
  public \'query_vars\' => 
    array (size=65)
      \'post_type\' => string \'product\' (length=7)
      \'posts_per_page\' => int 4
      \'meta_query\' => 
        array (size=3)
          \'relation\' => string \'AND\' (length=3)
          0 => 
            array (size=3)
              ...
          1 => 
            array (size=2)
              ...
      \'error\' => string \'\' (length=0)
      \'m\' => string \'\' (length=0)
      \'p\' => int 0
      \'post_parent\' => string \'\' (length=0)
      \'subpost\' => string \'\' (length=0)
      \'subpost_id\' => string \'\' (length=0)
      \'attachment\' => string \'\' (length=0)
      \'attachment_id\' => int 0
      \'name\' => string \'\' (length=0)
      \'pagename\' => string \'\' (length=0)
      \'page_id\' => int 0
      \'second\' => string \'\' (length=0)
      \'minute\' => string \'\' (length=0)
      \'hour\' => string \'\' (length=0)
      \'day\' => int 0
      \'monthnum\' => int 0
      \'year\' => int 0
      \'w\' => int 0
      \'category_name\' => string \'\' (length=0)
      \'tag\' => string \'\' (length=0)
      \'cat\' => string \'\' (length=0)
      \'tag_id\' => string \'\' (length=0)
      \'author\' => string \'\' (length=0)
      \'author_name\' => string \'\' (length=0)
      \'feed\' => string \'\' (length=0)
      \'tb\' => string \'\' (length=0)
      \'paged\' => int 0
      \'meta_key\' => string \'\' (length=0)
      \'meta_value\' => string \'\' (length=0)
      \'preview\' => string \'\' (length=0)
      \'s\' => string \'\' (length=0)
      \'sentence\' => string \'\' (length=0)
      \'title\' => string \'\' (length=0)
      \'fields\' => string \'\' (length=0)
      \'menu_order\' => string \'\' (length=0)
      \'embed\' => string \'\' (length=0)
      \'category__in\' => 
        array (size=0)
          empty
      \'category__not_in\' => 
        array (size=0)
          empty
      \'category__and\' => 
        array (size=0)
          empty
      \'post__in\' => 
        array (size=0)
          empty
      \'post__not_in\' => 
        array (size=0)
          empty
      \'post_name__in\' => 
        array (size=0)
          empty
      \'tag__in\' => 
        array (size=0)
          empty
      \'tag__not_in\' => 
        array (size=0)
          empty
      \'tag__and\' => 
        array (size=0)
          empty
      \'tag_slug__in\' => 
        array (size=0)
          empty
      \'tag_slug__and\' => 
        array (size=0)
          empty
      \'post_parent__in\' => 
        array (size=0)
          empty
      \'post_parent__not_in\' => 
        array (size=0)
          empty
      \'author__in\' => 
        array (size=0)
          empty
      \'author__not_in\' => 
        array (size=0)
          empty
      \'facetwp\' => boolean true
      \'ignore_sticky_posts\' => boolean false
      \'suppress_filters\' => boolean false
      \'cache_results\' => boolean true
      \'update_post_term_cache\' => boolean true
      \'lazy_load_term_meta\' => boolean true
      \'update_post_meta_cache\' => boolean true
      \'nopaging\' => boolean false
      \'comments_per_page\' => string \'50\' (length=2)
      \'no_found_rows\' => boolean false
      \'order\' => string \'DESC\' (length=4)
  public \'tax_query\' => 
    object(WP_Tax_Query)[18708]
      public \'queries\' => 
        array (size=0)
          empty
      public \'relation\' => string \'AND\' (length=3)
      protected \'table_aliases\' => 
        array (size=0)
          empty
      public \'queried_terms\' => 
        array (size=0)
          empty
      public \'primary_table\' => string \'wp_posts\' (length=8)
      public \'primary_id_column\' => string \'ID\' (length=2)
  public \'meta_query\' => 
    object(WP_Meta_Query)[18709]
      public \'queries\' => 
        array (size=3)
          0 => 
            array (size=3)
              ...
          1 => 
            array (size=2)
              ...
          \'relation\' => string \'AND\' (length=3)
      public \'relation\' => string \'AND\' (length=3)
      public \'meta_table\' => string \'wp_postmeta\' (length=11)
      public \'meta_id_column\' => string \'post_id\' (length=7)
      public \'primary_table\' => string \'wp_posts\' (length=8)
      public \'primary_id_column\' => string \'ID\' (length=2)
      protected \'table_aliases\' => 
        array (size=2)
          0 => string \'wp_postmeta\' (length=11)
          1 => string \'mt1\' (length=3)
      protected \'clauses\' => 
        array (size=3)
          \'wp_postmeta\' => 
            array (size=7)
              ...
          \'wp_postmeta-1\' => 
            array (size=7)
              ...
          \'mt1\' => 
            array (size=6)
              ...
      protected \'has_or_relation\' => boolean true
  public \'date_query\' => boolean false
  public \'request\' => string \'SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID FROM wp_posts  INNER JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id )  INNER JOIN wp_postmeta AS mt1 ON ( wp_posts.ID = mt1.post_id ) WHERE 1=1  AND ( 
  ( 
    ( wp_postmeta.meta_key = \'_sale_price\' AND CAST(wp_postmeta.meta_value AS SIGNED) > \'0\' ) 
    OR 
    ( wp_postmeta.meta_key = \'_min_variation_sale_price\' AND CAST(wp_postmeta.meta_value AS SIGNED) > \'0\' )
  ) 
  AND 
  ( mt1.meta_key = \'_stock_status\' AND mt1.meta_value = \'instock\' )
) AND wp_posts.\'... (length=735)
  public \'posts\' => 
    array (size=0)
      empty
  public \'post_count\' => int 0
  public \'current_post\' => int -1
  public \'in_the_loop\' => boolean false
  public \'comment_count\' => int 0
  public \'current_comment\' => int -1
  public \'found_posts\' => int 0
  public \'max_num_pages\' => int 0
  public \'max_num_comment_pages\' => int 0
  public \'is_single\' => boolean false
  public \'is_preview\' => boolean false
  public \'is_page\' => boolean false
  public \'is_archive\' => boolean true
  public \'is_date\' => boolean false
  public \'is_year\' => boolean false
  public \'is_month\' => boolean false
  public \'is_day\' => boolean false
  public \'is_time\' => boolean false
  public \'is_author\' => boolean false
  public \'is_category\' => boolean false
  public \'is_tag\' => boolean false
  public \'is_tax\' => boolean false
  public \'is_search\' => boolean false
  public \'is_feed\' => boolean false
  public \'is_comment_feed\' => boolean false
  public \'is_trackback\' => boolean false
  public \'is_home\' => boolean false
  public \'is_privacy_policy\' => boolean false
  public \'is_404\' => boolean false
  public \'is_embed\' => boolean false
  public \'is_paged\' => boolean false
  public \'is_admin\' => boolean false
  public \'is_attachment\' => boolean false
  public \'is_singular\' => boolean false
  public \'is_robots\' => boolean false
  public \'is_favicon\' => boolean false
  public \'is_posts_page\' => boolean false
  public \'is_post_type_archive\' => boolean true
  private \'query_vars_hash\' => string \'1f83b003e69dc81d9f9a9bf0531defa3\' (length=32)
  private \'query_vars_changed\' => boolean true
  public \'thumbnails_cached\' => boolean false
  private \'stopwords\' => null
  private \'compat_fields\' => 
    array (size=2)
      0 => string \'query_vars_hash\' (length=15)
      1 => string \'query_vars_changed\' (length=18)
  private \'compat_methods\' => 
    array (size=2)
      0 => string \'init_query_flags\' (length=16)
      1 => string \'parse_tax_query\' (length=15)

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

产品变体存储为不同的岗位类型,product_variation, 因此,您必须将该帖子类型添加到查询中:

\'post_type\' => array( \'product\', \'product_variation\' )
此外,您可以尝试使用WooCommerce的特定功能,如wc_get_product_ids_on_sale(), wc_get_products() 等等,在为WooCommerce编码时,它们可以让您的生活更轻松。

相关推荐

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

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