Как говорит моя практика, время от времени возникает необходимость найти запись по 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 !
Спасибо! попробуем функционал, в общем-то пригодится)
Замечательно, Светлана, если пригодится))