Cum să creezi fluxuri RSS suplimentare cu text integral
Cu riscul de a părea complet ridicol, postez această întrebare aici deoarece natura cererii mele nu pare să mă ajute prea mult pe Google.
Fluxurile RSS implicite din WordPress folosesc rezumatul articolului. Acest flux este accesat prin www.domeniulmeu.com/feed
Am nevoie să creez un alt flux RSS care să conțină textul integral. Cum pot crea un flux RSS suplimentar (care este privat/accesibil doar de persoane de încredere)? De preferat folosind o funcție, dar un plugin (ca ultimă soluție).
Iată cum să creezi un feed personalizat:
mai întâi creează un fișier nou în directorul temei tale, numește-l your-custom-feed.php
și pune acest cod în interior
<?php
/**
* Feed RSS personalizat.
*
* @package WordPress
*/
header('Content-Type: ' . feed_content_type('rss-http') . '; charset=' . get_option('blog_charset'), true);
$more = 1;
echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
<rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
<?php do_action('rss2_ns'); ?>
>
<channel>
<title><?php bloginfo_rss('name'); wp_title_rss(); ?></title>
<atom:link href="<?php self_link(); ?>" rel="self" type="application/rss+xml" />
<link><?php bloginfo_rss('url') ?></link>
<description><?php bloginfo_rss("description") ?></description>
<lastBuildDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_lastpostmodified('GMT'), false); ?></lastBuildDate>
<language><?php echo get_option('rss_language'); ?></language>
<sy:updatePeriod><?php echo apply_filters( 'rss_update_period', 'hourly' ); ?></sy:updatePeriod>
<sy:updateFrequency><?php echo apply_filters( 'rss_update_frequency', '1' ); ?></sy:updateFrequency>
<?php do_action('rss2_head'); ?>
<?php while( have_posts()) : the_post(); ?>
<item>
<title><?php the_title_rss() ?></title>
<link><?php the_permalink_rss() ?></link>
<comments><?php comments_link_feed(); ?></comments>
<pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_post_time('Y-m-d H:i:s', true), false); ?></pubDate>
<dc:creator><?php the_author() ?></dc:creator>
<?php the_category_rss('rss2') ?>
<guid isPermaLink="false"><?php the_guid(); ?></guid>
<description><![CDATA[<?php the_excerpt_rss() ?>]]></description>
<?php if ( strlen( $post->post_content ) > 0 ) : ?>
<content:encoded><![CDATA[<?php the_content_feed('rss2') ?>]]></content:encoded>
<?php else : ?>
<content:encoded><![CDATA[<?php the_excerpt_rss() ?>]]></content:encoded>
<?php endif; ?>
<wfw:commentRss><?php echo esc_url( get_post_comments_feed_link(null, 'rss2') ); ?></wfw:commentRss>
<slash:comments><?php echo get_comments_number(); ?></slash:comments>
<?php rss_enclosure(); ?>
<?php do_action('rss2_item'); ?>
</item>
<?php endwhile; ?>
</channel>
</rss>
apoi adaugă o funcție simplă pentru a încărca acel fișier șablon folosind do_feed_$hook
//încarcă șablonul feed-ului
function create_my_customfeed() {
load_template( TEMPLATEPATH . 'your-custom-feed.php');
}
add_action('do_feed_mycustomfeed', 'create_my_customfeed', 10, 1);
Acum când accesezi http://yoursite.com/?feed=mycustomfeed
vei obține un feed cu text complet, indiferent de ce ai definit în administrarea WordPress.
Bonus
dacă dorești să creezi o regulă de rescriere pentru feed-ul tău personalizat, astfel încât URL-ul să poată fi:
http://yoursite.com/mycustomfeed.xml
precum și
http://yoursite.com/feed/mycustomfeed/
adaugă acest cod în fișierul functions.php:
//creează regulă de rescriere pentru feed
function custom_feed_rewrite($wp_rewrite) {
$feed_rules = array('feed/(.+)' => 'index.php?feed=' . $wp_rewrite->preg_index(1),'(.+).xml' => 'index.php?feed='. $wp_rewrite->preg_index(1));
$wp_rewrite->rules = $feed_rules + $wp_rewrite->rules;
}

Mulțumesc pentru acest tutorial minunat. Când creez fișierul (full-feed.php) și îl apelez la mysite.com/?feed=full-feed primesc următoarea eroare
ERROR: full-feed is not a valid feed template.

Desigur, presupun că acest cod se adaugă în functions.php, dar care fișier trebuie apelat? Există deja un /feed care merge implicit cu excerpt-ul obișnuit. Deci trebuie un alt fișier sau un alt nume care trebuie apelat??
