Intereting Posts
«Ошибка подключения к базе данных» после установки в корневом каталоге Apache VirtualHost .. Почему это произошло? Показать только текущую категорию Изменить URL-адрес категории продуктов, чтобы использовать slug, а не родительские категории в WooCommerce Как использовать функцию add_query_arg в теге шаблона, таком как previous_post_link? Пользовательская навигация с использованием wp_nav_menu и walker Связанный контент, основанный на названии категории Как добавить раскрывающееся меню страны в профиль пользователя? Перенос WordPress из Windows Server 2008 R2 (IIS v7.5) в CentOS Force pdf download не работает, когда включает blog-header.php Фильтр the_title, применяемый к пунктам меню Показывать публикацию авторов на одной странице только при входе в систему Японский контент на английской странице? Поддерживает ли WordPress историю URL-адресов почты и предоставляет автоматические переадресации? Как использовать update_post_meta внутри wp_trash_post перенаправления перенаправления тем

почему ignore_sticky_posts в липком почтовом запросе

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

Но почему на странице codex https://codex.wordpress.org/Sticky_Posts они используют ignore_sticky_posts при запросе липких сообщений?

$args = array( 'posts_per_page' => 1, 'post__in' => get_option( 'sticky_posts' ), 'ignore_sticky_posts' => 1 ); $query = new WP_Query( $args ); 

Это настолько запутанно и не имеет никакого смысла, вы хотите этого, и все же вы его исключаете?

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

– Нет, это предположение неверно.


Что означает ignore_sticky_posts :

Несмотря на то, что на естественном английском языке ignore_sticky_posts звучит так, как WordPress должен игнорировать все липкие сообщения из запроса, на самом деле это не то, что делает WordPress. Вместо этого вы должны прочитать 'ignore_sticky_posts' => 1 следующим образом:

Если для параметра ignore_sticky_posts установлено значение true или 1 , WordPress игнорирует процедуру установки липких сообщений в вашем пользовательском запросе.


Что делает WordPress, когда ignore_sticky_posts не установлен:

Чтобы четко понять, что делает 'ignore_sticky_posts' => 1 , вам нужно понять, что делает WordPress, если аргумент ignore_sticky_posts не установлен или он установлен на false или 0 (по умолчанию):

  1. Если в результатах запроса есть сообщения, которые являются частью сообщений о столбиках, WordPress вытолкнет их в начало результата запроса.

  2. Если какой-либо липкий пост отсутствует в результатах запроса, WordPress снова вернет все эти липкие сообщения из базы данных и вернет их в начало результата запроса.

Поэтому, когда аргумент задан как 'ignore_sticky_posts' => 1 , WordPress просто игнорирует описанную выше процедуру , вот и все. Это не исключает их конкретно. Для этого вам нужно установить аргумент post__not_in .


Объяснение примера codex:

Теперь перейдем к примеру из кода:

 $args = array( 'posts_per_page' => 1, 'post__in' => get_option( 'sticky_posts' ), 'ignore_sticky_posts' => 1 ); $query = new WP_Query( $args ); 

Здесь codex устанавливает только параметр '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 без необходимости выполнит всю эту процедуру установки липких сообщений в верхней части результатов, хотя все эти результаты (из этого примера) являются только липкими сообщения.


Лучший способ узнать что-то в WordPress – изучить основной код. Поэтому для более четкого понимания рассмотрим эту часть WordPress CODE .