Intereting Posts
Как использовать две разные страницы для просмотра содержимого сообщения? Управление имитатором темы Заставить WordPress соответствовать только URL-адресу в категории Как показать список сообщений с настраиваемым значением поля (датой), которое скоро появится Нужна помощь для показа одной и той же страницы на первой странице, страницы с поисковой страницей и портфолио Добавление фотографии каждому пользователю WP Возврат всех параметров переключателя при использовании дополнительных пользовательских полей Показать похожие позиции портфолио? Публикация сообщения об ошибке Как остановить WordPress с помощью утилиты utf8mb4_unicode_520_ci? Бета-версия плагинов wordpress как сайт обсуждения законопроектов выпадающий список без отправки С помощью wp_list_category добавьте каждую существующую категорию в тег опции Изменение sidebar.php и footer.php в зависимости от URL-адреса

Изменения в WordPress SimplePie

Я использую функцию fetch_feed (), предусмотренную в WordPress, для создания объекта-объекта SimplePie.

Код из WP следующий:

function fetch_feed($url) { require_once (ABSPATH . WPINC . '/class-feed.php'); $feed = new SimplePie(); $feed->set_sanitize_class( 'WP_SimplePie_Sanitize_KSES' ); // We must manually overwrite $feed->sanitize because SimplePie's // constructor sets it before we have a chance to set the sanitization class $feed->sanitize = new WP_SimplePie_Sanitize_KSES(); $feed->set_cache_class( 'WP_Feed_Cache' ); $feed->set_file_class( 'WP_SimplePie_File' ); $feed->set_feed_url($url); $feed->set_cache_duration( apply_filters( 'wp_feed_cache_transient_lifetime', 12 * HOUR_IN_SECONDS, $url ) ); do_action_ref_array( 'wp_feed_options', array( &$feed, $url ) ); $feed->init(); $feed->handle_content_type(); if ( $feed->error() ) return new WP_Error('simplepie-error', $feed->error()); return $feed; } 

Как я могу изменить, какие элементы HTML удаляются во время импорта фида?

SimplePie в своей документации говорит, что существует функция strip_htmltags (), но я не уверен, как я могу использовать ее в контексте WordPress. http://simplepie.org/wiki/reference/simplepie/strip_htmltags

Вот что я пробовал, но не работал:

 function wpse87359_feed_options( $feed) { $feed->strip_htmltags(array_merge($feed->strip_htmltags, array('h1', 'a', 'img','em'))); } add_action( 'wp_feed_options', 'wpse87359_feed_options' ); 

Solutions Collecting From Web of "Изменения в WordPress SimplePie"

SimplePie в WordPress использует встроенную дезинфекцию kses, а не SimplePie. Вместо этого вы можете фильтровать на wp_kses_allowed_html и добавлять туда свои элементы. Имейте в виду, что это произойдет для всех сообщений, а не только через SimplePie.

 function se87359_add_allowed_tags($tags) { $tags['mytag'] = array('myattr' => true); return $tags; } add_filter('wp_kses_allowed_html', 'se87359_add_allowed_tags'); 

Если вы хотите сделать это только для фидов, то должно работать следующее:

 /** * Add in our filter when we run fetch_feed() */ function se87359_add_filter( &$feed, $url ) { add_filter('wp_kses_allowed_html', 'se87359_add_allowed_tags'); } add_filter( 'wp_feed_options', 'se87359_add_filter', 10, 2 ); function se87359_add_allowed_tags($tags) { // Ensure we remove it so it doesn't run on anything else remove_filter('wp_kses_allowed_html', 'se87359_add_allowed_tags'); $tags['mytag'] = array('myattr' => true); return $tags; }