Intereting Posts
Как добавить активный класс к отдельной ссылке на страницу? PHP echo внутри javascript Как установить формат сообщения «образ» для всех вложений изображений? Локализованный WordPress намного медленнее? Получение, обеспечение и кэширование данных из внешнего источника Имея проблемы с разбиением на страницы WordPress с несколькими категориями Автоматическое удаление сообщений на основе текста контента Установка категории по умолчанию для настраиваемого типа сообщения после автосохранения Возможно ли иметь тему, которая использует только одну страницу? как добавить класс в ul, возвращаемый wp_list_bookmarks Как добавить регистрационную форму по умолчанию на страницу шаблона? Пользовательский тип сообщения не отображает параметры проекта и корзины Получение имени пользователя в get_user_meta Перезапуск пароля администратора через PHPMyadmin не удается Количество слов, использующих tinymce в интерфейсе

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

Мне нужно расширить стандартную функциональность поиска 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');