php 向自定义帖子类型分类添加自定义模板

wrrgggsh  于 2023-01-16  发布在  PHP
关注(0)|答案(2)|浏览(163)

我创建了一个自定义的文章类型,它有一些类别在它。我创建了用户前端专业的CPT类别的形式。
我正在寻找一个解决方案,分配自定义模板的记录,以显示他们在网站上。假设我有一个名为Project的CPT,项目帖子类型有两个类别;“业务”和“想法”用户可以发布他们的条目与表格到这些类别和他们的职位下列出的帐户 Jmeter 板。
问题是;业务类别应该使用category-business.php自定义模板显示,同样,Ideas类别应该使用category-ideas.php显示。
如何将自定义模板添加到CPT类别?
附注:我尝试了模板层次结构的解决方案,是在WP文档,但它不工作。因为有一个自定义的内容查看功能。我寻找一个代码片段,添加模板页面属性到自定义帖子自动,如果可能的话。

5uzkadbs

5uzkadbs1#

假设你只是使用默认的WordPress类别,你可以pre_get_posts挂钩包括项目作为类别页面的一部分,如果他们没有显示默认

function include_project_to_cat_pages( $query ) {
        if ( $query->is_category() && $query->is_main_query() ) {
            $query->set( 'post_type', array( 'post', 'project' ) );
        }
    }
    add_action( 'pre_get_posts', 'include_project_to_cat_pages' );
snz8szmq

snz8szmq2#

我用过滤器解决了这个问题。

add_filter( 'single_template', function( $template ) {
global $post;
$cat = get_the_category()[0];
if ( $post->post_type === 'project' && $cat->slug === 'business') {
    $locate_template = locate_template( "custom-business-template.php" );
    if ( ! empty( $locate_template ) ) {
        $template = $locate_template;
    }
}
return $template;
} );

感谢所有的贡献者和社区。

相关问题