Overview
<我正在创建一个主题,它有两种自定义帖子类型(作为自定义插件):
我还创建了single-articles.php
和archive-articles.php
插件内的模板。审查CPT相同。
这两种自定义帖子类型都使用default WordPress分类法(类别和标记)
我的阅读设置设置为“静态页面”
首页:主页(自定义front-page.php
我创建的文件)
贴子页面:“站点新闻”页面(我想同时显示贴子和CPT)
The Problem
在创建了一篇常规帖子和一篇基于CPT文章的帖子之后,我转到了主帖子页面(网站新闻),在那里我做了
not 请参见自定义贴子类型(仅限使用标准的贴子
post
类型)。
经过一些搜索(我是一个noob),我明白如果我想在主页上显示CPT,我必须使用pre_get_posts
.
所以,概括一下:我想展示
主帖子页面上的常规帖子和自定义帖子类型(CPT)
类别档案页面的常规帖子和自定义帖子类型(CPT)Here\'s What I Did
// Add custom post types to the default loop (ref: http://bit.ly/1bqeBJC)
function odigbs_add_custom_types( $query ) {
if ( !is_admin() && !is_preview() ) {
if ( (is_home() || is_category() || is_tag() || is_archive() || is_feed() ) && $query->is_main_query() ) {
$query->set( \'post_type\', array( \'post\', \'articles\', \'reviews\') );
return $query;
}
}
}
add_filter( \'pre_get_posts\', \'odigbs_add_custom_types\' );
我相信这是not the right way 来制作这个过滤器,但我找不到任何文章能彻底解释这个概念。。。所以我要加入进来。The Results
<如果我去:http://site.dev/the-site-news/
(阅读设置的主要帖子页面),我现在DO 查看所有自定义帖子类型and 它确实使用single-{post_type}.php
插件中的文件如果我单击页面上的任何分类术语:http://site.dev/category/{some term}/
and 它确实使用archive-{post_type}.php
插件中的文件But...如果我将浏览器指向http://site.dev/{custom_post_type}
, (即不使用类别)要查看该CPT的档案,网站会抛出各种错误但如果禁用过滤器,则can 现在转到http://starter.dev/{custom_post_type}/
, 但我现在又回到了我开始的地方,在主帖子页面上只显示默认帖子。没有自定义帖子类型
Questions
<如我所怀疑的那样,过滤器是否有问题如果是,如何
should 它是写的吗我希望我清楚地表达了这部戏剧。。。
提前感谢