Intereting Posts

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

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

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

Если вы посмотрите таблицу $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');