Intereting Posts
Как настроить миниатюру нестандартного размера для wp_get_attachment_thumb_url ()? Удалить страницу меню Разрешить читателю переупорядочивать сообщения для себя (самые старые) Разбиение страницы на странице с помощью wp_query и query_posts Фильтр изображений работает на страницах прикрепления, но не в сообщениях. Я не могу получить идентификатор изображения Как настроить страницу всплывания, которая перенаправляется только одному клиенту? Неизвестная сортировка при импорте дампа из существующего сайта в базу данных разработки? Разрешить роль для редактирования одного конкретного плагина Почему WYSIWYG не поддерживает теги H1-H6? Предотвращение добавления дублирующихся страниц Как отключить разбивку на страницы (следующие / предыдущие ссылки) в архиве почтового типа? Получить все термины внутри определенной таксономии в многоузловом Страница против пользовательских типов сообщений Различия / проблемы WordPress + Тема Тема => Миниатюры WPTouch Post не работают? Обновить все сообщения, как если бы нажал кнопку «Обновить» в окне редактирования сообщений

html-объекты встречаются в файле_excerpt, используемом в качестве мета-описания

Это должно быть довольно просто, но когда я использую функцию ниже в header.php, чтобы захватить выдержку после использования мета-описания для одного сообщения или страницы

setup_postdata($post); $excerpt = get_the_excerpt(); echo $excerpt;

Я получаю html-объекты для апострофов, кавычек и т. Д., Например:

 <meta name="description" content="There&amp;#8217;s an interesting thing going on in the world of digital music; it&amp;#8217;s moving into the &amp;#8220;cloud.&amp;#8221; ..."> 

Я пробовал echo htmlentities($excerpt); и echo html_entity_decode($excerpt); без везения. Как я могу предотвратить появление этих объектов? Я не использую функцию в functions.php для генерации выдержки.

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

Я думаю, вы хотите это на сингулярной почтой / странице, так что вы не думаете установить глобальный объект post, он уже настроен.

После этого проблема заключается в том, что вызов get_excerpt будет запускать некоторые фильтры, которые добавляют html-объекты.

Это связано с тем, что get_the_excerpt предназначен для использования в содержимом страницы (внутри части <body> ), и есть побочный эффект, когда на странице отсутствует ручная выдержка, эта функция также вызывает фильтр the_content , что может вызвать некоторые проблемы совместимости с плагины … поэтому я предлагаю не использовать эту функцию для exctract описания, но использовать некоторые низкоуровневые функции:

После очень быстрого теста я считаю, что это должно быть хорошо, но, вероятно, можно улучшить:

в functions.php

 function head_description( $desc = '' ) { $desc = str_replace( '"', '', html_entity_decode( $desc ) ); $desc = stripslashes( wp_filter_nohtml_kses( $desc ) ); return str_replace( '&amp;', '&', $desc ); } 

Затем в header.php

 <head> <?php if ( is_singular() ) { global $post; $excerpt = $post->post_excerpt ? : wp_trim_words( $post->post_content, 55, '' ); $desc = head_description( $excerpt ); } else { $desc = head_description( 'Foo' ); // description for non singular pages } ?> <meta name="description" content="<?php echo $desc; ?>"> <?php } ?> 

Обязательно используйте двойные кавычки в content=" ... " потому что одинарная кавычка в описании не экранируется, и поэтому у вас возникают проблемы, если вы используете одиночную кавычку для переноса содержимого.