任何人都可以解释wordpress的“循环”吗?

时间:2014-02-11 13:05:35

标签: php wordpress

我被迫使用wordpress,如果你使用它,你可能知道我的意思:

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

它的工作,毫无疑问。但我不明白这实际意味着什么。它不是三元运算符,也不是我所知道的任何其他运算符。我从来没有在任何我工作的php项目中看到过这样的声明。所以我有几个问题:

  1. 这条线到底在做什么?我知道它会收到所有帖子,迭代它们......这是the_post()做什么的?这些双点在做什么?
  2. 这是Wordpress-Only还是可以在其他地方使用?
  3. 当前帖子存放在哪里?
  4. 我已经用Google搜索过了,但是没有关于我的问题的信息,似乎没有人对wordpress的工作方式感兴趣。我是,但我不明白。如果有人为我解释,那就太棒了。

5 个答案:

答案 0 :(得分:3)

<?php define('WP_USE_THEMES', false); get_header(); ?>

The loop starts here:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

and ends here:

<?php endwhile; else: ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>

This is using PHP's alternative syntax for control structures, and could also be expressed as:

<?php 
    if ( have_posts() ) {
        while ( have_posts() ) {
            the_post(); 
            //
            // Post Content here
            //
        } // end while
    } // end if
?>

答案 1 :(得分:3)

帖子()

此功能不接受任何参数。

返回值 此函数不返回任何值。

    <?php
while ( have_posts() ) : the_post();
    echo '<h2>';
    the_title();
    echo '</h2>';
    the_content();
endwhile;
?>

<强> have_posts() 参数 此功能不接受任何参数。

返回值 (布尔值) 成功时是真的,失败时是假的。 例子 以下示例可用于确定是否存在任何帖子,如果存在,则循环访问它们。

<?php
if ( have_posts() ) :
    while ( have_posts() ) : the_post();
        // Your loop code
    endwhile;
else :
    echo wpautop( 'Sorry, no posts were found' );
endif;
?>

请注意 在循环内调用此函数将导致无限循环。例如,请参阅以下代码:

<?php
while ( have_posts() ): the_post();
        // Display post
        if ( have_posts() ): // If this is the last post, the loop will start over
                // Do something if this isn't the last post
        endif;
endwhile;
?>

如果您想检查当前循环中是否有更多帖子没有这种不幸的副作用,您可以使用此功能。

function more_posts() {
  global $wp_query;
  return $wp_query->current_post + 1 < $wp_query->post_count;
}

答案 2 :(得分:2)

<强> 1。什么是LOOP

Loop是WordPress用来显示帖子的PHP代码。使用The Loop,WordPress处理每个帖子以显示在当前页面上,并根据它与The Loop标签中指定条件的匹配方式对其进行格式化。

它将获取与特定页面相关的数据

:(冒号)用于告诉条件/循环从这里开始。 您可以将其替换为{}(括号引号)

<?php 
    if ( have_posts() ) {
        while ( have_posts() ) {
            the_post(); 
            //
            // Post Content here
            //
        } // end while
    } // end if
?>

<强> 2。这是Wordpress还是可以在其他地方使用吗?

是的,你当然可以使用它。 您可以通过在wordpress目录的根目录中包含一个名为“wp-blog-header.php”的核心文件来访问完整的wordpress功能。

<?php 
/* Short and sweet */
define('WP_USE_THEMES', false);
require('./wp-blog-header.php');
?>

将此文件包含在外部文件的顶部,您也可以访问 wordpress数据库,wordpress函数,wordpress hooks

第3。当前帖子存储在哪里?

wordpress数据库中存在11个默认表。您可以在数据库中看到 wp_posts 表。所有帖子都存储在此表中。

假设,如果您要在帖子中创建元标记,则会存储在 wp_postmeta

答案 3 :(得分:1)

它只是一种替代语法:

if ( have_posts() ) {          //open if
  while ( have_posts() ) {     //start while loop
    the_post();                //call a function

请参阅http://php.net/manual/en/control-structures.alternative-syntax.php

它不是特定于wordpress的,可以在任何PHP代码中使用。

答案 4 :(得分:0)

可能与谁有关。

什么是 WordPress Loop?

当我们在 WordPress 中保存数据(帖子、页面、几乎所有内容)时,数据会在我们的数据库 fx 中保存为一行。 MySQL。

WordPress 动态查询数据库并找到与您所在页面相对应的行,然后提取该数据然后将其显示在该部分中。

由于这是一个动态查询并以重复方式执行,因此称为 WordPress 循环

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

这些双点在做什么?条件/循环从这里开始 :(colon) 并且是一个三元运算符。

我认为其他人已经回答了其他问题。