Есть ли способ «проверить», есть ли 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 лучше меня ?! : /
Благодарю. Мартин.
Липкий пост сохраняется как опция, которую вы можете проверить с помощью $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);
К сожалению, нет, но, вероятно, есть другой способ добиться того, чего вы хотите.
Вы можете просто взять последний прикрепленный пост и показать его первым, а затем, во втором запросе, получить остальные посты (или, в любом случае, следующие 3).
Таким образом, вы получите 1 наклейку (если она существует) и 3 нормальных на страницу.
Мы не знаем вашу конечную цель здесь, так что это может быть непригодным для вас.