PHP函数正在回显-但我只要求返回

时间:2018-10-03 17:10:16

标签: php wordpress

我正在为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问题。但是,如果我应该在那发布,请告诉我)。

2 个答案:

答案 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);