您好,我有一个网站和一个博客,我想在我的网站上显示我自己托管的wordpress博客。
如何做到这一点,我听说可以通过RSS完成。 有人可以帮帮我吗?
答案 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(' & ', ' & ', $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