Взгляните на этот потрясающий код от Джона П. Блоха. Что делает этот код:
Выглядит, сколько сообщений будет отображаться по умолчанию. Если он меньше 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?