вызов функции php внутри RSS-канала - PullRequest
0 голосов
/ 14 мая 2018

У меня есть WordPress-сайт, и я создаю свой собственный RSS-канал.Я хотел бы, чтобы это обновлялось ежедневно.У меня есть функция php, которая устанавливает содержимое канала в functions.php:

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 ();так что каждый день он обновляется с новым $ фактом.

    <?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(); выдает ошибку. Эта страница содержит следующие ошибки: ошибка в строке 21 в столбце 17: дополнительное содержимое в конце документа как позвонитьФункция php в RSS-канал и обновлять его ежедневно?

1 Ответ

0 голосов
/ 21 мая 2018

RSS-каналы в формате XML.Если вы хотите включить символьные данные в фид, не убедившись, что данные являются действительными XML, вы можете заключить их в раздел CDATA.

Если get_daily_fun_fact () возвращает вывод HTML, вы можетевключите это в элемент RSS с этим форматированием:

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

Раздел CDATA начинается с Все, что между ними, считается символьными данными вместо разметки XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...