Использование WP_Query в плагине - PullRequest
0 голосов
/ 11 марта 2011

Я сейчас пытаюсь настроить плагин Content SlideShow для Wordpress, чтобы сделать его совместимым с 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 для фильтрации повторяющихся записей, но в этом нет необходимости, если бы запрос / цикл работал.

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 11 марта 2011

Мне удалось решить проблему:

    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-> post возвращает данные определенного сообщения.Вместо этого мне пришлось использовать $ my_query-> post * s *, чтобы получить массив со всеми сообщениями, извлеченными как объект.

2 голосов
/ 11 марта 2011

Вы пропустили вызов функции the_post();:

while ($my_query->have_posts()) : 
  $my_query->the_post();
  $post = $my_query->post;
  // ...
endwhile;

См. Цикл WordPress

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...