Есть ли способ переписать функцию поиска по умолчанию в wordpress? Я попытался использовать фильтры, но они только позволяют добавлять в запрос … или, возможно, переписывать весь запрос с помощью posts_request. Если я переписал это, никакие другие запросы не будут работать. У меня есть следующий код
function my_posts_request_filter($input) { if ( is_search() && isset($_GET['s'])) { global $wpdb; } return $input; } add_filter('posts_request','my_posts_request_filter');
Я мог бы переопределить $ input с моим пользовательским SQL, но на странице есть виджет, который показывает последние сообщения, и это не будет отображаться, если я это сделаю. Есть ли способ переписать функцию поиска?
Это не пуленепробиваемый, но при первом вызове WP_Query
для запроса на поиск ( может быть сценарий, когда плагин вызывает его перед WordPress, но это маловероятно), вы можете отключить фильтр после запуска функции.
function my_posts_request_filter($input) { if ( is_search() && isset($_GET['s'])) { global $wpdb; // do your funky SQL remove_filter('posts_request','my_posts_request_filter'); } return $input; }