如果博客文章属于某个类别,我想从主页上删除它们。我如何在Buddypress中实现这一点(最好没有插件)?
在BuddyPress中过滤主页帖子
如果您的意思是按博客文章类别过滤主页活动流,则不可能使用BuddyPress模板中的任何内置标记、函数或查询。我为同样的问题挣扎了几个月,最终放弃了。如果有人能证明我错了,我希望听到解决方案。
如果您不使用主页上的活动流,您可以使用WP_Query 类来筛选帖子。
我在活动流中过滤博客帖子的用例是为每个帖子类别提供单独的活动流页面。
我能找到的最接近的东西是BuddyPress Links Plugin 它创建了一个使用类别的链接帖子类型,并将其集成到BuddyPress活动流中,但需要进行大量定制才能使其按我所希望的方式工作。
Boone Gorges\'s (BuddyPress Lead Developer) reply to a support forum topic about using custom post types with BuddyPress:
BP中并没有为自定义支付类型内置任何支持,但支持它们与支持BP中其他类型的自定义内容没有什么不同。有关将自定义内容集成到BP导航等方面的指导,请参见BuddyPress骨架组件。在接下来的几周里,我可能会开发一个新插件,为BP中的自定义帖子类型支持提供一个框架(前端编辑、集成到nav菜单等)。在过去的几个月里,我不得不为一些客户做这样的事情,我想我对一些好的策略有一定的了解。
我还在WordCamp上与Boone进行了长时间的交谈,讨论了如何将自定义元或类别添加到BuddyPress组件中,并使用元来过滤活动流。他说这是可以做到的,但它必须完全从头开始编码,而且不是BuddyPress的原生支持。他还表示,实现这一点的最佳方法是创建一个新的自定义BuddyPress组件。
你能解释一下你想做得更好一点的是什么吗。您想从某些用户筛选某些类别,还是从所有用户筛选某些类别?
编辑:这里有一些我在上面找到的项目。
现在我还没有试着看看这是否有效,因为我目前没有一个buddypress站点可以处理,要想得到一个测试站点并了解您的设置需要很多时间
最难的是下载这个插件Front Page Category Filter 并从中提取代码found here):
通过在模板中使用这些循环,您可以输出任何类型的信息,并真正自定义内容在BuddyPress主题中的显示方式。
默认BuddyPress主题(/wp content/themes/bp default)使用BuddyPress中可用的所有自定义循环。它提供了一个在实际使用情况中使用循环的好例子。
您可以在BuddyPress主题中使用WordPress自定义循环,只要它使用它们。
You can find the WordPress loop\'s codex page by clicking here 和the one you specifically need by click here
以下是您需要的代码:
以下行<?php if ( is_home() ) {
帮助buddypress确定这只需要在主页上进行。
<?php if ( is_home() ) { query_posts($query_string . \'&cat=-3,-8\');} ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<div class="post">
<!-- Display the Title as a link to the Post\'s permalink. -->
<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
<!-- Display the date (November 16th, 2009 format) and a link to other posts by this posts author. -->
<small><?php the_time(\'F jS, Y\') ?> by <?php the_author_posts_link() ?></small>
<div class="entry">
<?php the_content(); ?>
</div>
<p class="postmetadata">Posted in <?php the_category(\', \'); ?></p>
</div> <!-- closes the first div box -->
<?php endwhile; else: ?>
<p>Sorry, no posts matched your criteria.</p>
<?php endif; ?>