Wie erstelle ich einen RSS Feed von den Inhalten auf dieser Seite?

Damit. Ich habe einen Gmail-RSS-Feed mit PHP erstellt, den ich auf einer benutzerdefinierten Seite platziert habe. Ich habe dieses Snippet verwendet:

function checkGmail($username, $password) { $url = "https://mail.google.com/mail/feed/atom"; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_USERPWD, $username . ":" . $password); curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($curl, CURLOPT_ENCODING, ""); $mailData = curl_exec($curl); curl_close($curl); return $mailData; } header('Content-Type:text/xml; charset=UTF-8'); $feed = checkGmail("mail@gmail.com", "password"); echo $feed; 

Und es gibt das XML auf meiner Site aus. Groß. Dann habe ich versucht, daraus einen validierten Feed zu erstellen, und hier stehe ich fest. Ich habe versucht, einen benutzerdefinierten RSS-Feed zu erstellen:

  add_action( 'after_setup_theme', 'my_rss_template' ); /** * Register custom RSS template. */ function my_rss_template() { add_feed( 'short', 'my_custom_rss_render' ); } /** * Custom RSS template callback. */ function my_custom_rss_render() { get_template_part( 'feed', 'short' ); } 

Dann habe ich versucht, alles durch http://website.com/?feed=feed-short zu nennen, aber es sagt etwas in den Zeilen nicht ein gültiges FeedTemplate. Es gibt den XML-Code auf der benutzerdefinierten Seite aus, wenn ich durch den Slug dorthin navigiere. Also, was mache ich hier?

Solutions Collecting From Web of "Wie erstelle ich einen RSS Feed von den Inhalten auf dieser Seite?"

Sie können einen Blick darauf casting

 ABSPATH . WPINC . 'feed-*.*'; 

um Beispiele zu sehen. WP-Core hat Feed-Tempeltes für die folgenden Protokolle:

  • Atom
  • RDF
  • RSS
  • RSS2

Wenn Sie ein Plugin schreiben, können Sie das folgende Schnell-Test-Plugin als Basis verwenden. Es fügt der Feedliste einen Feednamen als custom-feed hinzu.

 < ?php /* Plugin Name: (WPSE) #172796 Custom Feed */ add_action( 'init', function() { add_feed( 'custom-feed', function() { /** @var \WP_Query $wp_query */ global $wp_query; // Custom conditions when to output the feed - and when not if ( 'foo' !== get_query_var( 'name' ) ) return; load_template( plugin_dir_path( __FILE__ ).'templates/feed-rss2.php' ); } ); } ); 

Um einen schnellen Überblick über die Standardfeeds zu erhalten, lassen Sie sie einfach ablegen

 var_dump( $GLOBALS['wp_rewrite']->feeds ); 

Wenn Sie das oben genannte Test-Plugin aktivieren, sollten Sie den custom-feed als letzten Eintrag im Array finden.

Innerhalb von callbacken sollten Sie überprüfen, ob Sie tatsächlich an dem neuen benutzerdefinierten Feed arbeiten:

 $wp_query->is_feed( [ 'custom-feed', ] ); 

Um einen gültigen Feed zu erhalten, müssen Sie einen header festlegen. Core gefällt das Folgende:

 header( sprintf( 'Content-Type: %s; charset=%s', feed_content_type( 'rss-http' ), get_option( 'blog_charset' ) ), true ); 

Dann gibt es das eigentliche XML-Eröffnungs-Tag:

 echo '< ?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; 

Danach gibt es einen Ort, an dem sich Plugins einklinken können:

 do_action( 'rss_tag_pre', 'rss2' ); 

Schließlich gibt es das Tag-Öffnen und einen weiteren Hook, um benutzerdefinierte Namespaces hinzuzufügen

 do_action( 'rss2_ns' ); 

Die Liste geht weiter und weiter. Das Beste, was Sie tun können, ist, die coredateien als Blueprint für Ihre eigenen Feeds zu verwenden (kopieren Sie sie in Ihr Plugin und ändern Sie die Ausgabe).