Intereting Posts
Элементы меню не «открываются», когда на них курсируют мыши? Локализация: мне нужен бэкэнд: английский и интерфейс в определенном языке Перенаправление пользовательских носителей Таксомия в пользовательский тип сообщения UPDATE в результатах SELECT. SQL-запрос для свопинга Author с значением Meta Box Добавить пользовательское поле для публикации с некоторой частью URL-адреса в качестве значения Подключить пользовательские правила перезаписи и переменные запроса к навигации wordpress Добавить валидацию в категорию Event_Search.php Установка кода Google Analytics на WordPress блоге Использование мета-запроса WP для отображения пользовательских типов сообщений по дате начала и окончания remove_image_size, похоже, не работает Удалите HTTP: с URL-адреса сайта и просто держите // в нем WP_Query бесконечный цикл Как я могу использовать данные metox2.io в wp-admin Завершение цикла разбиения на страницы в PHP отключить теги <script> в текстовом редакторе wordpress

Как искать сообщения и прикрепленные имена файлов

Мне нужно расширить стандартную функциональность поиска WP, чтобы термин поиска также применялся к файлам, прикрепленным к сообщению. Другими словами, если пользователь вводит «годовой отчет», то результаты поиска будут включать все страницы и сообщения, содержащие эту строку поиска в содержании, а также в прикрепленном имени файла?

Мой текущий код:

$search_list = array(); $search_query['s'] = $_GET['find']; $search_query['post_type'] = array('post', 'page'); $search_query['post_status'] = 'publish'; $search_query['posts_per_page'] = '2'; $search_query['paged'] = get_query_var('paged'); $search_query['nopaging'] = false; $search = new WP_Query($search_query); 

Большое спасибо.

Solutions Collecting From Web of "Как искать сообщения и прикрепленные имена файлов"

Если вы посмотрите таблицу $wpdb->posts в базе данных, вы заметите, что имена файлов, минус окончание типа файла, используются для post_title для вложений. Это означает, что вы можете эффективно искать имя файла, если вы можете получить свою функцию поиска для поиска вложений, которые уже выполняются по умолчанию (почти).

В вашем коде эти две строки работают против вас …

 $search_query['post_type'] = array('post', 'page'); $search_query['post_status'] = 'publish'; 

… поскольку вложения – это 'post_type' == 'attachments' и 'post_status' == 'inherit' . Если вы измените второй из тех, которые будут …

 $search_query['post_status'] = array('publish','inherit); 

… и оставьте первый, вы должны заставить его работать. То есть…

 $search_query['s'] = 'annual report'; $search_query['post_status'] = array('publish','inherit'); $search = new WP_Query($search_query); var_dump($search); 

Вы также можете изменить глобальный поиск с помощью …

 function search_attach_names_wpse_99832($qry) { if($qry->is_search()) { $qry->set('post_status',array('publish','inherit')); } } add_action('pre_get_posts','search_attach_names_wpse_99832');