自定义帖子类型在页面模板上循环

时间:2013-03-09 作者:Miguel

您好,我正在尝试制作一个页面模板,该模板显示按元键排序的自定义帖子类型列表,我可以轻松地使用query_posts 但我想通过pre_get_posts 所以我做了一个这样的函数:

add_action(\'pre_get_posts\', \'events\');
function events($query) {
  if ( is_page_template(\'page-myevents.php\') ){
    $query->set(\'post_type\', \'events\');
    $query->set( \'meta_key\', \'start\' );
    $query->set( \'orderby\', \'meta_value_num\' );        
    $query->set( \'order\', \'DESC\' );
    $query->set(\'numberposts\', 5); 
  }
}
但当我进入它发送给我的404页面时,它不起作用,我甚至补充道$query->get_posts() 但没什么,我有错误,有什么建议吗?

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

我不确定这是否可行。为什么需要页面模板?为什么不能使用WordPress内置的自定义帖子类型存档(如果您将帖子类型注册为has_archive 设置为true)。我忽略了所有其他可能的$参数,因为我不知道您是如何注册此帖子类型的。

register_post_type( \'events\', array( \'has_archive\' => true ) );
然后,您只需按照元的顺序调整查询

add_action(\'pre_get_posts\', \'events\');
function events($query) {
  if ( is_post_type_archive(\'events\' ) ){
    add_query_var( \'meta_key\', \'start\' );
    add_query_var( \'orderby\', \'meta_value_num\' );        
    add_query_var( \'order\', \'DESC\' );
    add_query_var(\'numberposts\', 5); 
  }
}

结束

相关推荐

Gravtal HoverCard(Jetpack)jQuery错误

我已经尝试在这里搜索这个问题,并且在停用一个又一个插件时遇到了麻烦。我还是搞不清楚到底发生了什么,也许这里有人有主意了?突然出现Javascript错误:这是由Jetpack的气垫卡引起的。我想,在最近的Jetpack更新中,他们更改了Javascript代码中的某些内容,而这正是导致问题的原因。该错误仅发生在单个。php,所以我认为它与另一个脚本冲突。起初我以为它可能是Adsense,但我的侧边栏中也有Adsense代码,在那里hovercards工作正常(除非我打开了single.php)。这里唯一的