特定帖子ID的模板

时间:2021-02-09 作者:lucrece

我想知道有没有可能这样做

single-post-45.php
我需要的职位(45)只有一个自定义模板。

我知道我们可以通过佩奇做到这一点,就像这样

page-45.php
或者通过模板文件template-test.php

但是我找不到用简单的帖子是否可以做到这一点(按照wordpress的层次结构,我认为这是不可能的)

https://www.lafabriquedunet.fr/wp-content/uploads/2018/02/templates-wordpress-hierarchie.jpg

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

必须遵循此文件名结构:

single-{post-type}-{slug}.php
如果你有帖子名;“你好,世界”;post的slug是hello-world 然后模板名称将为single-post-hello-world.php

Update:

模板名称中没有使用id的默认方法。但你可以试试这个剪下来的:

<?php
add_filter( \'single_template\', \'load_post_template_by_id\' );
 
function load_post_template_by_id( $single_template ) {
    global $post;
 
    if ( \'post\' === $post->post_type) {
        $tmp_template = dirname( __FILE__ ) . \'/single-post-\'.$post->ID.\'.php\';

        if ( file_exists( $tmp_template ) ) {
            $single_template = $tmp_template;
        }
    }
 
    return $single_template;
}
在这里,我将以一种巧妙的方式覆盖帖子模板。现在如果你有一个id为的帖子42 您有一个名为single-post-42.php 然后应自动加载。

我没有测试代码。因此,使用它的风险自负

相关推荐

如何忽略Pre_Get_Posts中的帖子?

我正在使用pre_get_posts 并寻找在主查询中排除帖子的方法。我正在使用query_vars 从特定类别查询帖子,并寻找在主查询中排除这些帖子的解决方案。我的代码:// function to setup query_vars function ctrl_dly_podcast( $query_vars ){ $query_vars[] = \'ctrl_podcasts_status\'; return $query_vars; } add_fil