有关如何使用single.php WordPress文件的一些信息?

时间:2014-02-12 16:50:35

标签: php wordpress-theming wordpress

我是WordPress主题开发的新手,我对显示单个帖子的 single-php 文件有些怀疑。

我从 index.php 文件开始创建了 single.php 文件:

                                                Testo Introduttivo                                      简介文字                 

                          

<!-- SEZIONE IN CUI VENGONO VISUALIZZATI I POST DEL BLOG: -->
<section id="blog-posts">

    <header class="header-sezione">

        <?php
            // Start the Loop.
            while ( have_posts() ) : the_post();

                /*
                 * Include the post format-specific template for the content. If you want to
                 * use this in a child theme, then include a file called called content-___.php
                 * (where ___ is the post format) and that will be used instead.
                 */
                get_template_part( 'content', get_post_format() );

                // Previous/next post navigation.
                //twentyfourteen_post_nav();

                // If comments are open or we have at least one comment, load up the comment template.
                if ( comments_open() || get_comments_number() ) {
                    comments_template();
                }
            endwhile;
        ?>
    </header>

    <!-- Qui viene visualizzato il singolo articolo -->

</section>

<section id="partnerSlide">
    <header class="header-sezione">
        <h2>Partner e Sostenitori</h2>
    </header>

    <div class="row">
        <?php
        // 'My_Widgtet_Area' area, where the id is called:
        if (is_active_sidebar('partner-slide')) : ?>

        <div id="widget-sidebar">
            <ul>
                <?php dynamic_sidebar('partner-slide'); ?>
            </ul>
        </div><!-- #widget-sidebar .widget-area -->

        <?php endif; ?>
    </div>
</section>

所以我采用了 index.php 文件,删除了我不希望在后期可视化中显示的所有内容(所以我只保留了的骨架index.php 文件主题)

然后我添加此代码以显示我的帖子:

        <?php
            // Start the Loop.
            while ( have_posts() ) : the_post();

                /*
                 * Include the post format-specific template for the content. If you want to
                 * use this in a child theme, then include a file called called content-___.php
                 * (where ___ is the post format) and that will be used instead.
                 */
                get_template_part( 'content', get_post_format() );

                // Previous/next post navigation.
                //twentyfourteen_post_nav();

                // If comments are open or we have at least one comment, load up the comment template.
                if ( comments_open() || get_comments_number() ) {
                    comments_template();
                }
            endwhile;
        ?>

它工作正常,但我有一些问题要理解前面的代码到底做了什么:

我知道通过这一行,我在The Loop上引用了我点击的帖子(要显示的帖子):

while ( have_posts() ) : the_post();

我无法理解的是执行此操作时的确切行为:

get_template_part( 'content', get_post_format() );

阅读文档(http://codex.wordpress.org/Function_Reference/get_template_part),在我看来,它理解它将预定义的模板加载到我的主题中(就像我的主题中的代码片段一样)

我认为这会把打印我帖子的代码放在页面上(标题下面是作者姓名和发布文本下面的日期,最后是类别和添加评论链接)

在实践中,我是否将 content.php 文件放在我声明上一个代码的位置?

TNX

安德烈

是真的吗?

1 个答案:

答案 0 :(得分:1)

安德烈,

你是对的。这相当于“包含”。

要打破这个

get_template_part( 'content', get_post_format() );

get_template_part   // is calling a function to locate the template partial aka include

'content'    // this is the base slug. 
     //  Think of it like a root word as opposed to a suffix.

get_post_format()    //  is saying get the particular content "partial" or "include"

这是做什么的? 假设您正在使用“视频”格式的帖子(当您创建帖子时,您知道在右侧,您可以选择“帖子格式” - )

标准 音频 在旁边 聊 画廊 图片 链接 引用 状态 视频

好的,我们假设你已经点击了“视频”的单选按钮。所以这篇文章包含一个视频。

现在,回到你的get_template_part ...... 对于名为“content-video.php”的文件,这将首先显示 如果您还没有创建一个,那么它将回退到默认文件“content.php”

这就是为什么你在get_template_part中有第二项。 因为它会在缺少特定模板的情况下为您提供一种“后备”,然后它可以查找“默认”模板。

它将查找文件的顺序是

如果您使用的是儿童主题 - 它将首先显示在您的子主题文件夹/目录中 内容video.php content.php

然后,如果无法找到它,它将查找父主题文件夹中的文件 内容video.php content.php

您使用的是儿童主题吗?&gt;?&gt;

你可以在任何地方使用它的额外美感...... 甚至有条件地包括它。

例如,如果您想要包含针对电子新闻注册的要约,但仅当有人正在阅读特定类别的帖子时...您可以执行以下操作...

if (in_category( '327' )){
    get_template_part('partials/enewssignup');
}

这将引用位于/ partials文件夹中的文件enewssignup.php。