网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > 网络知识 > 正文

Wordpress多站点buddypress首页调用全站文章新方法

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 14/06/30

【编者按】网学网网络知识频道为大家收集整理了“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 ))) :
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="blog-post-list" class="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="activity-title"><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" target="_blank"><?php the_title(); ?></a></h1>
<div class="activity-content">
<div class="activity-header">
<span><a href="<?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="<?php echo $blog_url; ?>" target="_blank"><?php echo $blog_name; ?></a></span>
<?php if($post->comment_count > 0)echo ''<span><a href="''.get_permalink().''#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);
echo wpautop($content);
?>
<p class="read-more"><a href="<?php the_permalink(); ?>" target="_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循环中使用的和文章相关的函数了。

  这一方法我从探索到实现花费了两天时间,主要困难在于理解buddypress的数据、函数等,同时还会遇到很多系统核心的问题,通过不同算法的尝试,最终确定了这种有效的调用方式。

  原文地址:http://www.utubon.com/222/

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号