Intereting Posts
Пользовательская разбивка страниц на основе разбивки на страницы Кризи wp_category_checklist не будет отображаться для пользователей, не являющихся администраторами Запрос по ключевому слову или автору Список всех имен боковой панели? Извлечь список должностей из термина «таксономия» в CPT и список под 2. CPT Указание размера при отображении изображения, связанного с таксономией через ACF Редактирование ссылок на новый URL-адрес сайта, когда пользователь создает новый сайт Галерея с миниатюрной карусели Проектирование пользовательского архива.php, вдохновленного темой Autofocus Платный членский интерфейс Pro Rest API Как протестировать диск WordPress на VPS с помощью стека LEMP перед тем, как начать жить? WordPress Post по электронной почте пишет случайную строку для тела сообщения Добавление нескольких значений в мета-ключ сообщения Обнаружить изменение в site_url и home_url Удаление <li> из комментария

Стриптиз HTML-тегов из результатов поиска

Когда я делаю поиск, если есть заголовок изображения в теге img, он отображается очень уродливо среди результатов поиска (весь тег отображается и изображение тоже). Я нашел этот скрипт, который должен решить проблему, и это единственное, что я нашел о предмете через Интернет.

<?php function super_search_exclude_activate() { $striptags = "CREATE FUNCTION fnStripTags( Dirty longtext ) RETURNS longtext DETERMINISTIC BEGIN DECLARE iStart, iEnd, iLength int; WHILE Locate( '<', Dirty ) > 0 And Locate( '>', Dirty, Locate( '<', Dirty )) > 0 DO BEGIN SET iStart = Locate( '<', Dirty ), iEnd = Locate( '>', Dirty, Locate('<', Dirty )); SET iLength = ( iEnd - iStart) + 1; IF iLength > 0 THEN BEGIN SET Dirty = Insert( Dirty, iStart, iLength, ''); END; END IF; END; END WHILE; RETURN Dirty; END;"; global $wpdb; $wpdb->query("DROP FUNCTION IF EXISTS fnStripTags"); $wpdb->query($striptags); } register_activation_hook(__FILE__, 'super_search_exclude_activate'); function super_search_exclude_deactivate() { global $wpdb; $wpdb->query("DROP FUNCTION IF EXISTS fnStripTags"); } register_deactivation_hook(__FILE__, 'super_search_exclude_deactivate'); function super_search_exclude_posts_search($search) { if (is_search()) { global $wpdb; if (stripos($search, 'post_content LIKE')) { $search = str_replace("{$wpdb->posts}.post_content LIKE", "fnStripTags({$wpdb->posts}.post_content) LIKE", $search); } } return $search; } add_filter('posts_search', 'super_search_exclude_posts_search'); 

У меня нет сообщения об ошибке, но поисковая система не возвращает результат, если я отключу плагин, а затем вернусь к квадрату.

В чем проблема?

PS: Я создал плагин из этого скрипта и активировал его в правой секции администратора.

Я не знаю о коде, который вы пытаетесь использовать, лично я никогда не использовал бы решение, исключающее результаты, очень возможно, что поиск элемента в этих результатах и ​​исключение их – это только ухудшение качества обслуживания.

Вместо этого вы можете использовать файл шаблона search.php чтобы настроить, как отображаются результаты поиска, есть очень удобная функция, доступная в php, называемая strip_tags() которая удалит все теги HTML из строки.

ОБНОВИТЬ:

В частности:

search.php :

 <?php /** * Template Name: Search Results Page */ get_header(); ?> <section id="primary"> <div id="content" role="main"> <?php if (have_posts()): ?> <header class="page-header"><?php _e("Search Results"); ?></header> <div class="entry-content"> <?php while (have_posts()): the_post(); echo strip_tags(get_the_content()); endwhile; ?> </div> <?php endif; ?> </div> </section> <?php get_footer(); 

почему бы не создать прозрачную (не html) verson fo post при сохранении (save_post hook) и поместить ее в дополнительное поле таблицы psots (таблицы дельты) и выполнить поиск по этому полю во время поиска сайта (hook_list_where_request).