Как говорит моя практика, время от времени возникает необходимость найти запись по ID (идентификатору) в административной панели управления сайтом: в wp-admin в разделе «Все записи»?
Примеров, когда может возникнуть подобная необходимость — масса, так что перечислять их не стану, однако, если и вы задаетесь решением задачи — как найти запись по ее ID, то — вот, по тексту ниже будет ответ!
Я уже когда-то выполнят подобную работу одному из клиентов, и вот сегодня ко мне обратились с похожей просьбой, я помог написать плагин… и решил написать сюда в блог небольшую заметку по решению… возможно, кому-то пригодится:
-
Как найти запись по ID в админке (идентификатору): в wp-admin — все записи
-
создаем плагин поиска записи по идентификатору — по id
Данное решение (примеры) я встретил где-то на просторах WordPress.org, уже не помню где и когда… однако, данный код использовал помимо пользовательских и на своих сайтах, так что функции сохранились…
Как найти запись по ID в админке (идентификатору): в wp-admin — все записи
На моем примерном сайте уже есть функционал, который выводит данные о ID записи / странице / произвольного типа… (как эта фича — колонка с ID записи/страницы делается, описано здесь: Добавим в административную панель управления сайтом в раздел «Все записи» информационные колонки с id постов, страниц, меток, рубрик…
…хотя идентификатор и указан, однако, проматывать всю ленту и искать требуемую запись по ее ID и в этом случае достаточно хлопотно. Гораздо проще вписать ID запись в окно Поиск, нажать «Поиск записей» и — готово, получаем результат…
По умолчанию в WordPress функционала определения поста по id нет, так что, если нам требуется, нужно штатный функционал дорабатывать и расширять. Благо — cms WP это замечательно позволяет реализовывать!
К тому же ID — идентификатор поста возможно добавить для удобства туда, куда нужно. К примеру:
На примере картинки выше, данные о посте видит только администратор сайта — как работать с условиями php WordPress подробно расписано в этом посте, есть четкое видео (а это условные теги Woocommerce) !..
к оглавлению
создаем плагин поиска записи по идентификатору — по id
Создавайте плагин либо на компьютере, а затем переносите архив на сервер (путем «Добавить плагин» …и «загрузить»…)… либо же прямо на хостинге… Кому как удобнее. Главное, соблюдайте осторожность!..
Создаем папку с именем, скажем, ats-admin-post-id-search (можете создать папку со своим произвольным именем) я, к примеру, добавил ats- в таком случае плагин особо искать не придется, потому как он будет близко к началу (сверху) — по начальной литере а.
Внутри этой папки создаем файл с именем ats-admin-post-id-search.php (в эту же папку можно добавить индексный файл / index.php / и файл-справку readme.txt).
В файл ats-admin-post-id-search.php прописываем на постоянное местожительства такой код:
<?php
/*
Plugin Name: ATS Admin Search Post ID
Plugin URI: https://домен.ru/
Description: Allows posts to searched using IDs in the admin area = Позволяет выполнять поиск ЗАПИСЕЙ СТРАНИЦ по идентификатору, в админке в ПОИСКЕ
Version: 0.0.1
Author: Ваше имя
Author URI: https://mihalica.ru/
License: GPL22
License URI: https://домен.ru/
Text Domain: your_text_domain
Domain Path: /languages
*/
/**
* Allows posts to searched ID in the admin area.
*
* @param WP_Query $query The WP_Query instance (passed by reference).
*
* решение, которое использует pre_get_posts
* Позволяет выполнять поиск ЗАПИСЕЙ СТРАНИЦ по идентификатору, в админке в ПОИСКЕ
*/
add_action( 'pre_get_posts','wpse_admin_search_include_ids' );
function wpse_admin_search_include_ids( $query ) {
// Bail if we are not in the admin area
if ( ! is_admin() ) {
return;
}
// Bail if this is not the search query.
if ( ! $query->is_main_query() && ! $query->is_search() ) {
return;
}
// Get the value that is being searched.
$search_string = get_query_var( 's' );
// Bail if the search string is not an integer.
if ( ! filter_var( $search_string, FILTER_VALIDATE_INT ) ) {
return;
}
// Set WP Query's p value to the searched post ID.
$query->set( 'p', intval( $search_string ) );
// Reset the search value to prevent standard search from being used.
$query->set( 's', '' );
}
/*решение, которое использует pre_get_posts*/
/**************************************** НИЖЕ ДРУГОЙ ВАРИАНТ ***********************************/
/**
* Modify search SQL enabling searching by post ID.
*
* @param string $search Search SQL for WHERE clause.
* @param WP_Query $wp_query The current WP_Query object.
*
* альтернативное решение, которое использует posts_search
* фильтр для изменения SQL напрямую при выполнении поиска в области администрирования с использованием числового значения
*/
add_filter( 'posts_search', 'wpse_posts_search_post_id', 10, 2 );
function wpse_posts_search_post_id( $search, $wp_query ) {
// Bail if we are not in the admin area
if ( ! is_admin() ) {
return $search;
}
// Bail if this is not the search query.
if ( ! $wp_query->is_main_query() && ! $wp_query->is_search() ) {
return $search;
}
// Get the value that is being searched.
$search_string = get_query_var( 's' );
// Bail if the search string is not an integer.
if ( ! filter_var( $search_string, FILTER_VALIDATE_INT ) ) {
return $search;
}
// This appears to be a search using a post ID.
// Return modified posts_search clause.
return "AND wp_posts.ID = '" . intval( $search_string ) . "'";
}
/*альтернативное решение, которое использует posts_search*/
Выбираете один из понравившихся вариантов, и работаете…
Как только все шаги по созданию плагина проделали, проходим в админпанель в раздел «Плагины», отыскиваем наш ats-admin-post-id-search… активируем и пробуем найти какую-то запись… по примеру шкриншота выше.
Создание… продвижение сайтов: студия ATs media запросто с WordPress
…вопросы в комментариях – помогу, в чём дюжу…
mihalica.ru !
Михаил ATs – владелец блога запросто с Вордпресс – в сети нтернет давным-давно…
…веб разработчик студии ATs media: помогу в создании, раскрутке, развитии и целенаправленном сопровождении твоего ресурса в сети… – заказы, вопросы… разработка…
Сиротливый контент не влияет на рейтинг напрямую, но если у контента нет внутренних ссылок, он просто не будет ранжироваться. Google сообщает о примерно 2 триллионах поисковых запросов в мире каждый год. Поэтому оптимизация для поисковых систем с каждым годом приобретает все большее значение. Одной из важнейших составляющих SEO является избавление от бесхозного контента. В этой статье мы расскажем вам, как найти и исправить бесхозный контент с помощью семи лучших инструментов, которые мы тестировали на протяжении многих лет. Но сначала давайте узнаем, что такое бесхозный контент и почему вы должны его исправлять.
Оглавление данной статьи:
- 1 Лучшее знакомство с сиротским контентом
- 2 Почему важно найти и исправить «сиротский» контент?
- 3 Yoast SEO
- 4 Link Whisper
- 5 Semrush
- 6 Interlinks Manager
- 7 Internal Link Juice
- 8 Менеджер по внутренним ссылкам
- 9 Screaming Frog
- 10 Подведение итогов
Лучшее знакомство с сиротским контентом
Что же такое осиротевший контент в WordPress? Контент, на который не ссылаются другие страницы вашего сайта, называется бесхозным контентом. Каждая страница, которую вы пытаетесь ранжировать, должна иметь контекстную ссылку на нее. Если вы связали пост с какой-либо категорией или главной страницей и думаете, что он уже не является бесхозным, то вы ошибаетесь. Чтобы боты Google распознавали, классифицировали и ранжировали контент, они должны видеть ссылки, которые показывают им, что контент похож на другие страницы блога на вашем сайте. А это возможно только при наличии внутренней ссылки на страницы блога. Этот процесс помогает поисковым системам лучше распознавать ваши блоги и дает читателям возможность лучше понять, о чем идет речь на вашем сайте. Возможно, вам интересно, а как создается «сиротский» контент? Все просто — если вы разместили блог и забыли сделать внутреннюю ссылку на него, есть вероятность, что в будущем на него не обратят внимания. Забытая внутренняя перелинковка приводит к появлению бесхозного контента.
Почему важно найти и исправить «сиротский» контент?
Очень важно исправлять бесхозный контент, потому что он влияет на SEO вашего сайта. Каким образом? Давайте посмотрим! Даже если ваш сайт имеет высокий DA, но не использует внутреннюю перелинковку, страница не будет ранжироваться достаточно высоко, чтобы обеспечить вам трафик. К счастью, вы можете автоматизировать внутреннюю перелинковку и навсегда избавиться от бесхозных страниц. Вот несколько инструментов, которые могут помочь вам в этом.
Yoast SEO
Yoast имеет идентификатор осиротевшего контента только в своем премиум-плане. Вы можете просто зайти в раздел «Посты» и увидеть там вкладку «Сироты». Давайте посмотрим, как использовать Yoast SEO для поиска бесхозного контента на сайте.
Шаг 1: Наведите курсор на сообщения или страницы и нажмите на Все сообщения/страницы. В верхнем меню вы увидите опцию Orphaned content.
Шаг 2: Когда вы нажмете на значок меню Orphaned content, у вас появится возможность просканировать ваш сайт на предмет содержания, в котором отсутствует внутренняя перелинковка. Кнопка «Нажмите здесь» — это та кнопка, которую вы хотите нажать.
Шаг 3: Затем Yoast начнет проверять все страницы вашего сайта на наличие бесхозного контента.
Шаг 4: Теперь вы можете увидеть все осиротевшие страницы. После того, как вы нашли все бесхозные страницы и посты на вашем сайте, вы можете просто выяснить, какие из них нуждаются в оптимизации.
Профессиональный совет: Не все, что вы публикуете на своем сайте, ранжируется, верно? Так почему бы не расставить приоритеты в соответствии с возможностями ранжирования и сэкономить время!
Link Whisper
Если вам нужен инструмент, который подсказывает внутренние ссылки по ходу написания статьи, находит старые посты, в которых отсутствует перелинковка, и исправляет неработающие ссылки, Link Whisper — отличный инструмент для использования. Вот как вы можете использовать его для поиска и исправления бесхозного контента:
Шаг 1: Установите плагин Link Whisper и откройте приборную панель.
Шаг 2: Нажмите на «Orphaned Posts», чтобы увидеть все страницы и посты, на которых отсутствует внутренняя перелинковка.
Шаг 3: Вы увидите список бесхозных страниц; выберите ту, для которой вы хотите оптимизировать размещение ссылок.
Шаг 4: Инструмент порекомендует множество внутренних ссылок, которые, по его мнению, релевантны и могут быть связаны с постом или страницей блога.
Шаг 5: Вы также можете отредактировать предложение, которое вы видите ниже, где будет осуществляться связывание. Это предложение взято из записи блога, которую вы связываете с осиротевшей страницей. Чтобы отредактировать его, просто нажмите на кнопку Редактировать предложение.
Шаг 6: Когда вы нажмете на маленькую синюю раскрывающуюся стрелку, вы увидите целую кучу предложенных предложений, которые вы можете добавить к своему сообщению и связать его.
Шаг 7: Когда вы закончите все изменения, просто поставьте галочку в левом поле и нажмите «Добавить ссылки». Дайте инструменту поработать, и вы получите страницу, которая больше не будет сиротливой.
Semrush
С помощью Semrush вы можете определить, какие страницы должны иметь межссылочные ссылки, чтобы лучше ранжироваться. Чтобы сделать это, необходимо использовать инструмент Site Audit. Вот как это сделать шаг за шагом.
Шаг 1: После успешного входа в систему нажмите на «Аудит сайта».
Шаг 2: Если вы используете Semrush впервые, введите имя домена, который вы хотите просмотреть, а затем нажмите «Начать аудит». Если нет, вы можете просто создать новый проект.
Шаг 3: Настройте и внесите все необходимые изменения в ползунок, а затем нажмите ‘Начать аудит’.
Шаг 4: Откиньтесь на спинку кресла и расслабьтесь, пока аудит не будет завершен, а затем нажмите на проект, чтобы увидеть полный отчет.
Шаг 5: Перейдите в раздел «Вопросы» и найдите в строке поиска «Сироты».
Шаг 6: Нажмите на «Почему и как это исправить».
Шаг 7: Это решение, которое Semrush предоставит вам для осиротевших страниц.
После того как вы узнаете, сколько на вашем сайте бесхозных ссылок, решите, какие из них нужно исправить.
Interlinks Manager
Некоторые сайты нуждаются в многочисленных ссылках, чтобы лучше ранжироваться в SERP. В этом вам может помочь менеджер Interlinks от DAEXT. Этот инструмент является платным, и вы можете приобрести его на рынке Envato всего за $39. Вот некоторые из функций, которые предлагает Interlinks Manager:
- Имеет приборную панель для анализа внутренних ссылок и предлагает вам, какие посты/страницы следует оптимизировать
- Получайте информацию о ссылочном соке вашего сайта и генерируйте ссылки там, где это необходимо
- Открыть сообщение и получить предложения по перелинковке при редактировании
- Автоматическое преобразование определенного ключевого слова или фразы в ссылку с помощью функции AIL инструмента
- Отслеживайте все клики, сделанные вашими посетителями по ссылке, и соответствующим образом оптимизируйте свою стратегию размещения ссылок
- Экспортируйте отчеты CSV и отслеживайте все ссылки
Interlinks Manager подходит для вашего бизнеса, если вы управляете сайтом электронной коммерции, где вам нужно много межссылочных ссылок, чтобы посетители могли посетить несколько страниц и купить продукт.
Internal Link Juice
Следующий инструмент в нашем списке — Internal Link Juice. Бесплатный план этого инструмента на сегодняшний день скачали ~15 тыс. пользователей. Вот руководство о том, как использовать Internal Link Juicer. Вы можете начать с бесплатного плана и, при необходимости, перейти на платный план с единовременной оплатой $69,99 за веб-сайт. Вот некоторые ключевые особенности, которые предлагает Internal Link Juicer:
- Добавьте ключевые слова и сделайте процесс связывания полностью автоматическим
- В нем есть функция, которая не позволяет внутренней перелинковке препятствовать скорости загрузки страницы
- Функция разрыва в инструменте позволяет генерировать высоко релевантные ссылки
- Поддерживает практически все варианты использования внутренней перелинковки
- Статистическая панель дает вам четкое представление о бесхозных страницах и многом другом
Менеджер по внутренним ссылкам
Инструмент автоматического построения ссылок SEO, он же менеджер внутренних ссылок, автоматически поможет вам найти и связать URL-адреса ваших постов и страниц. Давайте рассмотрим пример, чтобы лучше понять его. Вы написали пост о темах WordPress. Вы хотите, чтобы везде, где на вашем сайте появляется термин «темы WordPress», на написанный вами пост в блоге была ссылка. То есть, вы хотите, чтобы URL — yourdomain.com/wordpress-theme был связан с вашим сайтом везде, где используется термин «тема WordPress». С помощью менеджера внутренних ссылок вы можете просто перейти в раздел Добавить ссылки, заполнить основное ключевое слово + URL и сделать это.
Screaming Frog
Определение осиротевших страниц с помощью Screaming Frog — это немного длительный процесс. Но ожидание того стоит. Будучи инструментом аудита, он позволяет только определить осиротевшие страницы/посты, но не исправить их автоматически. Но он делает это бесплатно, поэтому нет ничего плохого в том, чтобы попробовать. Для начала вам понадобятся:
- URL карты сайта вашего сайта, чтобы инструмент мог ее просмотреть
- Интеграция аналитики Google и поисковой консоли с инструментом для точного определения бесхозного контента
Вот руководство от Screaming Frog, в котором тщательно объясняется каждый шаг. Следуйте ему, и вы узнаете, на каких страницах отсутствуют ссылки.
Подведение итогов
Итак, какой же лучший инструмент позволяет выявить и исправить осиротевший контент или страницы на вашем сайте WordPress? Мы рекомендуем попробовать Link Whisper. Этот инструмент удобен для начинающих, быстр и точен. Да, он платный, но с его помощью вы можете автоматизировать процесс внутренней перелинковки вашего сайта. Если вам нужен бесплатный инструмент, вы можете выбрать Screaming Frog, поскольку он предоставляет подробный отчет. Но в бесплатной версии Screaming Frog есть ограничение по выявлению бесхозного контента и невозможности его исправления. Мы бы посоветовали вам инвестировать в исправление бесхозных постов и страниц и автоматизировать этот процесс на будущее, так как это определенно поможет вам в SEO.
Просмотров: 418
Пробую посадить верстку на Worpress. Столкнулся с проблемой (когда изучал, как выводить записи с помощью php в подвал), что не знаю, где у меня выводятся записи… Прочитал на В-ресс доке, что они все публикуются авт на главной, но у меня на главной странице только а-ля “приветствие” и все такое, а уже далее сайт по навигации будет раскидан на страницу с категориями, в которой по сути будут выводиться записи и публиковаться там. А то сейчас, когда я нажимаю на запись в ВП, то оно просто скидывает меня на главную страницу (в урл пишет что на запись, хотя по сути дела это просто главная, в которой нету места для ее вывода). Так как переместить записи, или какое решение моей проблемы.
-
Вопрос заданболее трёх лет назад
-
114 просмотров
Сегодня разберёмся, как в WordPress реализовать AJAX поиск по сайту (так называемый «Живой поиск») без использования плагинов. Настроим его должным образом. Рассмотрим, как реализовать поиск по записям, страницам или произвольным типам записей. А также исключим определённые страницы/записи из поиска.
Содержание:
- код поиска WordPress (HTML, CSS);
- AJAX поиск (JavaScript);
- настройка поиска (functions.php);
- поиск по записям;
- поиск по страницам;
- поиск по произвольным типам записей;
- включения нужных типов записей в поиск;
- включение только записей в поиск;
- включение произвольного типа записей;
- включение нескольких типов записей в поиск
- исключение страниц/произвольных записей из поиска;
- исключение страниц по id;
- исключение кастомных типов записей;
- исключение категорий по id;
- включение поиск по метаполям;
- сортировка результатов поиска;
- подсветка результатов поиска;
- admin-ajax.php bad request 400.
Код поиска WordPress
Код поиска находится в файле searchform.php. Именно данный файл вам нужно выводить в том месте, где это необходимо. Чтобы вывести форму поиска WordPress, воспользуйтесь следующим кодом.
<?php get_search_form(); ?>
Ваш шаблон поиска searchform.php может выглядеть примерно так.
<form
class="search-form"
role="search"
method="get"
id="searchform"
action="<?php echo home_url('/') ?>"
>
<input
class="search-form__input"
type="text"
value="<?php echo get_search_query() ?>"
name="s" id="s"
placeholder="Поиск на сайте WordPress"
autocomplete="off"
/>
<button type="submit" id="searchsubmit">
<svg xmlns="http://www.w3.org/2000/svg" width="19.856" height="20.848" viewBox="0 0 19.856 20.848">
<path d="M91.119,310.567l-4.713-4.713a8.8,8.8,0,0,0,2.51-6.147,8.708,8.708,0,1,0-8.708,8.708,8.983,8.983,0,0,0,5.02-1.588l4.815,4.815a.877.877,0,0,0,1.127,0A.792.792,0,0,0,91.119,310.567ZM73.037,299.708a7.171,7.171,0,1,1,7.171,7.171A7.192,7.192,0,0,1,73.037,299.708Z" transform="translate(-71.5 -291)" fill="#414544" />
</svg>
</button>
<ul class="ajax-search"></ul>
</form>
Стили для выпадающего списка результатов поиска.
/* ajax search */
.search-form {
position: relative;
}
.ajax-search {
position: absolute;
top: 100%;
left: 0;
width: 100%;
right: 0;
background: #fff;
box-shadow: 0 0 4px rgba(0, 0, 0, 0.2);
border-radius: 10px;
margin-top: 5px;
max-height: 230px;
overflow-x: hidden;
overflow-y: auto;
z-index: 100;
margin: 0;
padding: 0;
font-size: 14px;
color: #424348;
scrollbar-color: dark;
scrollbar-width: thin;
overscroll-behavior: contain;
}
.ajax-search::-webkit-scrollbar {
width: 6px;
background-color: #eff2f3;
}
.ajax-search::-webkit-scrollbar-thumb {
background-color: #dddddd;
border-radius: 4em;
}
.ajax-search__item {
position: relative;
border-top: 1px solid rgba(224, 229, 231, 0.5);
padding: 10px 15px;
cursor: pointer;
list-style-type: none;
}
.ajax-search__link {
color: var(--accent);
line-height: 130%;
margin-bottom: 10px;
font-size: 13px;
display: block;
}
.ajax-search__excerpt {
cursor: default;
font-size: 11px;
line-height: 140%;
}
.ajax-search__not-found {
font-size: 12px;
}
Живой поиск в WordPress
Для реализации живого поиска мы будем использовать технологию AJAX. Таким образом, поиск по сайту WordPress будет осуществляться без перезагрузки страницы.
При вводе текста мы будем отправлять AJAX запрос в php-обработчик (создадим его в следующем пункте данной статьи). При нахождении или не нахождении данных мы будем выводить пользователю результаты поиска в виде списка <ul class=»ajax-search»></ul>, который мы подготовили в предыдущем пункте статьи.
Создайте файл ajax-search.js или просто добавьте следующий JavaScript код в ваш главный javascript файл.
jQuery(document).ready(function ($) {
const search_input = $(".search-form__input");
const search_results = $(".ajax-search");
search_input.keyup(function () {
let search_value = $(this).val();
if (search_value.length > 2) { // кол-во символов
$.ajax({
url: "/wp-admin/admin-ajax.php",
type: "POST",
data: {
"action": "ajax_search", // functions.php
"term": search_value
},
success: function (results) {
search_results.fadeIn(200).html(results);
}
});
} else {
search_results.fadeOut(200);
}
});
// Закрытие поиска при клике вне его
$(document).mouseup(function (e) {
if (
(search_input.has(e.target).length === 0) &&
(search_results.has(e.target).length === 0)
) {
search_results.fadeOut(200);
};
});
});
Если javascript файл вы создали отдельно, не забудьте подключить его в functions.php.
wp_enqueue_script(
"{название_темы}-ajax-search",
get_theme_file_uri("assets/js/ajax-search.js"), array(), "", true
);
Настройка поиска WordPress
При вводе в поле поиска отправляется AJAX запрос в функцию ajax_search. Создадим её в functions.php или в отдельном файле, как вам удобно. Я создам отдельно.
Создаю файл /functions/ajax-search.php и подключаю его в functions.php.
require get_template_directory() . "/functions/ajax-search.php"; # AJAX search
Сам код для этого файла.
<?php
// ajax поиск по сайту
add_action("wp_ajax_nopriv_ajax_search", "ajax_search");
add_action("wp_ajax_ajax_search", "ajax_search");
function ajax_search()
{
$args = array(
"post_type" => "any", // Тип записи: post, page, кастомный тип записи
"post_status" => "publish",
"order" => "DESC",
"orderby" => "date",
"s" => $_POST["term"],
"posts_per_page" => -1
);
$query = new WP_Query($args);
if ($query->have_posts()) {
while ($query->have_posts()) : $query->the_post();
get_template_part("template-parts/loop-search-item");
endwhile;
} else {
echo "Ничего не найдено"
}
exit;
}
Пример template-parts/loop-search-item.php:
<li class="ajax-search__item">
<a href="<?php the_permalink(); ?>" class="ajax-search__link"><?php the_title(); ?></a>
<div class="ajax-search__excerpt"><?php the_excerpt(); ?></div>
</li>
Обратите внимание на ключ post_type в массиве $args. В данном примере мы осуществляем поиск по всему сайту, т.к. мы использовали значение any. Рассмотрим и другие примеры поиска.
Количество результатов поиска
Чтобы вывести количество найденных результатов поиска, используйте код ниже:
WordPress поиск по записям
Чтобы выполнить поиск только по записям, измените значение any на post.
"post_type" => "post", // тип записи «Записи»
Поиск по страницам:
"post_type" => "page", // тип записи «Страницы»
Поиск по кастомным типам записей
Например, мы хотим выполнять поиск по страницам и по произвольному типу записей production, тогда используйте массив для множественного выбора.
"post_type" => array("page", "production"), // типы записей: «Страницы», «Продукция»
Включение типов записей в поиск
Обратите внимание, все следующие ниже фильтры ниже будут работать на странице поиска, для живого (AJAX) поиска, добавляйте нужные аргументы в свою функцию ajax_search (3 пункт данного руководства). Примеры:
"post_type" => array("page", "production"), # включение: «Страницы», «Продукция»
"post__in" => array(6, 11, 19), # включение страниц с id 6, 11, 19
"post__not_in" => array(36, 38), # исключение страниц с id 36, 38
"category__not_in" => array(6, 7), # исключение категорий с id 6, 7
Включение записей в поиск
Чтобы включить в поиск только записи, используйте код:
add_filter("pre_get_posts", "include_search_filter");
function include_search_filter($query)
{
if (!is_admin() && $query->is_main_query() && $query->is_search) {
$query->set("post_type", "post");
}
return $query;
}
Включение произвольного типа записей
Чтобы включить в поиск только произвольный тип записи production, используйте следующий код:
add_filter("pre_get_posts", "include_search_filter");
function include_search_filter($query)
{
if (!is_admin() && $query->is_main_query() && $query->is_search) {
$query->set("post_type", "production");
}
return $query;
}
Включение нескольких типов записей в поиск
Чтобы включить сразу несколько типов записей, используйте массив:
add_filter("pre_get_posts", "include_search_filter");
function include_search_filter($query)
{
if (!is_admin() && $query->is_main_query() && $query->is_search) {
$query->set("post_type", array("production", "page"));
}
return $query;
}
Таким образом, мы включили в поиск только «Страницы» и произвольный тип записи «Продукция».
Исключение страниц из поиска WordPress
Иногда может понадобиться исключить определённые страницы из поиска, рассмотрим, как это можно реализовать.
Исключение страниц из поиска по id
Чтобы исключить страницы с определёнными id, воспользуйтесь следующим кодом:
add_action("pre_get_posts", "my_exclude_search_filter");
function my_exclude_search_filter($query) {
if (!$query->is_admin && $query->is_search && $query->is_main_query() ) {
$query->set("post__not_in", array(36, 38) );
}
}
Так мы исключим из поиска страницы с id 36 и 38.
Исключение произвольных типов записей из поиска
Чтобы исключить кастомный тип записи из поиска, используйте код:
add_action("init", "exclude_post_type_from_search", 99);
function exclude_post_type_from_search() {
global $wp_post_types;
if (post_type_exists("photo_gallery") ) {
$wp_post_types["photo_gallery"]->exclude_from_search = true;
}
}
Таким образом мы исключили тип записи photo_gallery из поиска.
Исключение категорий из поиска по id
Чтобы исключить определённые категории из поиска, воспользуйтесь кодом ниже.
add_filter("pre_get_posts","my_exclude_category_search_filter");
function my_exclude_category_search_filter($query) {
if ($query->is_search) {
$query->set("category__not_in", array(6, 7));
}
return $query;
}
Указав в массиве id 6 и 7, мы исключаем из поиска категории с этими id.
Добавим в стандартный поиск WordPress еще и поиск по метаполям.
add_filter('posts_join', 'cf_search_join');
add_filter('posts_where', 'cf_search_where');
add_filter('posts_distinct', 'cf_search_distinct');
function cf_search_join($join)
{
global $wpdb;
if (is_search())
$join .= " LEFT JOIN $wpdb->postmeta ON ID = $wpdb->postmeta.post_id ";
return $join;
}
function cf_search_where($where)
{
global $wpdb;
if (is_search()) {
$where = preg_replace(
"/(s*$wpdb->posts.post_titles+LIKEs*('[^']+')s*)/",
"($wpdb->posts.post_title LIKE $1) OR ($wpdb->postmeta.meta_value LIKE $1)",
$where
);
}
return $where;
}
function cf_search_distinct($where)
{
return is_search() ? 'DISTINCT' : $where;
}
Сортировка результатов поиска
Чтобы отсортировать результаты поиска по таксономии, используйте следующий код:
add_filter('posts_orderby', 'search_results_custom', 10, 2);
function search_results_custom($orderby, $query)
{
global $wpdb;
if (!is_admin() && is_search())
$orderby = $wpdb->prefix . "posts.post_type DESC";
return $orderby;
}
Таким образом результаты поиска будут отсортированы по типам записей. Можно добавить еще сортировку по заголовку:
add_filter('posts_orderby', 'search_results_custom', 10, 2);
function search_results_custom($orderby, $query)
{
global $wpdb;
if (!is_admin() && is_search())
$orderby = $wpdb->prefix . "posts.post_type DESC", {$wpdb->prefix}posts.post_title ASC";
return $orderby;
}
Так вы можете сортировать результаты нужным образом.
Подсветка результатов поиска
При переходе на страницу с результатами поиска, заголовок статьи и the_excerpt/the_content (отрывок или контент) будут подсвечены.
# Подсветка результатов поиска
add_filter("the_content", "search_results_hightlight");
add_filter("the_excerpt", "search_results_hightlight");
add_filter("the_title", "search_results_hightlight");
function search_results_hightlight($text)
{
// цвета
$styles = [
"",
"color: #000; background: #98fd65;",
"color: #000; background: #ffcc56;",
"color: #000; background: #98cefa;",
"color: #000; background: #fd9897;",
"color: #000; background: #df7dca;",
];
// только для страницы поиска
if (!is_search())
return $text;
$query_terms = get_query_var("search_terms");
if (empty($query_terms))
$query_terms = array_filter([get_query_var("s")]);
if (empty($query_terms))
return $text;
$n = 0;
foreach ($query_terms as $term) {
$n++;
$term = preg_quote($term, "/");
$text = preg_replace_callback("/$term/iu", function ($match) use ($styles, $n) {
return '<span style="' . $styles[$n] . '">"' . $match[0] . '"</span>';
}, $text);
}
return $text;
}
Admin-ajax.php Bad Request 400
Если при вводе в поле поиска в консоли появляется ошибка 400 Bad Request, то ищите проблему в 3 пункте данного руководства. Вероятно, вы неправильно именовали экшены или создали отдельный файл и забыли подключить его (или неправильно подключили).
Думаю, логика использования AJAX поиска на сайте WordPress вам ясна. Если же что-то осталось не понятным, задавайте вопросы в комментариях.
Понравилась статья? — Можете поддержать проект в блоке ниже.
Идентификатор в WordPress представляет уникальный номер, который используется для классификации определенных элементов в базе данных WordPress.. Этот номер в какой-то момент нужен почти каждому пользователю WordPress — обычно в тех случаях, когда тема WordPress или плагин спрашивает вас об этом для выполнения определенной функции. Идентификатор также может потребоваться при изменении кода. У разных страниц, сообщений, категорий, комментариев и пользователей в WordPress есть собственный идентификатор, поэтому мы решили показать вам, как найти все эти разные типы идентификаторов.
Поиск идентификатора сообщения
Найти идентификатор записи в WordPress можно двумя способами:
1.
Наведите указатель мыши на сообщение
: вы можете сделать это, открыв «Сообщения»> «Все сообщения», а затем наведя курсор на сообщение, идентификатор которого вас интересует. После этого внизу страницы появится панель, а идентификатор сообщения будет отображаться в внизу экрана в виде числа после Почта= и раньше &.
2.
Когда вы нажимаете на сам пост
: как только вы это сделаете, идентификатор сообщения будет отображаться в адресной строке вашего браузера как часть URL-адреса. (сообщение = номер).
Поиск идентификатора страницы
Как и в случае с идентификатором сообщения, вы можете увидеть идентификатор страницы, наведя курсор на страницу в списке страниц (Страницы> Все страницы) или в URL-адресе страницы.
Поиск идентификатора категории
Как и в предыдущих двух случаях, вы можете найти интересующий вас идентификатор категории, наведя указатель мыши на конкретную категорию в Сообщения> Категории и ищу ID = номер, или найти его в URL-адресе категории.
Поиск идентификатора комментария
Когда вы получаете доступ к Комментарии в меню панели инструментов, вы сможете увидеть идентификатор комментария, наведя курсор на конкретный комментарий. Идентификатор будет отображаться как c = число.
Как и в других случаях, альтернативный вариант — щелкнуть Редактировать под нужным комментарием и просмотрите идентификатор комментария в URL-адресе.
Поиск идентификатора пользователя
Что касается идентификатора пользователя, вы можете узнать его при доступе Пользователи> Все пользователии наведите указатель мыши на кнопку «Удалить» под этим конкретным пользователем. Единственный пользователь, у которого нет кнопки «Удалить», — это администратор, и его идентификатор всегда один и тот же. (user_id = 1).
Кроме того, вы также можете просмотреть идентификатор пользователя, щелкнув его имя.
Отображение идентификаторов в WordPress с помощью плагина Show IDs
Несмотря на то, что найти идентификатор в WordPress с помощью методов, описанных выше, довольно легко, еще более быстрый способ сделать это — установить Плагин Show IDs от 99 Robots. В этом легком плагине замечательно то, что после установки он создаст дополнительный столбец в списках страниц, сообщений, категорий, комментариев и пользователей.. В этом столбце автоматически отображаются все идентификаторы, поэтому нет необходимости настраивать что-либо в плагине, чтобы он работал.
Вывод
Вот и все — простой способ найти или отобразить запись, страницу, категорию, комментарий и идентификатор пользователя в WordPress. Несмотря на то, что случаи, когда вам нужно найти эти идентификаторы, могут быть не такими частыми, было бы полезно знать, как это сделать, когда они возникнут. Кроме того, теперь у вас есть выбор из различных методов получения идентификатора, поэтому вы можете выбрать тот, который лучше всего подходит для вас.
Moyens I/O Staff мотивировал вас, давая советы по технологиям, личному развитию, образу жизни и стратегиям, которые помогут вам.