WP_Query: как проверить липкие посты перед назначением posts_per_page?

Есть ли способ «проверить», есть ли Sticky Posts?
Если есть липкий пост, я хотел бы использовать 'posts_per_page' => '3' и если нет, используйте 4, поскольку я нахожу, что Sticky Posts добавляют к «сообщениям на странице», что нарушает макет 🙁

У меня есть WP_query следующим образом:

$article_args = array(
'post_type' => 'post',
'posts_per_page' => '3',
'post_status' => 'publish',
'order' => 'DESC'
);
$article_query = new WP_Query($article_args);

Это возможно, может быть, чтобы проверить это до args массив и использовать соответствующий номер?

Да я учел ignore_sticky_posts но я все еще хочу включить их.

Любой совет от кого-то, кто знает PHP лучше меня ?! : /

Благодарю. Мартин.

2

Решение

Липкий пост сохраняется как опция, которую вы можете проверить с помощью $sticky = get_option( 'sticky_posts' );, Это возвращает массив с идентификаторами постов. Вы можете просто проверить, является ли опция пустой или нет, а затем соответствующим образом изменить свои аргументы.

Вы можете сделать что-то вроде этого

$sticky = get_option( 'sticky_posts' );
if( $sticky ) {
$article_args = array(
'post_type' => 'post',
'posts_per_page' => '3',
'post_status' => 'publish',
'order' => 'DESC'
);
}else{
$article_args = array(
'post_type' => 'post',
'posts_per_page' => '4',
'post_status' => 'publish',
'order' => 'DESC'
);
}

$article_query = new WP_Query($article_args);
0

Другие решения

К сожалению, нет, но, вероятно, есть другой способ добиться того, чего вы хотите.

Вы можете просто взять последний прикрепленный пост и показать его первым, а затем, во втором запросе, получить остальные посты (или, в любом случае, следующие 3).

Таким образом, вы получите 1 наклейку (если она существует) и 3 нормальных на страницу.

Мы не знаем вашу конечную цель здесь, так что это может быть непригодным для вас.

0

По вопросам рекламы [email protected]