填写您的邮件地址,订阅我们的精彩内容:

wordpress开通多站点之后调用全站博客最新文章最热文章到网站首页

724

wordpress multisite 多站点群站建设服务

更新:在《wordpress多站点调用全站所有子站点最新文章函数化》一文中,笔者已经更新了首页调用多站点子站点最新博客的方法,本文可以作为开发思路查看,文章中使用到的guid获取文章链接的方法不建议使用。

————————

wordpress进入3.0之后拥有了开通多站点的功能,wordpress mu从此退出舞台,mulitisite成为wordpress多站点的主角。但开通多站点之后,虽然可以建立很多博客,却不能将各个博客和博主的信息调用的首页,增加社区性。为此,出现了比较强大的buddypress插件,启动该插件之后,wordpress就可以一个社区一样,交换各个博客之间的数据了。但对于不喜欢华丽和功能太多插件的朋友来说,如果再启用buddypress,又要自己去熟悉buddypress的功能,还要研究其源码以实现自己的想法,这实在太痛苦了,不过我还是忍不住,研究了一下,最后写了一篇wordpress多站点buddypress首页调用全站文章新方法,希望对那些有强迫症的朋友有所帮助。

很多朋友对WordPress多站点可谓情有独钟,我个人认为对于热爱WP的朋友而言是很幸福的。而且WP官方提供了一套可以运行的函数,点击这里阅读。同时,我也发现很多朋友也专门来研究WPMU,这里就有一个。

为了让没有安装buddypress的朋友也能调用其他博客的文章和数据,我写了以下的代码,它包括了调用了其他站的最新最热博客,调用了新开通用户和新开通博客。你可以直接稍微修改后将这些代码放在现在的主题首页的适合的地方,也可以只截取其中的片段来使用,已达到自己的目的。好了,源码如下:

/*
* 作者:否子戈
* 代码来源:http://www.utubon.com/display-information-from-other-blogs-in-multisite/
* 使用方法:将下面的所有代码包含在一个你想打印出群站更新列表的模板中,一般是index.php或home.php
*/

require_once(ABSPATH.'/wp-config.php');

global $wpdb;

$mysql_connect = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD);
if(!$mysql_connect)wp_die('Could not connect: '.mysql_error());
mysql_select_db(DB_NAME,$mysql_connect);

$db_tables = mysql_query('show tables');
$db_table_num = mysql_num_rows($db_tables);
$db_table_name = array();
for($i=0;$i<$num;$i++){
?? ?$db_table_name[] = mysql_tablename($db_tables,$i);
}//将所有表名存放在$table_name数组中;

$site_num = 1;
$post_table = array();
for($i=0;$i<$db_table_num;$i++){
?? ?if(in_array( $wpdb->prefix.$i.'_posts',$table_name )){
?? ??? ?$post_table[] = $wpdb->prefix.$i.'_posts';
?? ??? ?$site_num ++;
?? ?}
}

function showtable(){
??? global $site_num,$post_table;
??? $showtable='';
??? for($i=1;$i<$site_num;$i++){
?? ??? ?$showtable .= "SELECT * FROM {$post_table[$i]} WHERE post_status='publish' AND post_type='post' UNION ALL ";
??? }
??? return $showtable;
}

?>

<div id="mu_all_post">
??? <h3>最新博客</h3>
??? <?php
??? $sql = showtable()."SELECT * FROM wp_posts WHERE post_status='publish' AND post_type='post' ORDER BY `post_date` DESC LIMIT 0,30 ";
??? $result = mysql_query($sql,$mysql_connect);
??? $count = mysql_affected_rows();
??? for($i=0;$i<$count;$i++){
?? ???? $post_title = mysql_result($result,$i,'post_title');
?? ???? $post_date = mysql_result($result,$i,'post_date');
?? ???? $post_author_id = mysql_result($result,$i,'post_author');
?? ???? $post_date_gmt = mysql_result($result,$i,'post_date_gmt');
?? ???? $post_content = mysql_result($result,$i,'post_content');
?? ???? $post_excerpt = mysql_result($result,$i,'post_excerpt');
?? ???? $comment_count = mysql_result($result,$i,'comment_count');
?? ???? $guid = mysql_result($result,$i,'guid');
?? ???? ?><li><a href="<?php echo $guid; ?>"><?php echo $post_title; ?></a>(作者:<?php the_author_meta('user_nicename',$post_author_id); ?> 发表时间:<?php echo $post_date; ?> 评论数:<?php echo $comment_count; ?>)</li><?
??? }
??? ?>
??? <h3>最热博客</h3>
??? <?php
??? $sql = showtable()."SELECT * FROM wp_posts WHERE post_status='publish' AND post_type='post' ORDER BY `comment_count` DESC LIMIT 0,30 ";
??? $result = mysql_query($sql,$mysql_connect);
??? $count = mysql_affected_rows();
??? for($i=0;$i<$count;$i++){
?? ???? $post_title = mysql_result($result,$i,'post_title');
?? ???? $post_date = mysql_result($result,$i,'post_date');
?? ???? $post_author_id = mysql_result($result,$i,'post_author');
?? ???? $post_date_gmt = mysql_result($result,$i,'post_date_gmt');
?? ???? $post_content = mysql_result($result,$i,'post_content');
?? ???? $post_excerpt = mysql_result($result,$i,'post_excerpt');
?? ???? $comment_count = mysql_result($result,$i,'comment_count');
?? ???? $guid = mysql_result($result,$i,'guid');
?? ???? ?><li><a href="<?php echo $guid; ?>"><?php echo $post_title; ?></a>(作者:<?php the_author_meta('user_nicename',$post_author_id); ?> 发表时间:<?php echo $post_date; ?> 评论数:<?php echo $comment_count; ?>)</li><?
??? }
??? ?>
</div>

注意:这段代码使用了guid字段,我们都知道,这个字段是被我们开发者所嫌弃的字段,一般都不会用到,只有特殊情况下会调用。它记录的是文章生成时产生的绝对可以访问地址URL。如果网站域名一旦更换,这个地址就不能访问了。所以这种方法是不严谨的,为此,我又写了wordpress多站点调用全站所有子站点最新文章函数化一文,使用php数组冒泡的方法,优化了这个功能。

需要强调的是该方法纯属调用数据库的范例,你可以将其中的某些片段换成wp函数,但我并不确定你能成功,因为wordpress多站点下的数据库表及其复杂,只能通过表名的相似性进行恰当的检索。

朋友写过一篇关于调用分站点信息的文章,请看这里:http://www.chinaapp.org/wordpress-mu-data.html

好了,wordpress开通多站点之后调用全站博客信息的方法先介绍到这里,希望对你有用。<完>

下面我简单说几句