天天看点

WordPress调用Discuz论坛文章最符合SEO的方法WordPress调用Discuz论坛文章最符合SEO的方法

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/

继续阅读