本日专门研究了一下wordpress开通多站点成为一个博客群网站之后,安装buddypress成为社区,奈何挪用全站最新更新的内容到首页的问题。
在《wordpress多站点挪用全站所有子站点最新文章函数化》一文中给出一个利用数据库举办挪用,同时操作php遍历和冒泡较量的要领,得到了一个可以用来实现该成果的要领。可是这种操纵照旧存在一些不足全面的问题。我们在安装buddypress插件之后,整个博客成为一个社区,bp会为wordpress多站点成立一些新的数据表,以生存社区的信息,并有一些焦点函数,实现这些信息的挪用。
在buddypress中,利用
if(bp_has_activities(array('action' => 'new_blog_post','max' => get_option('posts_per_page'),'per_page' => get_option('posts_per_page'),'user_id' => 0,'scope' => false,'object' => false,'primary_id' => false ))) :while(bp_activities()) : bp_the_activity();
endwhile;
endif;
来实现如wordpress中query_posts();while(have_posts):the_post();endwhile;一样的文章轮回成果。在wordpress的LOOP中的$post换成了$activities_template->activity。我们可以操作内里的许多信息。
空话不多说,看看我是怎么实现多站点下全站最新文章挪用的:
$mu_posts = array();$i = 0;
if(bp_has_activities(array('action' => 'new_blog_post','max' => get_option('posts_per_page'),'per_page' => get_option('posts_per_page'),'user_id' => 0,'scope' => false,'object' => false,'primary_id' => false ))) :
while(bp_activities()) : bp_the_activity();
$mu_posts[$i]['blog_id'] = $activities_template->activity->item_id;
$mu_posts[$i]['post_id'] = $activities_template->activity->secondary_item_id;
$mu_posts[$i]['post_author'] = $activities_template->activity->user_nicename;
$i ++;//执行竣事后,i==1暗示有一篇文章,第一篇文章的下标为[0]
endwhile;
endif;
上面这段代码操作buddypress的特性,将一些信息记录在$mu_posts数组中。
<?php if(!empty($mu_posts)): ?><ul id=http://down.chinaz.com/try/201206/"blog-post-list" class=http://down.chinaz.com/try/201206/"activity-list item-list">
<?php foreach($mu_posts as $mu_post): ?>
<?php $blog_id = $mu_post['blog_id'];$post_id = $mu_post['post_id'];$post_author = $mu_post['post_author']; ?>
<?php $blog_name = get_blog_option($blog_id,'blogname');$blog_url = get_blog_option($blog_id,'siteurl'); ?>
<?php $post = get_blog_post($blog_id,$post_id);setup_postdata($post); ?>
<li>
<h1 class=http://down.chinaz.com/try/201206/"activity-title"><a href=http://down.chinaz.com/"<?php the_permalink(); ?>" title=http://down.chinaz.com/"<?php the_title(); ?>" target=http://down.chinaz.com/try/201206/"_blank"><?php the_title(); ?></a></h1>
<div class=http://down.chinaz.com/try/201206/"activity-content">
<div class=http://down.chinaz.com/try/201206/"activity-header">
<span><a href=http://down.chinaz.com/"<?php echo get_blog_option(1,'siteurl'); ?>/members/<?php echo $post_author; ?>/"><?php the_author(); ?></a></span>
<span><?php the_date(); ?></span>
宣布在站点
<span><a href=http://down.chinaz.com/"<?php echo $blog_url; ?>" target=http://down.chinaz.com/try/201206/"_blank"><?php echo $blog_name; ?></a></span>
<?php if($post->comment_count > 0)echo '<span><a href=http://down.chinaz.com/try/201206/"'.get_permalink().'#comment" target=http://down.chinaz.com/try/201206/"_blank">有评论'.$post->comment_count.'条</a></span>'; ?>
</div>
<div class=http://down.chinaz.com/try/201206/"activity-inner">
<?php
$content = get_the_content();
$content = strip_tags($content,'');
$content = trim(mb_strimwidth($content,0,500,'...'));
//$content = close_html_tags($content);
echo wpautop($content);
?>
<p class=http://down.chinaz.com/try/201206/"read-more"><a href=http://down.chinaz.com/"<?php the_permalink(); ?>" target=http://down.chinaz.com/try/201206/"_blank">查察原文</a></p>
</div>
</div>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
这一段代码可以放在上面那段代码之后,操作之前获取的信息,获得文章对应的$blog_id和$post_id,再团结wordpress多站点函数就能挪用出各类你想要的内容。参考站点:南昌大学“前湖之风”周末讲坛联结处博客系统
同时,这个处所还用到了setup_postdata($post);这个函数在wordpress中很少被重视,我们用get_post($post_id)获取一篇文章之后,可以操作setup_postdata($post);函数举办名目化,它后头就可以像wordpress中操作the_title()、the_content()等这样在loop轮回中利用的和文章相关的函数了。