在rss feed中调用php函数

时间:2018-05-14 07:22:33

标签: php xml wordpress rss

我有一个wordpress网站,我正在创建自己的RSS Feed。 我希望它每天更新。 我有一个php函数,它在functions.php中设置了feed的内容:

function get_daily_Fun_Fact(){
//checking if it is special day today - holiday/cat/dog days
$today=getdate(); 
$weekDay=$today['wday'];
$todays_date=date("Y-m-d");
$holiday_id = isHoliday($todays_date);

// check if today is a special day
$query = create_query($holiday_id,$weekDay);
$select_result = $wpdb->get_results($query);
$num_rows = $wpdb->num_rows;
if($num_rows!=NULL)
{
    foreach($select_result as $row){
    $fact = $row->fact; 
    $fact_id = $row->fact_id;
}   
echo $fact;
}

然后我有一个带有xml代码的模板文件,我想调用函数get_daily_Fun_Fact();所以每天都会更新一个新的$ fact。

    <?php
header('Content-Type: '.feed_content_type('rss-http').'; charset='.get_option('blog_charset'), true);
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>The Pet Wiki</title>
        <atom:link href="<?php self_link(); ?>" rel="self" type="application/rss+xml" />
        <link><?php bloginfo_rss('url') ?></link>
        <description>Animal Fun Facts</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', 'daily' ); ?></sy:updatePeriod>
        <sy:updateFrequency><?php echo apply_filters( 'rss_update_frequency', '1' ); ?></sy:updateFrequency>
        <?php do_action('rss2_head'); ?>
        <item>
            <title>
                <?php get_daily_Fun_Fact(); ?>
             </title>
                        <?php rss_enclosure(); ?>
                        <?php do_action('rss2_item'); ?>
        </item>

</channel>
</rss>

然而get_daily_Fun_Fact();发出错误 此页面包含以下错误: 第17行第21行的错误:文档末尾的额外内容 如何调用rss feed中的php函数并每天更新?

1 个答案:

答案 0 :(得分:0)

RSS提要是XML。如果要在不确保数据是有效XML的情况下在提要中包含字符数据,可以将其括在CDATA部分中。

如果 get_daily_fun_fact()返回HTML输出,您可以将其包含在具有此格式的RSS元素中:

<title>
  <![CDATA[<?php get_daily_Fun_Fact(); ?>]]>
</title>

CDATA部分以&lt;![CDATA [,以]结束]&gt; 开头,假设它们之间的所有内容都是字符数据而不是XML标记。< / p>