如何显示WordPress RSS提供您的网站?

时间:2012-02-10 07:33:13

标签: wordpress rss

您好,我有一个网站和一个博客,我想在我的网站上显示我自己托管的wordpress博客。

  1. 我想在我的网站上只显示3条帖子。
  2. 每次重新加载我的网站时,我都想自动检查任何新帖子,以便最近的三个只显示。
  3. 我想要显示我的wordpress博客文章的完整标题,但要显示具体的描述信。
  4. 此外,描述最后应该是一个单词,而不是以“......”
  5. 结尾的某些非字典单词

    如何做到这一点,我听说可以通过RSS完成。 有人可以帮帮我吗?

3 个答案:

答案 0 :(得分:5)

要完成此操作,您需要阅读博客的RSS,您需要阅读标题和说明,阅读完整的描述和标题后,您需要将描述修剪为所需的字母数。在那之后你需要检查天气描述最后一个单词是否已经完成,然后你需要删除最后一个单词,如果没有完成并放上“......”。

首先,我们将制作一个脚本来修剪描述并将“...”放在最后: -

<?php
global $text, $maxchar, $end;
function substrwords($text, $maxchar, $end='...') {
    if (strlen($text) > $maxchar || $text == '') {
        $words = preg_split('/\s/', $text);      
        $output = '';
        $i      = 0;
        while (1) {
            $length = strlen($output)+strlen($words[$i]);
            if ($length > $maxchar) {
                break;
            } 
            else {
                $output .= " " . $words[$i];
                ++$i;
            }
        }
        $output .= $end;
    } 
    else {
        $output = $text;
    }
    return $output;
}

现在我们将定义存储值的变量: -

$xml=("http://your-blog-path/rss/");
global $item_title, $item_link, $item_description;

$xmlDoc = new DOMDocument();

$xmlDoc->load($xml);

$x=$xmlDoc->getElementsByTagName('item');

现在,我们将创建一个数组并在其中存储值。我只拿3分,因为你问路了。您可以将其更改为任何内容(您要显示的帖子数,将其放入循环中)

for ($i=0; $i<3; $i++)

{

$item_title[$i] = $x->item($i)->getElementsByTagName('title')->item(0)->childNodes->item(0)->nodeValue;

$item_link[$i] = $x->item($i)->getElementsByTagName('link')->item(0)->childNodes->item(0)->nodeValue;

$item_description[$i] = $x->item($i)->getElementsByTagName('description')->item(0)->childNodes->item(0)->nodeValue;

}

?>

现在回显所有这些值,Link是您的用户点击的值,他将被带到您的博客: -

首次发布的帖子:

<a href="<?php echo $item_link[0]; ?>"><?php echo $item_title[0]; ?></a>
<?php echo substrwords($item_description[0],70); ?>

第二次近期发布:

<a href="<?php echo $item_link[1]; ?>"><?php echo $item_title[1]; ?></a>
<?php echo substrwords($item_description[1],70); ?>

第三次发布:

<a href="<?php echo $item_link[2]; ?>"><?php echo $item_title[2]; ?></a>
<?php echo substrwords($item_description[2],70); ?>

希望这可以解决您的问题。顺便问一下尼斯的问题。

答案 1 :(得分:3)

Click here获取有关使用PHP显示RSS源的原始文档。

Django Anonymous的substrwords函数用于修剪描述,并在描述末​​尾插入...,如果它通过$maxchar值。


完整代码:

blog.php的

<?php
    global $text, $maxchar, $end;
    function substrwords($text, $maxchar, $end='...') {
        if (strlen($text) > $maxchar || $text == '') {
            $words = preg_split('/\s/', $text);      
            $output = '';
            $i      = 0;
            while (1) {
                $length = strlen($output)+strlen($words[$i]);
                if ($length > $maxchar) {
                    break;
                } else {
                    $output .= " " . $words[$i];
                    ++$i;
                }
            }
            $output .= $end;
        } else {
            $output = $text;
        }
        return $output;
    }

    $rss = new DOMDocument();
    $rss->load('http://wordpress.org/news/feed/'); // <-- Change feed to your site
    $feed = array();
    foreach ($rss->getElementsByTagName('item') as $node) {
        $item = array ( 
            'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
            'desc' => $node->getElementsByTagName('description')->item(0)->nodeValue,
            'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,
            'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue,
        );
        array_push($feed, $item);
    }

    $limit = 3; // <-- Change the number of posts shown
    for ($x=0; $x<$limit; $x++) {
        $title = str_replace(' & ', ' &amp; ', $feed[$x]['title']);
        $link = $feed[$x]['link'];
        $description = $feed[$x]['desc'];
        $description = substrwords($description, 100);
        $date = date('l F d, Y', strtotime($feed[$x]['date']));
        echo '<p><strong><a href="'.$link.'" title="'.$title.'">'.$title.'</a></strong><br />';
        echo '<small><em>Posted on '.$date.'</em></small></p>';
        echo '<p>'.$description.'</p>';
    }
?>

您可以轻松地将其放在单独的PHP文件(blog.php)中,并在实际页面中调用它。

示例:

social.php

<h3>Latest blog post:</h3>
<?php require 'blog.php' ?>

此外,此代码是即插即用的。

答案 2 :(得分:0)

为什么不使用Wordpress REST API来检索帖子 -

API网址为:https://public-api.wordpress.com/rest/v1/sites/ $ site / posts /

其中$ site是您的wordpress博客的网站ID

或者只是使用这个插件 -

http://www.codehandling.com/2013/07/wordpress-feeds-on-your-website-with.html