The Loop in Static Page

时间:2014-07-04 作者:user3131837

我对环路有一些问题。我以“Twenty14”主题为例。我正在使用基本循环创建2个php文件。一个是家。其中一个是名为示例页的模板页。php。两者都包含此代码;

if( have_posts() ) :
    while( have_posts() ) : the_post();
        the_content;
    endwhile;
endif;
没什么特别的,唯一的区别是我在示例页面上有模板声明。php

/**
 * Template Name: Sample Page
 */
根据WordPress Codex,当你将一个“博客”设置为静态首页时,它就是一个主页。php用作模板(如果存在)。“静态首页”将使用自定义页面模板,如果它存在,在我的示例中,它将使用示例页面。php。下面是我的问题;

为什么相同的php文件会产生不同的结果?在我的示例中,“sample page.php”将显示“页面内容”,而“home.php”将显示“最近的帖子”为什么需要“while”循环,如果我们只想显示“页面内容”?我们就不能用

if( have_posts() ) :
    the_post();
    the_content();
endif;
如果我们想在模板页面中显示“最近的帖子”。为什么我们需要先提供一些查询

当做

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

这是一个相当宽泛的问题。我不会在这里详细介绍核心代码,您需要阅读我将提供的链接。我会尽量保持我的回答甜美、简短和有用:-)

以捆绑主题Twenty14为例,当您打开任何页面模板时,都会发现这段代码

if( have_posts() ) :
    while( have_posts() ) : the_post();
    <----loop elements---->
    endwhile;
endif;
这是您的循环,它基本上显示spesific模板上主循环的查询信息。这就是循环所做的一切,它显示主查询(或自定义查询,如果有)检索到的内容。

在何处显示内容由Template Hierarchy. Wordpress严重依赖于这种层次结构。如果您了解了主查询的工作原理,请阅读Query Overview) 您将看到,主查询使用此模板层次结构来决定要使用哪个模板以及要从数据库中检索哪些信息,这就是为什么信息会因类别而异的原因。php和作者。php,尽管你的循环和你说的完全一样

根据你的问题

为什么相同的php文件会产生不同的结果?在我的示例中,“sample page.php”将显示“页面内容”,而“home.php”将显示“最近的帖子”

上述信息基本上涵盖了这一部分,以及主要查询使用的post_type=page 当它对页面模板进行查询时,以及post_type=post 在主页上。php,这是最大的区别之一

如果我们只想显示“页面内容”,为什么需要“while”循环

这个while() 页面模板上不需要循环。您将只有一篇文章要显示。

如果我们想在模板页面中显示“最近的帖子”。为什么我们需要先提供一些查询?

默认情况下,主查询查询post_type=page 对于页面模板,不是post-type=post. 这就是为什么默认情况下,您不能在页面上显示“最近的帖子”。为此,您需要使用运行自定义查询WP_Query 或者使用pre_get_posts

EDIT

你也可以去看看my answer 欲了解更多信息

SO网友:TBI Infotech

要在静态模板字段中显示数据,需要使用参数运行WP\\u Query

那么代码将如下所示

<?php
$args = array(\'post_type\'=>\'post\');
// The Query
$the_query = new WP_Query( $args );

// The Loop
if ( $the_query->have_posts() ) {
    echo \'<ul>\';
    while ( $the_query->have_posts() ) {
        $the_query->the_post();
        echo \'<li>\' . get_the_title() . \'</li>\';
    }
    echo \'</ul>\';
} else {
    // no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
?>

SO网友:Rarst

为什么相同的php文件会产生不同的结果?在我的示例中,“sample page.php”将显示“页面内容”,而“home.php”将显示“最近的帖子”

因为首页上有两种不同的内容,这取决于您如何配置它-博客帖子列表或首页(帖子列表显示在其他地方,与设置中的其余配置一致)。

如果我们只想显示“页面内容”,为什么需要“while”循环?我们就不能用

是的,那就行了。while 当两种模板中可能使用相同的模板或模板部分时,使用循环。或者有人只是复制/粘贴它。

如果我们想在模板页面中显示“最近的帖子”。为什么我们需要先提供一些查询?

不清楚你在问什么。通常,WordPress中的任何内容都会在主循环中显示来自主查询的帖子。要更改这些帖子,需要调整主查询(通过pre_get_posts 例如挂钩)。要显示更多的其他帖子,必须运行额外的查询。

结束

相关推荐

AJAX in wordpress theme loop

我正试图就我的主题提出一个AJAX请求。我已经知道wordpress很好地处理AJAX,但不能直接处理主题文件。它使用管理ajax。php用于此。我在这方面工作了很长时间,真的不知道该把代码放在哪里。我知道需要将信息放在管理ajax中。php,函数。并且必须指定用户是否未登录。有人能帮我写代码吗?HTML:<article class=\"delivery-individual\"> <!-- # CONTENT HERE --> </arti