http://blog.epinv.com/post/264.html
2011年10月29日 BY 北极寒流
WordPress调用Discuz论坛文章最符合SEO的方法
WordPress调用Discuz论坛文章最符合SEO的方法。WordPress对于广大博主来说应该都很了解了。WordPress是世界上使用最多的搭建博客的开源程序,很多个人独立博客都是用WordPress的。有时候自己弄了一个博客,又折腾了一个Discuz论坛,就想把Discuz论坛的文章能在wordpress上展示出来。这样调用论坛里面的帖子可以达到全站更新的目的。虽然Discuz提供了JS调用方案,但是大家都知道,JS调用是非常不符合SEO优化的,调用过来的东西搜索引擎抓取不到,对你的wordpress网站是没有任何用处的。
虽然WordPress调用Discuz的方法多种多样,但是这里提供的方法是最好也是最有效的方法,我们把它称为WordPress调用Discuz的终极方法。代码如下:
<ul>
<?php
//截取utf8字符串
function utf8Substring($str, $from, $len){
return preg_replace(‘#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,’.$from.’}’.
‘((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,’.$len.’}).*#s’,’$1′,$str);
}
//建立数据库链接
$conn = @mysql_connect(“localhost”, “数据库用户名”, “数据库密码”) or die(“数据库链接错误”);
//指定要链接的数据库
mysql_select_db(“数据库”, $conn);
//使用UTF-8中文编码;
mysql_query(“set names ‘UTF-8′”);
//指定版块的所有文章中取10条最新帖子
$SQL=”SELECT tid,subject FROM 表名 where fid in (版块1,版块2……) ORDER BY tid DESC LIMIT 0,10″;
$query=mysql_query($SQL);
//循环显示结果
while($row=mysql_fetch_array($query)){
echo “<li><span class=titlel><a class=title title=”.$row[subject].” href=http://www.seo-amoy.com/seo/seo-“.$row[tid].”-1-1.html target=_blank>”.
utf8Substring($row[subject], 0, 40).”</a></span></li>”;
}
//关闭链接
mysql_close($conn);
?>
</ul>
如果调用的时候出现了错误试着把上面代码的如下部分删除:
//关闭链接
mysql_close($conn);
来源:http://www.seo-amoy.com/seo/seo-12-1-1.html
注:我自己利用这段代码,发现调用出来的中文文章乱码,后来把mysql_query(“set names ‘UTF-8′”); 改成mysql_query(“set names ‘UTF8′”);
解决问题。
附录的另外一段代码
<ul>
<?php
//截取utf8字符串
function utf8Substring($str, $from, $len){
return preg_replace(‘#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,’.$from.’}’.
‘((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,’.$len.’}).*#s’,’$1′,$str);
}
//建立数据库链接
$conn = @mysql_connect(“localhost”, “数据库用户名”, “数据库密码”) or die(“数据库链接错误”);
//指定要链接的数据库
mysql_select_db(“数据库”, $conn);
//使用UTF-8中文编码;
mysql_query(“set names ‘UTF-8′”);
//指定版块的所有文章中取10条最新帖子
$SQL=”SELECT tid,subject FROM 表名 where fid in (2,37,38,39,40,41,42,43,44,45) ORDER BY tid DESC LIMIT 0,10″;
$query=mysql_query($SQL);
//循环显示结果
while($row=mysql_fetch_array($query)){
echo “<li><span class=titlel><a class=title title=”.$row[subject].”href=http://www.pmpwhy.com/thread-“.$row[tid].”-1-1.html target=_blank>”.
utf8Substring($row[subject], 0, 40).”</a></span></li>”;
}
//关闭链接
mysql_close($conn);
?>
</ul>
wordpress调用phpwind或discuz论坛指定版块帖子
动手前,需要确认两项:1.wordpress和phpwind是否公用一个数据库;2.使用的字符集编码是否一致。
这里我的情况是,wordpress和phpwind各用一个数据库,用的都是UTF-8字符集。如果看这篇文章的你和我情况不一样,请酌情修改。
$connbbs = mysql_connect(“localhost”, “数据库用户”, “数据库密码”)
or die(“数据库链接错误”);
mysql_select_db(“数据库名”, $connbbs);
mysql_query(“set names ‘UTF8′”);
$sql = ‘SELECT `tid`, `subject` FROM `pw_threads` WHERE `fid` in (1,2) ORDER BY tid DESC LIMIT 0,10’;
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)){
echo “<li><a href=http://论坛地址/read.php?tid=”.$row[tid].” target=_blank>”.$row[subject].” </a></li>”;}
mysql_close($connbbs);
我这里是调取的论坛版块ID=1和2的最新贴10篇,phpwind数据库表使用的默认前缀pw_,使用时候根据自己需要修改相关参数。
如果wordpress和phpwind在同一数据库内,那就更方便了,可直接使用wordpress自带的wpdb操作数据库。
$bbsposts = $wpdb->get_results(‘SELECT `tid`, `subject` FROM `pw_threads` WHERE `fid` in (1,2) ORDER BY tid DESC LIMIT 0,10’);
foreach($bbsposts as $bbspost) {
echo(‘<li><a href=http://论坛地址/read.php?tid=’ . $bbspost->tid . ‘ target=_blank>’ . $bbspost->subject . ‘</a></li>’);
以上就是phpwind指定版块的最新贴调用方法,接下来说一下discuz的调用,非常简单,改一下那句SQL。
‘SELECT `tid`, `subject` FROM `pw_threads` WHERE `fid` in (1,2) ORDER BY
tid DESC LIMIT 0,10’
修改成
‘SELECT `tid`, `subject` FROM `cdb_threads` WHERE `fid` in (1,2) ORDER BY
tid DESC LIMIT 0,10’
同时把“http://论坛地址/read.php?tid”修改为“http://论坛地址/viewthread.php?tid”。
至此大功告成!
字符集编码不一致,可以用使用iconv函数转码。这里我就不再多花时间说明了
来源:http://soho.emegami.com/computer/wordpress-call-phpwind-discuz-posts/