Что означает ignore_sticky_posts?
Многие думают, что ignore_sticky_posts в соответствии с переводом означает «исключить прикрепленные посты» из цикла. Но на самом деле значение этого параметра совсем другое.
Вы должны читать аргумент 'ignore_sticky_posts' => 1
следующим образом:
- Если
ignore_sticky_posts
установлено значениеtrue
или1
, WordPress будет игнорировать процедуру установки прикрепленных постов в вашем кастомном цикле. - То есть sticky посты будут идти в общем цикле и не будут выводиться первыми.
Что делает WordPress, если ignore_sticky_posts не задан?
Чтобы четко понимать, что 'ignore_sticky_posts' => 1
делает, вам нужно понимать, что делает WordPress, когда ignore_sticky_posts
аргумент не установлен или установлен на false
или 0
(по умолчанию):
- Если в цикле есть прикрепленные записи, WordPress поместит их в начало результата цикла.
- Если в цикле нет прикрепленных записей, то WordPress получит все прикрепленные записи из базы данных и установит их в начало цикла.
Поэтому, когда аргумент установлен как 'ignore_sticky_posts' => 1
, WordPress просто игнорирует описанную выше процедуру , вот и все. Это не исключает их специально. Для этого вам нужно установить post__not_in
аргумент.
Пояснение к примеру кодекса:
А теперь перейдем к примеру из кодекса. Выводим стики пост:
$args = array(
'posts_per_page' => 1,
'post__in' => get_option( 'sticky_posts' ),
'ignore_sticky_posts' => 1
);
$query = new WP_Query( $args );
Здесь параметр 'ignore_sticky_posts' => 1
нацелен только на эффективность, не более того . Можно даже его не указывать, вы получите тот же ожидаемый результат:
$args = array(
'posts_per_page' => 1,
'post__in' => get_option( 'sticky_posts' )
);
$query = new WP_Query( $args );
Однако в этом случае, поскольку 'ignore_sticky_posts' => 1
аргумент не установлен, WordPress без необходимости будет выполнять всю эту процедуру по установке прикрепленных сообщений в начало результатов, даже если все эти результаты (из этого примера) являются только прикрепленными сообщениями.
Чтобы в цикле не выводились sticky посты, нужно использовать такие параметры:
$args = array(
'posts_per_page' => -1, // show all posts
'post__not_in'=>get_option('sticky_posts') // without sticky posts
);
$query = new WP_Query( $args );
Если вы замечали, то Contact Form 7 самостоятельно добавляет теги <p> и <br> в своих…
Задача — настроить ЧПУ, чтобы вместо post_id использовался postname. Проблема — после изменения настроек постоянных…
По умолчанию WordPress не включает пользовательские типы записей в результаты поиска. Из-за этого вам нужно самостоятельно…
По умолчанию WordPress не включает кастомные типы записей в архивы категорий и тегов. Из-за этого вам…