我想从WordPress DB获取数据,将它们推入数组并将数据传递给JS。
除了将数据推送到foreach ($posts as $post)
中的数组外,完成所有工作。
完整方法:
$array = array();
$category_name = "locations";
$args = array(
'numberposts' => -1,
'category_name' => $category_name
);
$posts = get_posts($args);
foreach ($posts as $post){
array_push( $array, array(
"title" => the_title($post->ID),
"cnt" => the_content($post->ID),
"id" => the_ID($post->ID),
"link" => the_permalink($post->ID)
));
}
当我print_r($array)
时,我得到了以下混音:
Post 39http://localhost:8080/testing/post-3/Post 27http://localhost:8080/testing/post-2/Post 15http://localhost:8080/testing/post-1/Array
(
[0] => Array
(
[title] =>
[cnt] =>
[id] =>
[link] =>
)
[1] => Array
(
[title] =>
[cnt] =>
[id] =>
[link] =>
)
[2] => Array
(
[title] =>
[cnt] =>
[id] =>
[link] =>
)
)
发生了什么事?为什么数据没有正确放入数组?
任何建议都非常赞赏。
答案 0 :(得分:1)
这些函数(the_title,the_content等)不返回值,它们echo
输出。他们也不接受ID论证。您需要使用get_the_title
,get_the_content
等返回字符串的版本。
答案 1 :(得分:1)
这些模板标签需要将其echo变量设置为false才能在该上下文中工作。他们也不会将帖子ID作为变量,如果设置了postdata,他们会假设当前帖子。尝试:
the_title('','',false)
https://codex.wordpress.org/Function_Reference/the_title
这个问题的最整洁的解决方案实际上是直接解决wp $post
对象。因此,对于标题字符串$post->post_title
和内容$post->post_content
此处列出$post
对象中可用的字段:
http://codex.wordpress.org/Function_Reference/get_post#Return