Intereting Posts
Автоматическое изменение размера при записи с помощью редактора пользовательских сообщений WP Почему вызов dynamic_sidebar () помещается в тег ul? можем ли мы предоставить пользователю логин в 2 установках wordpress в 2 поддоменах на одном сервере? Как безопасно и удаленно Создавать нового пользователя в WordPress с помощью Rest API Код доступа / пароль ограничивает доступ к странице, без регистрации пользователя ..? Перемещение моего недавно созданного сайта из подкаталога Крючки не удаляются в дочерней теме Синтаксис dbDelta ALTER TABLE? Многие медленные запросы post_type = 'attachment'; WordPress удаляет пользовательские сообщения, а не удаляет их Как удалить изображение заголовка в теме Twenty Eleven? Как использовать post_updated hook до и после аргументов wp-cli отображает сообщения php при ошибках отображения Как очистить загруженное имя файла из плагина? Тема Child активируется, но ничего не отображается в родительских темах (MAMP, Multisite)

Удаление некоторых страниц из поиска

На моем сайте я хочу, чтобы некоторые страницы не были запрошены поисковой формой (поэтому они не появляются, когда у меня есть что-то вроде www.ex.com/?s=banana)

Есть ли способ «Удалить» страницы со страницы результатов поиска (без слепо сделать условие if is_page (id), display: none)

Solutions Collecting From Web of "Удаление некоторых страниц из поиска"

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

Вы должны создать новый WP_Query внутри вашего search.php и использовать текущие $ query_args, а затем добавить в свой 'post__not_in'.

Если вы хотите сделать его более динамичным, вы также можете создать некоторую мета-запись, где вы могли бы выполнить мета-запрос и исключить все, у кого есть «исключить». (найдите «register_meta_box_cb» в register_post_type ).

Например,

add_action('pre_get_posts','wpse67626_exclude_posts_from_search'); function wpse67626_exclude_posts_from_search( $query ){ if( $query->is_main_query() && is_search() ){ //Exclude posts by ID $post_ids = array(7,19,21); $query->set('post__not_in', $post_ids); } } 

Чтобы исключить все страницы из результатов поиска (т. Е. Без необходимости вручную указывать идентификаторы страниц), просто измените функцию @ EricHolmes следующим образом:

 add_action( 'pre_get_posts', 'wpse67626_exclude_posts_from_search' ); function wpse67626_exclude_posts_from_search( $query ) { if ( $query->is_main_query() && $query->is_search() ) { // Get an array of all page IDs with `get_all_page_ids()` function $query->set( 'post__not_in', get_all_page_ids() ); } }