Intereting Posts
Условия запуска короткого кода из плагина на тему скрыть короткий код с помощью крючков Ограничить просмотр сообщений по категориям, роли пользователя Get_the_author не возвращает имя автора Просмотр двойного счета в файле archive.php Как передать тему в Javascript Ajax для передачи идентификатора на другой странице в шаблоне страницы WordPress? Перемещение Weebly в WordPress скрипт jquery не помечен в дочерней теме Хотите сделать CSS, если значение мета-ключа пустое Добавить div перед первым абзацем the_content невозможно получить информацию родительской страницы Интеграция SSO / аутентификации с внешней службой каталогов Локальная и живая синхронизированная среда разработки и производства У меня есть таблица, которую я создал, как я могу сделать форму для фильтрации данных? Есть ли разница между постом в детском и детском и родительском терминах?

Удалить текст в тегах заголовка в выдержке

С помощью функции WordPress Excerpt по умолчанию. WordPress разбивает теги заголовка (например, тег h1), но сохраняет неформатированный текст, который лежит в пределах открытия / закрытия тега h1, отображаемого как часть выдержки.

Есть ли способ, помимо чередования тега h1, также полностью удалить текст внутри тега, при отображении выдержки?

Благодарю.

Вместо того, чтобы возиться с регулярным выражением, вы можете использовать пользовательскую выдержку (то есть ручную выдержку , которая сохраняет теги HTML, а не полагаться исключительно на автоматическую выдержку, которая разделяет теги HTML.

В зависимости от вашего конкретного варианта использования, использование ручного отрывка для отображения отрывков в формате HTML обычно является более легким подходом.

add_filter( 'the_excerpt', 'wpse49280_strip_header_tags', 1 ); function wpse49280_strip_header_tags( $excerpt ) { // this is just an example, there is probably a better regex $regex = '#(<h([1-6])[^>]*>)\s?(.*)?\s?(<\/h\2>)#'; return preg_replace( $regex, '', $excerpt ); } 

Следует отметить, что регулярное выражение HTML – не лучшее решение, но я думаю, что это наиболее практично для чего-то простого, такого как это.

Спасибо @ m0r7if3r за вашу помощь. Я не думаю, что я бы выяснил часть Regex. Это код, который я использую, и он работает:

  function wp_strip_header_tags ($ text) {

 $ raw_excerpt = $ text;
 if ('' == $ text) {
     // Получить сообщение.
     $ text = get_the_content (''); 
     // удалять теги короткого кода из данного содержимого.
     $ text = strip_shortcodes ($ text);
     $ text = apply_filters ('the_content', $ text);
     $ text = str_replace (']]>', ']]>', $ text);
 }
     $ regex = '# (] *>) \ s? (. *)? \ s? () #';
     $ text = preg_replace ($ regex, '', $ text);

     / *** Измените количество слов выдержки *** /
     $ excerpt_word_count = 60;  // Значение по умолчанию - 55
     $ excerpt_length = apply_filters ('excerpt_length', $ excerpt_word_count);

     / *** Изменить окончание выдержки *** /
     $ excerpt_end = '[...]';  // Это значение по умолчанию для WP.
     $ excerpt_more = apply_filters ('excerpt_more', ''. $ excerpt_end);

     $ excerpt = wp_trim_words ($ text, $ excerpt_length, $ excerpt_more);

     return apply_filters ('wp_trim_excerpt', $ excerpt, $ raw_excerpt);
 }
 add_filter ('get_the_excerpt', 'wp_strip_header_tags', 5); 

Вот функция, которая работает для меня.

 function bac_wp_strip_header_tags( $text ) { $raw_excerpt = $text; if ( '' == $text ) { //Retrieve the post content. $text = get_the_content(''); //remove shortcode tags from the given content. $text = strip_shortcodes( $text ); $text = apply_filters('the_content', $text); $text = str_replace(']]>', ']]&gt;', $text); //Regular expression that strips the header tags and their content. $regex = '#(<h([1-6])[^>]*>)\s?(.*)?\s?(<\/h\2>)#'; $text = preg_replace($regex,'', $text); /***Change the excerpt word count.***/ $excerpt_word_count = 55; //This is WP default. $excerpt_length = apply_filters('excerpt_length', $excerpt_word_count); /*** Change the excerpt ending.***/ $excerpt_end = '[...]'; //This is the WP default. $excerpt_more = apply_filters('excerpt_more', ' ' . $excerpt_end); $excerpt = wp_trim_words( $text, $excerpt_length, $excerpt_more ); } return apply_filters('wp_trim_excerpt', $excerpt, $raw_excerpt); } add_filter( 'get_the_excerpt', 'bac_wp_strip_header_tags', 5);