自定义帖子类型插件不加载类别模板,而是加载404

时间:2015-05-28 作者:JetXS

在过去的几个小时里,我一直在四处寻找,我开始有点绝望。。。

我已经创建了一个插件来添加我的自定义帖子类型“project”(创建新的公文包)。。。

在这个插件中,我有一个函数文件和一个模板文件单个项目。php和一个模板部件文件夹,其中包含单个项目的内容。其中包含php。在这方面,一切都很好,正如我所希望的。。。

为了能够从插件文件夹加载模板文件,我在函数文件中执行了以下操作:

function get_custom_post_type_single_template($single_template) {
    global $post;

    if ($post->post_type == \'project\') {
        $single_template = dirname( __FILE__ ) . \'/templates/single-project.php\';
    }
    return $single_template;
}

function get_custom_post_type_archive_template($archive_template) {
    global $post;

    if ($post->post_type == \'project\') {
        $archive_template = dirname( __FILE__ ) . \'/templates/archive-project.php\';
    }
    return $archive_template;
}

function get_custom_post_type_category_template($category_template) {
    global $post;

    if ($post->post_type == \'project\') {
        $category_template = dirname( __FILE__ ) . \'/templates/category-project.php\';
    }
    return $category_template;
}

add_filter( \'single_template\', \'get_custom_post_type_single_template\' );
add_filter( \'archive_template\', \'get_custom_post_type_archive_template\' );
add_filter( \'category_template\', \'get_custom_post_type_category_template\' );
由于它对单个模板文件工作良好,我不明白为什么我在使它适用于类别(甚至归档)页面时遇到问题。。。类别不是自定义分类法,它是默认分类法(如果我是正确的….)Wordpress类别,标签相同。。。

它们是在项目CPT中添加的,同时在插件的功能文件中注册新的帖子类型,如下所示:

        \'taxonomies\' => array( \'post_tag\', \'category\' ),
他们是“经典”对吧?

好我的主要导航是显示这些类别(我有3个,前端,设计,应用程序…)。当点击这些链接中的任何一个,重定向到像“根/类别/帖子名/”这样的URL时,会加载404模板,而不是插件文件夹中的类别模板,也不是主题文件夹中的类别模板,也不是存档。。。等等。只有404模板。

我的永久链接很丰富,我尝试了我在网上找到的所有帖子,但没有任何变化,仍然不起作用。。。

我希望你们能理解我的英语,并能提供帮助,随时提出任何问题,谢谢你们抽出时间。

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

多亏了@shanebp,我找到了问题的答案。

注册CPT时,默认情况下的分类“category”和“tag”与常规帖子中的分类相同。这意味着显示类别相关项目所需的模板只是常规的category.php. 因此,我的错误是category-project.php (好像它在一些网站上做过广告)。

要使类别仅来自特定CPT,需要创建自定义分类法。创建自定义分类后taxonomy-yourtaxonomyslug.php应该工作正常,或者taxonomy-yourtaxonomyslug-thespecificterm.php对于分类学的特定术语。

SO网友:shanebp

当点击这些链接中的任何一个,重定向到“root/category/post name/”这样的URL时,就会加载404模板,

如果删除category_template 过滤器,链接仍然是404吗?

对于类别,您的cpt帖子应显示在该类别的帖子列表中。所以url是root/category/.

当单击这些cpt链接时,应加载单个模板,url将为root/project/post-name/

结束