应该在哪里结束;'和' endif;'条款被放置?

时间:2016-12-11 21:12:26

标签: php wordpress

作为php编码的相对新手,我目前依靠YouTube教程,帮助我从头开始创建WordPress主题。

我已经到了这一点,我想使用php在页面内容下插入博客文章。在YouTube教程之后,我创建了以下代码:

<?php       
    $lastBlog = new WP_Query('type=post&posts_per_page=1&category_name=news');

        if ( $lastBlog->have_posts() ):
            while( $lastBlog->have_posts() ): $lastBlog->the_post(); 
    ?>
        <?php get_template_part('content/content',get_post_format()); 
        ?>

    <?php 
            endwhile;
        endif;                  
    wp_reset_postdata();
    ?>

以上代码是否正确?我不是百分之百,因为我的逻辑思维方式告诉我,“#end ;;&#39;和&#39; endif;&#39;陈述应放在:

之间
        while( $lastBlog->have_posts() ): $lastBlog->the_post();
    ?>

如果有人能够澄清这件事,那将会非常有帮助。

非常感谢。

克雷格

1 个答案:

答案 0 :(得分:1)

在PHP中,没有规则或惯例必须结束陈述,例如&#39; endwhile;&#39;,&#39; endif;&#39;同一组PHP标签中的等等。

如果您只在相关语句中包含PHP(如果,等等),则可能所有这些都可以放在一组PHP标记中,而不是例如&#39; endwhile;&#39 ;和&#39; endif;&#39;陈述在一个单独的集合中。在这种情况下,您的代码不会显式包含HTML或任何标记,因此它也可以在一组PHP标记中编写,如下所示:

<?php       
    $lastBlog = new WP_Query('type=post&posts_per_page=1&category_name=news');

    if ( $lastBlog->have_posts() ) {
        while( $lastBlog->have_posts() ) {

            $lastBlog->the_post(); 

            // Added 'echo' to output the content
            echo get_template_part('content/content',get_post_format()); 

        } // End of 'while' statement
    } // End of 'if' statement

    wp_reset_postdata();
?>

虽然您的代码的当前状态可以像这样编写,但它完全没有问题,并且您拥有的当前结构允许您在需要时明确添加HTML。:

<?php       
    $lastBlog = new WP_Query('type=post&posts_per_page=1&category_name=news');

    if ( $lastBlog->have_posts() ):
        while( $lastBlog->have_posts() ): $lastBlog->the_post(); 
?>

<?php get_template_part('content/content',get_post_format()); ?>

<p>HTML EXAMPLE - THIS WOULD APPEAR FOR EACH POST IN THE WHILE LOOP</p>

<?php 
        endwhile;
    endif;                  
    wp_reset_postdata();
?>

上面的示例只是演示了在代码中的不同PHP代码块中明确地使用HTML。我知道&#39; get_template_part&#39;调用代码实际上负责HTML输出。

总而言之,您的代码和语句都很好。如果你确实移动了那么结果;&#39;和&#39; endif;&#39;陈述到你的逻辑思维模式告诉你的地方,这意味着&#39; get_template_part&#39;电话会在&#39;之外和&#39;而&#39;声明。虽然这可能不会改变您当前页面的工作方式(因为您只输出一个帖子),但如果您决定要在此处输出更多帖子,则代码将无法作为&#39; get_template_part&#39;方法只会被调用一次(而不是每个帖子),因为它在&#39;之外。环。保持代码结构的原样,如果您更改了WP_Query,它应该可以输出一个或多个帖子。

希望这有帮助!