我目前正在尝试调整Wordpress的Content SlideShow插件,以使其与WPML(Multilingual-Plugin)兼容。为此,我只需要从特定类别中获取帖子,将它们放入数组并返回该数组。 WP_Query让我很难做到这一点,因为它似乎是在循环中无限次获取最新帖子。我没有写Wordpress插件的经验,所以我会感谢你能给我的任何暗示。
这是我试图调整的插件类方法的代码。
function get_valid_posts(){
$validPosts = array();
$this_post = array();
$id_pot = array();
$my_query = new WP_Query('cat=15&showposts=10');
if($my_query->have_posts()) {
while ($my_query->have_posts()) :
$post = $my_query->post;
if(!in_array($post->ID, $id_pot)){
$this_post['id'] = $post->ID;
$this_post['post_content'] = $post->post_content;
$this_post['post_title'] = $post->post_title;
$this_post['guid'] = $post->guid;
array_push($id_pot, $post->ID);
array_push($validPosts, $this_post);
}
endwhile;
}
return $validPosts;
}
请注意,我添加了$ id_pot数组以过滤重复的条目,但如果查询/循环可行,则不需要这样做。
提前致谢!
答案 0 :(得分:3)
我设法解决了这个问题:
function get_valid_posts(){
$validPosts = array();
$this_post = array();
$id_pot = array();
$i = 0;
$my_query = new WP_Query('category_name=gallery-post&showposts=10');
if($my_query->have_posts()) {
while($i < $my_query->post_count) :
$post = $my_query->posts;
if(!in_array($post[$i]->ID, $id_pot)){
$this_post['id'] = $post[$i]->ID;
$this_post['post_content'] = $post[$i]->post_content;
$this_post['post_title'] = $post[$i]->post_title;
$this_post['guid'] = $post[$i]->guid;
$id_pot[] = $post[$i]->ID;
array_push($validPosts, $this_post);
}
$post = '';
$i++;
endwhile;
}
return $validPosts;
}
$ my_query-&gt; post返回特定帖子的数据。相反,我必须使用$ my_query-&gt; post * s *来获取一个数组,其中包含作为对象提取的所有帖子。
答案 1 :(得分:2)
您缺少对函数the_post();
的调用:
while ($my_query->have_posts()) :
$my_query->the_post();
$post = $my_query->post;
// ...
endwhile;