showposts VS posts_per_page.showposts работает отлично, но не рекомендуется! - PullRequest
0 голосов
/ 26 июля 2010

Я не могу заменить posts_per_page showposts, чтобы ограничить количество сообщений, возвращаемых в списке. Когда я использую showposts, результирующий список меню отображается правильно в соответствии с количеством постов, которые я указал в ограничителе showposts. Однако, когда я использую posts_per_page, номер ограничителя постов оказывается неактуальным. В результирующем списке отображаются все сообщения, превышающие количество ограничителей.

Примеры:

Это прекрасно работает:

$myrecentposts = get_posts(array('post_not_in' => get_option('sticky_posts'), 'cat' => "-$cat,-$catHidden",'showposts' => $cb2_recent_count));
foreach($myrecentposts as  $idxrecent=>$post) {

Однако, когда я подписываюсь на posts_per_page, это НЕ работает ...

$myrecentposts = get_posts(array('post_not_in' => get_option('sticky_posts'), 'cat' => "-$cat,-$catHidden",'posts_per_page' => $cb2_recent_count));
foreach($myrecentposts as  $idxrecent=>$post) {

* Я только пытаюсь заставить posts_per_page работать, потому что я понимаю, что showposts устарела.

Ответы [ 2 ]

5 голосов
/ 26 июля 2010

showposts является устаревшим. Однако posts_per_page предназначен для использования с query_posts() или, более конкретно, WP_Query::query().

numberposts - эквивалентный аргумент для get_posts().

ПРИМЕЧАНИЕ. Я удалил свой первоначальный ответ относительно неправильной обработки аргументов внутри get_posts().

posts_per_page не является допустимым аргументом для get_posts() по семантическим причинам, поскольку предлагает идею нумерации страниц , то, что get_posts() не поддерживает.

Для ясности и от имени комментария @ RichardM, вот тощий, который я изначально написал;


Дело в том, как get_posts() анализирует аргументы перед передачей их WP_Query.

Я сократил это до настоящих основ;

function get_posts($args = null)
{
    $defaults = array('numberposts' => 5);
    $r = wp_parse_args($args, $defaults);

    if (!empty($r['numberposts']))
        $r['posts_per_page'] = $r['numberposts'];

    $get_posts = new WP_Query;
    return $get_posts->query($r);
}

Посмотрите, как numberposts перезаписывает posts_per_page, не учитывая условие прохождения posts_per_page?

1 голос
/ 17 декабря 2010

Есть ошибка: http://core.trac.wordpress.org/ticket/15150 она исправлена ​​в 3.1

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