Wie kann ich den RSS-Feed für eine benutzerdefinierte Seite abrufen?

Ich habe eine benutzerdefinierte Seite in meinem Blog, die keinen RSS-Feed anzeigt. Sie können den Code hier für die benutzerdefinierte Seite sehen. Ich bin mir nicht sicher, was ich tun muss, um RSS-Feeds für jeden einzelnen Beitrag auf dieser Seite zu erstellen. Ich bin nicht viel in PHP selbst, also wird jede Hilfe geschätzt.

Solutions Collecting From Web of "Wie kann ich den RSS-Feed für eine benutzerdefinierte Seite abrufen?"

Sie können Ihre eigenen Feeds in WordPress erstellen.

Fügen Sie dies zu functions.php hinzu:

function my_customfeed() { load_template( TEMPLATEPATH . 'your-customfeed.php'); } add_action('do_feed_customfeed', 'my_customfeed', 10, 1); 

Dies aktiviert einen neuen Feed namens customfeed.

Jetzt können Sie your-customfeed.php in Ihrem Themenverzeichnis für den neuen rss erstellen. Um die Sache zu vereinfachen, können Sie die Vorlage rss2 wordpress aus /wp-includes/feed-rss2.php kopieren und mit dem Code Ihrer benutzerdefinierten Seite anpassen.

Dann können Sie Ihren neuen Feed mit http://yoursite.com/?feed=customfeed aufrufen.

customfeed kann ein beliebiger eindeutiger Name sein, den du magst, stell aber sicher, dass du an allen diesen Stellen ersetzt wirst, einschließlich des Aktionsnamens do_feed_customfeed.

ANDERE METHODE (muss nicht in functions.php Code hinzufügen)

Eine einfachere Möglichkeit besteht darin, eine Vorlage für den Feed wie folgt zu erstellen:

 < ?php /* Template Name: My Custom Feed */ $posts = query_posts(array('post_type' => 'project', 'posts_per_page' => get_wizy('portfolio_num_projects'))); include('wp-includes/feed-rss2.php'); ?> 

Erstellen Sie dann eine leere Seite in WordPress (es könnte alles benannt werden, wie Mein benutzerdefinierter Feed) und in der Seitenleiste wählen Sie die Vorlage, die Sie erstellt haben (es hat den gleichen Namen, hat es in Template Name geschrieben: ..).

Wenn Sie nun zur URL der gerade erstellten Seite gehen, haben Sie Ihren Feed.

WordPress kann per Hook einen neuen Feed erstellen, aber der Inhalt und das Format des Feeds ist in deinen Todos.

