您好,欢迎来到jQuery吧!QQ群:193687763(钱端开发)

jQuery吧-Write Less, Do More | 注重前端开发

首页 > PHP > wordpress教程技巧 > 正文

WordPress实现调用Discuz论坛文章

2015-05-21 11:05:37 作者:天外飞仙 人气:525 Views

WordPress实现调用Discuz论坛文章
WordPress实现调用Discuz论坛文章。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><a title=".$row[subject]." href=http://www.vpsko.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);

注:我自己利用这段代码,发现调用出来的中文文章乱码,后来把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><a title=".$row[subject]."href=http://www.vpsko.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 BYtid DESC LIMIT 0,10'

修改成

'SELECT `tid`, `subject` FROM `cdb_threads` WHERE `fid` in (1,2) ORDER BYtid DESC LIMIT 0,10'

同时把“http://论坛地址/read.php?tid”修改为“http://论坛地址/viewthread.php?tid”。
至此大功告成!

字符集编码不一致,可以用使用iconv函数转码。

链接:http://www.jqueryba.com/5601.html(转载时请注明本文出处及文章链接)
标签:

jQuery吧-Write Less, Do More | 注重前端开发

jQuery吧-Write Less, Do More | 注重前端开发

Copyright © 2013 jqueryba.com, All Rights Reserved.奔跑在阿里云

免责声明:本站所有内容来源于互联网。如果本站部分内容侵犯您的权益,请您告知,站长会立即处理 苏ICP备12059471号

站内所有资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您自己承担!