过滤器Have_Post()/the_post()

时间:2011-07-06 作者:mike

过滤正在显示的帖子的最佳方式是什么?

例如在我的函数中。php文件

add_filter( $tag, \'filter_posts\');

function filter_posts(){

   if(is_home()){

   //return custom post query that will be used in loop
   }
}

2 个回复
最合适的回答,由SO网友:EAMann 整理而成

事实上,你走错了方向。不筛选中的帖子functions.php, 而是定义自定义循环和include them when needed.

在一个简化的示例中,假设您的主题只有header.php, footer.php, sidebar.php, 和index.php 对于结构文件。你的index.php 看起来像:

<?php get_header(); ?>

<div id="content">
    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
        <h2><?php the_title();?></h2>
        <div id="main">
            <?php the_content(); ?>
        </div>
    <?php endwhile; else: ?>
        <p><?php _e(\'Sorry, no posts matched your criteria.\'); ?></p>
    <?php endif; ?>
</div>

<?php get_sidebar(); ?>

<?php get_footer(); ?>
非常简单。您在外部文件中有一个页眉、一个侧边栏和一个页脚,并且在主文件中定义了主页内容。

但是,您可以在这里添加一些逻辑,而不是每次都包含一个通用循环,您可以为所有内容创建一个自定义循环。因此,你的index.php 看起来像:

<?php get_header(); ?>

<div id="content">
    <?php
    if( is_home() ) {
        get_template_part( \'loop\', \'home\' );
    } else if ( is_single() ) {
        get_template_part( \'loop\', \'single\' );
    } else {
        get_template_part( \'loop\' );
    }
    ?>
</div>

<?php get_sidebar(); ?>

<?php get_footer(); ?>
然后在中定义自定义循环loop-home.php, loop-single.php, 和loop.php. 这些自定义循环页面可以定义您可以想到的任何自定义查询。

SO网友:helgatheviking

请参阅codex中的自定义查询:http://codex.wordpress.org/Custom_Queries

类别排除是一个特别好的例子

结束

相关推荐

hooks & filters and variables

我是updating the codex page example for action hooks, 在游戏中完成一些可重用的功能(最初是针对这里的一些Q@WA)。但后来我遇到了一个以前没有意识到的问题:在挂接到一个函数以修改变量的输出后,我再也无法决定是要回显输出还是只返回它。The Problem: 我可以修改传递给do_action 用回调函数钩住。使用变量修改/添加的所有内容仅在回调函数中可用,但在do_action 在原始函数内部调用。很高兴:我将其修改为一个工作示例,因此您可以将其复制/粘贴