WordPress SimplePie Modifikationen

Ich benutze die function fetch_feed () in WordPress, um ein SimplePie-Feedobjekt zu erstellen.

Der Code von WP ist folgender:

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; } 

Wie kann ich ändern, welche HTML-Elemente beim Feed-Import entfernt werden?

SimplePie in seiner Dokumentation sagt, dass es eine function strip_htmltags () gibt, aber ich bin nicht sicher, wie ich es im WordPress-Kontext verwenden kann. http://simplepie.org/wiki/reference/simplepie/strip_htmltags

Folgendes habe ich versucht, aber nicht funktioniert:

 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 Modifikationen"

SimplePie in WordPress verwendet die integrierte Kses-Bereinigung anstelle von SimplePies. Stattdessen können Sie nach wp_kses_allowed_html filtern und dort Ihre Elemente hinzufügen. Beachten Sie, dass dies für alle Post-Santisierungen und nicht nur für SimplePie passieren wird.

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

Wenn Sie dies nur für Feeds tun möchten, sollte etwas wie das Folgende funktionieren:

 /** * 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; }