Custom Post Type Query issue

时间:2012-03-16 作者:byronyasgur

我有一个与2个自定义帖子类型冲突的问题。我有一个模板文件存档介质。php和创建了相关的“媒体”自定义帖子类型。这一切都很好,但是在侧边栏中,我有一个来自第二个(事件)自定义帖子类型的事件列表,它在各个方面都非常有效,including on this page, 除非没有媒体项目(例如,如果我将它们全部设置为草稿),奇怪的是events 列表不显示任何事件(if ( have_posts() ) 失败)。我似乎不明白为什么。我在归档页面上的循环相当标准,不使用WP\\u query或query post,大致是:

<?php if(have_posts()) :  ?>                    
<?php while(have_posts()) : the_post(); ?> 
.... LOOP ...
<?php endwhile; else : ?>
..... No media items ....
<?php endif; ?>
事件列表是通过以下函数生成的(我保留了这两个参数以保存对代码的完全拆卸,但目前没有使用它们)。此外,我也记不起我为什么要将$post全球化,这是在最初的代码中,但我已经尝试了内外,没有什么不同。我试过的另一件事是wp_reset_query and wp_reset_postdata

function display_events($events_shown, $days_historical){
  // global $post;

  $args =  array(
          \'post_type\' => \'events\',
          \'posts_per_page\' => 5,
          \'order\' => \'ASC\'        
  ); 

  $events_query = new WP_Query( $args );

  if ( have_posts() ) : while ( $events_query->have_posts() ) : $events_query->the_post(); 

    the_title(); 

    endwhile;  else : 
    echo "no events";           
    endif; 
    wp_reset_postdata();  
}
此外,我还创建了第三个测试自定义帖子类型和归档页面,当我在该归档页面上时,出现了完全相同的问题,添加新的媒体项目并没有解决问题,但添加新的测试自定义帖子类型确实解决了问题,因此,二次查询会受到以下事实的影响:页面运行的模板中没有自定义post类型的项目(即在存档介质中没有介质项目,在存档测试中没有测试项目)

EDIT 我刚刚意识到,我可以通过重命名归档页来强制归档,从而将归档页从等式中去掉。php来显示媒体存档。这样做给了我完全相同的结果。

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

现在对我来说还早,但你需要检查一下if( $events_query->have_posts() ) : 而不是if( have_posts ) : 因为后者将根据当前的帖子类型而不是您的自定义查询进行检查。

结束

相关推荐

是否通过`unctions.php`解除jQuery与WooCommerce的连接?

所以我用的是http://woothemes.com/woocommerce/ 电子商务插件,它在本地注册jQuery,与我从Google CDN默认的jQuery调用冲突。这花了很长时间,但我将问题隔离到以下几行代码中woocommerce.php: $suffix = defined(\'SCRIPT_DEBUG\') && SCRIPT_DEBUG ? \'\' : \'.min\'; $lightbox_en = (get_option(\'woocommer

Custom Post Type Query issue - 小码农CODE - 行之有效找到问题解决它

Custom Post Type Query issue

时间:2012-03-16 作者:byronyasgur

我有一个与2个自定义帖子类型冲突的问题。我有一个模板文件存档介质。php和创建了相关的“媒体”自定义帖子类型。这一切都很好,但是在侧边栏中,我有一个来自第二个(事件)自定义帖子类型的事件列表,它在各个方面都非常有效,including on this page, 除非没有媒体项目(例如,如果我将它们全部设置为草稿),奇怪的是events 列表不显示任何事件(if ( have_posts() ) 失败)。我似乎不明白为什么。我在归档页面上的循环相当标准,不使用WP\\u query或query post,大致是:

<?php if(have_posts()) :  ?>                    
<?php while(have_posts()) : the_post(); ?> 
.... LOOP ...
<?php endwhile; else : ?>
..... No media items ....
<?php endif; ?>
事件列表是通过以下函数生成的(我保留了这两个参数以保存对代码的完全拆卸,但目前没有使用它们)。此外,我也记不起我为什么要将$post全球化,这是在最初的代码中,但我已经尝试了内外,没有什么不同。我试过的另一件事是wp_reset_query and wp_reset_postdata

function display_events($events_shown, $days_historical){
  // global $post;

  $args =  array(
          \'post_type\' => \'events\',
          \'posts_per_page\' => 5,
          \'order\' => \'ASC\'        
  ); 

  $events_query = new WP_Query( $args );

  if ( have_posts() ) : while ( $events_query->have_posts() ) : $events_query->the_post(); 

    the_title(); 

    endwhile;  else : 
    echo "no events";           
    endif; 
    wp_reset_postdata();  
}
此外,我还创建了第三个测试自定义帖子类型和归档页面,当我在该归档页面上时,出现了完全相同的问题,添加新的媒体项目并没有解决问题,但添加新的测试自定义帖子类型确实解决了问题,因此,二次查询会受到以下事实的影响:页面运行的模板中没有自定义post类型的项目(即在存档介质中没有介质项目,在存档测试中没有测试项目)

EDIT 我刚刚意识到,我可以通过重命名归档页来强制归档,从而将归档页从等式中去掉。php来显示媒体存档。这样做给了我完全相同的结果。

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

现在对我来说还早,但你需要检查一下if( $events_query->have_posts() ) : 而不是if( have_posts ) : 因为后者将根据当前的帖子类型而不是您的自定义查询进行检查。

相关推荐

如何读取WordPress$Query关联数组(散列)键的值

WordPress编程新手(来自更为传统的环境),并试图了解其一些“独特”特性。我们的网站上有一个目录页,此代码驻留在functions.php, 如果条件为true,则调整结果。if( $query->is_post_type_archive( \'directory\' ) ){ ...//do stuff } 我想知道如何获取is_post_type_archive 这就是“目录”当我对值使用测试时。。。var_dumb($query->is_post