作为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();
?>
如果有人能够澄清这件事,那将会非常有帮助。
非常感谢。
克雷格
答案 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,它应该可以输出一个或多个帖子。
希望这有帮助!