我正在为WordPress网站开发一个小功能,无法弄清楚为什么我的功能会在网页上回显数据。
我的功能是:
function get_post_titles($args) {
$titles = array();
$posts = new WP_Query($args);
while ($posts->have_posts()){
$posts->the_post();
$titles[] = the_title();
}
return $titles;
}
我在一个单独的.php
文件中称呼它:
<?php
$titles = get_post_titles($args);
?>
<select>
<option selected="selected">Choose an Article</option>
<?php
foreach($titles as $title){
?> <option> $title </option><?php //this isn't working, pls ignore for this post
}
?>
</select>
...
结果是一个带有“选择”框的页面(是!),但是由于某种原因,该页面还显示一行中的所有标题(它输出完整的数组)。
我希望如果我说echo get_post_titles($args)
,但是我在代码中没有要求我向echo
求助。为什么我的阵列可见?
我认为是因为我的$titles = get_post...
行。但是,为什么它显示$titles
而不是简单地声明/分配变量?
(我知道有一个WordPress SE网站,但是我认为这比WP问题更直接是PHP问题。但是,如果我应该在那发布,请告诉我)。 >
答案 0 :(得分:2)
the_title()
显示标题。您应该改用get_the_title()
。
答案 1 :(得分:2)
从Wordpress Documentation开始,下面是the_title
的用法:
the_title( $before, $after, $echo );
$ echo (布尔值)(可选)显示标题(真)或将其返回以用于PHP(FALSE)。
默认值:TRUE
您可以执行以下操作(将第三个参数设置为false
)
$titles[] = the_title('','',false);