如何使用2个修改后的订阅源模板?

时间:2016-09-02 作者:gulliver

我一直在使用添加的函数加载修改后的rss模板。工作正常,但现在我需要为CPT添加一个自定义模板。

我为每一个都编写了代码,可以正常工作,但不能一起使用,因为一个凌驾于另一个之上。

我对php了解不够,无法修改。

这是我正在使用的代码。。。

remove_all_actions( \'do_feed_rss2\' );
add_action( \'do_feed_rss2\', function() {
if ( $rss_template = locate_template( \'/feeds/notes-feed.php\' ) )
load_template( $rss_template );
else
do_feed_rss2(); // Call default function
}, 10, 1 );
以及

remove_all_actions( \'do_feed_rss2\' );
add_action( \'do_feed_rss2\', \'item_feed_rss2\', 10, 1 );
function item_feed_rss2() {
$rss_template = get_template_directory() . \'/feeds/item-feed.php\';
if( get_query_var( \'post_type\' ) == \'item\' and file_exists(      $rss_template ) )
load_template( $rss_template );
else
do_feed_rss2(); // Call default function
知道的还不够,我想知道我是否可以用这个。。。

remove_all_actions( \'do_feed_rss2\' );
add_action( \'do_feed_rss2\', \'item_feed_rss2\', 10, 1 );
function item_feed_rss2() {
$rss_template = get_template_directory() . \'/feeds/item-feed.php\';
$rss_template_notes = get_template_directory() . \'/feeds/notes-feed.php\';
if( get_query_var( \'post_type\' ) == \'item\' and file_exists( $rss_template ) )
load_template( $rss_template );
elseif( get_query_var( \'post\' ) and file_exists( $rss_template_notes ) )
load_template( $rss_template_notes );
else
do_feed_rss2(); // Call default function  

2 个回复
SO网友:gulliver

回答我自己的问题,我会加上这个,以防对某人有用。

它似乎可以与…

// This delivers valid feeds, with the correct templates.
remove_all_actions( \'do_feed_rss2\' );
add_action( \'do_feed_rss2\', function() {
$rss_template = get_template_directory() . \'/feeds/item-feed.php\';
$rss_template2 = get_template_directory() . \'/feeds/notes-feed.php\';
//if ( $post_type = \'item\'  )
if( get_query_var( \'post_type\' ) == \'item\' and file_exists($rss_template ) )
load_template($rss_template);
elseif ( $post_type = \'post\' )
load_template($rss_template2);
else
do_feed_rss2(); // Call default function
}, 10, 1 );
这样就可以为普通帖子的提要使用自定义模板,并为CPT“item”的提要使用不同的自定义模板。

这些提要在频道标题/链接/描述方面有所不同。

SO网友:Rarst

将两者的逻辑结合在一起即可。:)

使用单个回调并根据当前上下文使用一个模板或另一个模板重写。

另一种选择是处理模板内部的差异,这不是我最喜欢的方法,但有些人更喜欢。

相关推荐

显示RSS提要中自定义帖子中的自定义域

我已经为此挣扎了几天,但仍然不知道该怎么做。我想做的是在RSS提要中添加一个自定义表字段,所以我使用代码片段来解决这个问题。下面是我的nw,但我相信我已经尝试了所有可能的组合,我可以在WP site.function featuredtoRSS($content) { if ( has_post_thumbnail( $post->ID ) && get_post_type() == \'product\'){ global $wpdb;