没有为单个帖子加载index.php

时间:2015-10-18 作者:1.21 gigawatts

我在索引顶部使用以下代码。我的主题中的php页面is_single() 即使在单个帖子上也要编码。

if ( have_posts() ) {

    echo "****************we have posts";

    if ( is_single() ) {
        echo "******************It\'s single";
    }

    while ( have_posts() ) {
        the_post();
            echo "<br >******************after the_post(): " . $post->ID;

        if ( is_single() ) {
            echo "******************It\'s single";
            //$myHTML = get_post_meta($post->ID, \'html\', true);

            if (false && $myHTML) {
                echo $myHTML;
                die();
            }
            else {
                //
            }
        }
    }
}
else {
    echo "******************we have no posts";
}

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

您的问题和答案可以归结为模板层次结构及其工作原理,了解这里的基本知识非常有用。

由于我需要写一篇短篇小说,所以我不打算详细介绍,但以下是基本内容:

Wordpress使用非常严格的层次结构在特定页面请求上加载模板。此层次结构称为template hierarchy 你会的have to 按照自己的节奏完成。此层次结构保持不变,并且永远不会更改,除非核心开发人员在较新版本中对其进行更改(如在4.3和4.4版本中引入一些新的额外模板),或者通过模板过滤器进行更改。

Wordpress的编码方式是,您需要在其上显示任何页面的唯一模板是index.php. 此模板是任何页面请求的最终回退模板,是任何给定层次结构中最低的模板。这很可能永远不会改变。

如果找到,将首先加载层次结构中最高的模板,否则将加载层次结构中较低的第一个可用模板。如果没有找到特殊模板,Wordpress将始终加载index.php. 但是,可以通过提供的特定模板过滤器使用任何其他自定义模板来代替这些模板

特定层次结构中的任何其他模板,除了index.php这是一个必备的模板),是最好的模板。它们只是为了方便而存在,并且它们的使用是可选的。这些模板仅用于通过特殊功能或CSS和/或JS效果为特定页面请求在站点前端创建特定的外观。

要全面考虑所有问题,让我们看看您的具体情况。让我们看看template hierarchy for single posts

单篇文章模板文件用于渲染单篇文章。WordPress使用以下路径:

  1. single-{post-type}-{slug}.php – (从4.4开始)首先,WordPress为特定帖子寻找模板。例如,如果post type是product,post slug是dmc-12,WordPress将查找single-product-dmc-12。php。

  2. single-{post-type}.php – 如果帖子类型是product,WordPress将查找单个产品。php。

  3. single.php – 然后WordPress返回到single。php。

  4. singular.php – 然后回到单数。php。

  5. index.php – 最后,如上所述,WordPress最终会回到索引。php。

    如您所见,在上述层次结构中,single.php 排名模板高于index.php, 从那以后single.php 存在于主题中,Wordpress将始终加载single.php, 而且永远不会index.php甚至singular.php)的单个贴子页(),除非此行为通过single_template 过滤器)。

SO网友:1.21 gigawatts

它似乎没有命中该代码,因为它正在重定向到single.php. 我的另一个主题中没有这个,所以它在那里工作。

我必须删除single.php 因此,逻辑工作流将在那里工作,或者将我的代码移动到single.php.

相关推荐

Themes VS Plugins

如果我正在定制WordPress网站,我应该通过主题或插件来完成吗?所谓定制,我的意思是:添加新的自定义帖子类型,为用户添加新字段,但我想确认这是否是正确的方法。谢谢