Повторение постов WordPress внутри одного цикла до тех пор, пока оно не наберет определенное количество постов. - PullRequest
1 голос
/ 27 августа 2010

Взгляните на этот потрясающий код от Джона П. Блоха. Что делает этот код:

Выглядит, сколько сообщений будет отображаться по умолчанию. Если он меньше 20, он получает разницу (в данном случае он должен получить 10 сообщений) и добавляет их к текущему запросу. Затем он рекурсивно просматривает себя, чтобы увидеть, не все ли еще под 20 постами. Если это так, он продолжает работать до тех пор, пока не наберет не менее 20 сообщений.

function my_awesome_post_booster(){
      if(!is_home())
        return;
      global $wp_query;
      if( $wp_query->post_count < 20 ){
        $how_many = 20 - $wp_query->post_count;
        $newposts = get_posts('numberposts='.$how_many);
        $wp_query->posts = array_merge( $wp_query->posts, $newposts );
        $wp_query->post_count += count($newposts);
        my_awesome_post_booster();
      }
    }

    add_action('template_redirect', 'my_awesome_post_booster');

Проблема в том, что она не повторяется сама по себе, она не продолжается.

Допустим, у меня есть 5 сообщений, код должен повторять их 4 раза, пока не достигнет 20. Но это не так.

Есть идеи, почему? Ty

P.S. вот моя идея, хотя вы не знаете, как это сделать в php.

Допустим, у меня 5 постов.

$wp_query->post_count will be 5

$how_many = 20 - $wp_query->post_count; will be 15

$newposts = get_posts('numberposts='.$how_many); - will try to get 15 posts, but it can't, cause the blog only has 5!

The scrip thinks he pulled 15, even tho he didn't.

Идея состоит в том, чтобы разделить $ how_many на фактическое количество сообщений, равное 5, но получить четное число .... Например:

$how_many = 20 - $wp_query->post_count; will be 15
divide $how_many with $wp_query->post_count;
make sure it's an even number, lets say 3,33, makes it 3... 
 $newposts = get_posts('numberposts='.$that_numer);

Что ты думаешь? :) Могу ли я положить это в php?

1 Ответ

0 голосов
/ 09 февраля 2011

Функция вызывает себя снова и снова, но не имеет возврата по умолчанию!Это может не вызывать ваших проблем здесь, но это, безусловно, вызовет утечки памяти, если его использовать слишком много!Я бы посоветовал добавить возвращаемое значение true в самый низ функции, иначе каждый экземпляр останется в памяти, когда он не должен

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