共计 3515 个字符,预计需要花费 9 分钟才能阅读完成。
上一篇讲过调用子站点的方法说明,这篇为大家分享其中一个 wordpress 多站点调用显示方法即调用子站点最新文章显示在主站上面,也就是每一个站点显示一篇最新的文章。
显示子站点的最新文章,总结了两种方法。第一种是从插件分解出来的,这个方法写的比较具体,但是代码量多一点,如下:
/*
参数说明
$how_many: 要显示的多少篇最新文章
$how_long: 显示时间区间 0 为禁止该功能
$titleonly: 如果是 true(只显示文章标题) 或 false(显示文章标题和站点名称)
$begin_wrap: 自定义 html 标签, 如:
$end_wrap: 自定义 html 标签, 如:
使用方法: wpmu_recent_posts_mu(5, 30, true, ‘
- ’, ‘
’);>> 在过去的 30 天显示最新的 5 篇文章, 并且只显示文章标题。
*/function wpmu_recent_posts_mu($how_many=10, $how_long=0, $titleonly=true, $begin_wrap=”n
- ”, $end_wrap=”
”) {
global $wpdb;
global $table_prefix;
$counter = 0;// 首先通过判断是否显示时间区间来分别使用不同的 sql 语句
if ($how_long > 0) {
$blogs = $wpdb->get_col(“select blog_id from $wpdb->blogs where
public = ‘1’ and archived = ‘0’ and mature = ‘0’ and spam = ‘0’ and deleted = ‘0’
and last_updated >= date_sub(current_date(), interval $how_long day)
order by last_updated desc”);
} else {
$blogs = $wpdb->get_col(“select blog_id from $wpdb->blogs where
public = ‘1’ and archived = ‘0’ and mature = ‘0’ and spam = ‘0’ and deleted = ‘0’
order by last_updated desc”);
}
// 如果存在多站点 id
if ($blogs) {echo “
”;
”;
foreach ($blogs as $blog) {
// 下面是需要使用的数据表
$blogoptionstable = $wpdb->base_prefix.$blog.”_options”;
$blogpoststable = $wpdb->base_prefix.$blog.”_posts”;
$options = $wpdb->get_results(“select option_value from
$blogoptionstable where option_name in (‘siteurl’,’blogname’)
order by option_name desc”);
// 为最新文章获取标题和 id 号
if ($how_long > 0) {
$thispost = $wpdb->get_results(“select id, post_title
from $blogpoststable where post_status = ‘publish’
and id > 1
and post_type = ‘post’
and post_date >= date_sub(current_date(), interval $how_long day)
order by id desc limit 0,1”);
} else {
$thispost = $wpdb->get_results(“select id, post_title
from $blogpoststable where post_status = ‘publish’
and id > 1
and post_type = ‘post’
order by id desc limit 0,1″);
}
// 如果存在将输入内容
if($thispost) {
// 获取子站点文章链接
$thispermalink = get_blog_permalink($blog, $thispost[0]->id);
if ($titleonly == false) {
echo $begin_wrap.'
by ’.$end_wrap;
$counter ;
} else {
echo $begin_wrap.'’.$end_wrap;
$counter ;
}
}
// 对文章数量进行判断。
if($counter >= $how_many) {
break;
}
}
echo “
}
}
将上面的方法放到你使用主题的 functions.php 文件里面,使用方法上面已有说明。如你有十个子站点。想显示这个十个子站点的最新文章,就可以使用上面的方法
’, ‘’); ?>
使用起来是不是比较简单呢!呵呵。
下面介绍第二种方法,假如你有 50 个子站点,而你控制显示的最新文章数量只是 10 篇,很有可能十几个用户在同时使用子站点发布文章,那这样的话有些最新文章得不到显示,所以考虑到随机显示子站点的最新文章。且每刷新一次页面都会随机显示不同的子站点文章代码如下:
/*
* 多站点函数方法
*
*$showpost 每个子站点显示的最新文章数量
*
* 使用方法 lei_multsite_recent_post(1) >> 每个子站点显示一篇最新文章
*/function lei_multsite_recent_post($showpost)
{
global $wpdb, $post, $table_prefix;// 首先将所有的子站点 id 号显示出来
’;
$most_post = $wpdb->get_col(“select blog_id from $wpdb->blogs where public = ‘1’
and archived = ‘0’
and mature = ‘0’
and spam = ‘0’
and deleted = ‘0’
order by last_updated desc”);
foreach ($most_post as $key => $v)
{
if($v !=1) // 除主站点 id
{
$b_id[$key] = $v;
}
}
$newid = array_flip($b_id); //php 数组函数对换键值
$new_post_id = array_rand($newid,2);
//php 数组函数随机显示 2 条,这里的数值不能大于你创建子站点的个数。
foreach ($new_post_id as $k => $vol)
{
$blogpoststable = $wpdb->base_prefix.$vol.”_posts”;
$recent_post = $wpdb->get_results(“select * from $blogpoststable where post_status = ‘publish’ and post_type = ‘post’ order by post_date desc limit 0,$showpost”);
foreach ($recent_post as $ks => $vs)
{
$thispermalink = get_blog_permalink($vol, $vs->id);
$count1 = 1;
echo ‘
}
}
}?>
将上面的方法同样放到你使用主题的 functions.php 文件里面,使用方法只要
就可以,比上面简洁了很多。
总结一下上面这两种方法,它们的区别一种是显示子站点的一篇最新文章,可以根据时间间隔来进行显示。第二种方法是随机显示子站点的个数,然后显示每一个子站点的最新文章,数量根据自己填写的数值来显示。也是说你可以显示对每个子站点显示的最新文章数量没有限制。
大家可以根据自己的需要来选择不同的方法,对代码熟悉的也可以发挥自己的点子将代码修改的更好一些,大家多多交流。希望大家多多支持!