Wordpress多站点buddypress首页调用全站文章新方法今天专门研究了一下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))) :whi le(bp_activities()) :bp_the_activity();endwhi le;endif;
来实现如wordpress中query_posts();whi le(have_posts):the_post();endwhi le;一样的文章循环功能。在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))) :whi le(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]endwhi le;endif;
上面这段代码利用buddypress的特性将一些信息记录在$mu_posts数组中。
?php if( !empty($mu_posts)): ?ul id="blog-post-l ist"class="activity-l ist item-l ist"
?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); ?l i h1 class="activity-title"a href="?php the_permal ink(); ?" title="?php the_title(); ?"target="_blank"?phpthe_title(); ?/a/h1div class="activity-content"
div class="activity-header"spana href="?php echo get_blog_option(1,'siteurl '); ?/members/?php echo $post_author; ?/"?phpthe_author(); ?/a/span span?phpthe_date(); ?/span
发布在站点spana href="?php echo$blog_url; ?" target="_blank"?php echo$blog_name; ?/a/span ?php if($post-comment_count 0)echo 'spana href="' .get_permal ink(). '#comment"target="_blank"有评论' .$post-comment_count. '条/a/span'; ?
/div div class="activity-inner"
?php
$content=get_the_content();
$content=strip_tags($content,' ');
$content=trim(mb_strimwidth($content,0,500,' '));
//$content=close_html_tags($content);echowpautop($content);
?p class="read-more"a href="?php the_permal ink(); ?" target="_blank"查看原文/a/p
/div
/div
/l i
?phpendforeach; ?
/ul
?phpendif; ?
这一段代码可以放在上面那段代码之后利用之前获取的信息得到文章对应的$blog_id和$post_id再结合wordpress多站点函数就能调用出各种你想要的内容。参考站点南昌大学“前湖之风”周末讲坛联络处博客系统
同时这个地方还用到了setup_postdata($post);这个函数在wordpress中很少被重视我们用get_post($post_id)获取一篇文章之后可以利用setup_postdata($post);函数进行格式化它后面就可以像wordpress中利用the_title()、the_content()等这样在loop循环中使用的和文章相关的函数了。
这一方法我从探索到实现花费了两天时间主要困难在于理解buddypress的数据、函数等同时还会遇到很多系统核心的问题通过不同算法的尝试最终确定了这种有效的调用方式。
hostslim美国独立日活动正在进行中,针对一款大硬盘荷兰专用服务器:双E5-2620v2/4x 1TB SATA硬盘,活动价60美元月。HostSlim荷兰服务器允许大人内容,不过只支持电汇、信用卡和比特币付款,商家支持7天内退款保证,有需要欧洲服务器的可以入手试试,记得注册的时候选择中国,这样不用交20%的税。hostslim怎么样?HostSlim是一家成立于2008年的荷兰托管服务器商,...
4324云是成立于2012年的老牌商家,主要经营国内服务器资源,是目前国内实力很强的商家,从价格上就可以看出来商家实力,这次商家给大家带来了全网最便宜的物理服务器。只能说用叹为观止形容。官网地址 点击进入由于是活动套餐 本款产品需要联系QQ客服 购买 QQ 800083597 QQ 2772347271CPU内存硬盘带宽IP防御价格e5 2630 12核16GBSSD 500GB30M1个IP...
TmhHost 商家是一家成立于2019年的国人主机品牌。目前主营的是美国VPS以及美国、香港、韩国、菲律宾的独立服务器等,其中VPS业务涵盖香港CN2、香港NTT、美国CN2回程高防、美国CN2 GIA、日本软银、韩国cn2等,均为亚太中国直连优质线路,TmhHost提供全中文界面,支持支付宝付款。 TmhHost黑五优惠活动发布了,全场云服务器、独立服务器提供8折,另有充值返现、特价服务器促销...