Sehen Sie das folgende Plugin, erstellen Sie einen Feed für Entwürfe von Beitragstyp post in WordPress und Sie finden diesen Feed auf der URL example.com/?feed=drafts Die wichtigsten drafts kommt von der init in diesem Plugin add_feed( 'drafts', array( $this, 'get_draft_feed') ); . Der Inhalt und das XML-Markup stammen aus der Methode get_draft_feed .

 < ?php /** * Plugin Name: Drafts Feed * Plugin URI: http://bueltge.de/wordpress-feed-fuer-entwuerfe/829/ * Description: Add a new Feed for drafts: /?feed=drafts * Version: 1.0.0 * Author: Frank Bültge * Author URI: http://bueltge.de/ * Licence: GPLv3 * Last Change: 12/20/2012 */ //avoid direct calls to this file, because now WP core and framework has been used if ( ! function_exists( 'add_filter' ) ) { header('Status: 403 Forbidden'); header('HTTP/1.1 403 Forbidden'); exit(); } if ( ! class_exists( 'Draft_Feed' ) ) { add_action( 'plugins_loaded', array( 'Draft_Feed', 'init' ) ); class Draft_Feed { protected static $classobj = NULL; /** * Handler for the action 'init'. Instantiates this class. * * @access public * @return $classobj */ public static function init() { NULL === self::$classobj and self::$classobj = new self(); return self::$classobj; } /** * Constructor, init in WP * * @return void */ public function __construct() { add_action( 'init', array(&$this, 'add_draft_feed') ); if ( is_admin() ) { add_action( 'wp_dashboard_setup', array( $this, 'add_dashboard_widget') ); add_action( 'admin_head', array( $this, 'add_my_css') ); add_action( 'admin_init', array( $this, 'textdomain') ); } } /** * Load language file for translations * * @return void */ public function textdomain() { load_plugin_textdomain( 'draft_feed', FALSE, dirname( plugin_basename(__FILE__) ) . '/languages' ); } /** * Return the drafts * * @param Integer $post_per_page for count of drafts * @return Array */ public function get_drafts( $posts_per_page = 5 ) { $drafts_query = new WP_Query( array( 'post_type' => 'post', 'post_status' => 'draft', 'posts_per_page' => $posts_per_page, 'orderby' => 'modified', 'order' => 'DESC' ) ); return $drafts_query->posts; } /** * Get dashbaord content * * @param Array $drafts * @return void */ public function dashboard_recent_drafts( $drafts = FALSE ) { if ( $drafts ) return; $drafts = $this->get_drafts(); if ( $drafts && is_array( $drafts ) ) { $list = array(); foreach ( $drafts as $draft ) { $url = get_edit_post_link( $draft->ID ); $title = _draft_or_post_title( $draft->ID ); $user = get_userdata($draft->post_author); $author = $user->display_name; $item = '' . $title . ' ' . __( 'by', 'draft_feed' ) . ' ' . stripslashes( apply_filters( 'comment_author', $author ) ) . ' ' . get_the_time( get_option( 'date_format' ), $draft ) . ''; $list[] = $item; } ?> 
  • < ?php echo join( "
  • \n
  • ", $list ); ?>

< ?php _e( 'View all', 'draft_feed' ); ?>

< ?php } else { _e( 'There are no drafts at the moment', 'draft_feed' ); } } /** * Add Dashbaord widget * * @return void */ public function add_dashboard_widget() { wp_add_dashboard_widget( 'dashboard_recent_drafts', __( 'Recents Drafts', 'draft_feed' ) . ' ' . __( 'of all authors', 'draft_feed' ) . '', array( $this, 'dashboard_recent_drafts') ); } /** * Add custom css, inline * * @return String $output */ public function add_my_css() { $output = ''; $output .= "\n"; $output .= ''."\n"; echo $output; } /** * Add feed with key 'drafts' * * @return void */ public function add_draft_feed() { // set name for the feed // http://examble.com/?feed=drafts add_feed( 'drafts', array( $this, 'get_draft_feed') ); } /** * Create RSS2 feed * * @return void */ public function get_draft_feed() { $items = $this->get_drafts( 20 ); if ( ! headers_sent() ) header( 'Content-Type: text/xml; charset=' . get_option( 'blog_charset' ), TRUE ); $more = 1; echo '< ?xml version="1.0" encoding="' . get_option( 'blog_charset' ) . '"?' . '>'; ?> > < ?php bloginfo_rss( 'name' ); wp_title_rss(); ?> < ?php bloginfo_rss( 'url' ) ?> < ?php bloginfo_rss( 'description' ) ?> < ?php echo mysql2date( 'D, d MYH:i:s +0000', get_lastpostmodified('GMT'), false ); ?> http://bueltge.de/ < ?php echo get_option( 'rss_language' ); ?> < ?php echo apply_filters( 'rss_update_period', 'hourly' ); ?> < ?php echo apply_filters( 'rss_update_frequency', '1' ); ?> < ?php do_action('rss2_head'); ?> < ?php if ( empty($items) ) { echo ''; } else { foreach ($items as $item) { ?> < ?php echo stripslashes( apply_filters( 'comment_author', $item->post_title ) ); ?> < ?php echo stripslashes( apply_filters( 'comment_author_url', get_permalink($item->ID) ) ); ?> < ?php echo mysql2date( 'D, d MYH:i:s +0000', $item->post_date ); ?> < ?php echo stripslashes( apply_filters('comment_author', $item->post_author) ); ?> < ?php echo stripslashes( apply_filters('comment_author_url', $item->guid) ); ?> < ?php if ( $item->post_excerpt != '' ) { ?> < ![CDATA[post_excerpt) ) ); ?>]]> < ?php } else { ?> < ![CDATA[post_content) ) ) ); ?>]]> < ?php } ?> < ![CDATA[post_content ) ) ); ?>]]> < ?php do_action( 'rss2_item' ); ?> < ?php } } ?> < ?php } } // end class } // end if class exists