query post limits

时间:2014-09-05 作者:Tarida George

function posts_limit_fn($limit, $query, $custom_limit = \'\'){
    if($custom_limit !== \'\'){
        return $custom_limit;
    }
    return $limit;
}
这段代码被执行到AJAX函数中add_action(\'wp_ajax_search_query\', \'search_query\');

$queryString = array( \'s\' => $searchTerm, \'cat\' => $categoriesIDs, \'post__not_in\' => array($excludedPost));

if($queryString != \'\'){
    add_filter(\'post_limits\', \'posts_limit_fn\',10, 3);
    $custom_limit = \'LIMIT 0,4\';
    apply_filters(\'post_limits\', \'\', \'\', $custom_limit);

    $query = new WP_Query($queryString);
}
出于某种原因apply_filters 不起作用,因此查询将返回所有帖子。有什么问题吗?

更新时间:

似乎如果我有这样的东西:

function posts_limit_fn($limit,$query,$custom_limit = \'\'){
    echo $custom_limit.">>>>>>>";
    if($custom_limit !== \'\'){
        return \'LIMIT 0,3\';
    }
    return $limit;
}
输出为LIMIT 0,4>>>>>>>>>LIMIT 0,10>>>>>>>>>post1,post2,post3

1 个回复
最合适的回答,由SO网友:Tomás Cot 整理而成

的第三个参数add_filter 是执行过滤器的优先级,第四个是第二个参数中的函数使用的参数数。

这个wpcodex_filter_main_search_post_limits 函数有一个if,它使用两个wordpress函数来确定您在页面中执行代码的位置,在这种情况下,它检查是否在前端,是否是主查询,以及是否在搜索页面中。

参数$limit$query 由CMS传递,这些是默认值,因此如果不满足if中的条件,函数将返回默认值$limit

编辑:

function posts_limit_fn($limit, $query){
    return \'LIMIT 0, 3\';
}
add_filter(\'posts_limit\', \'posts_limit_fn\',10, 2);
编辑2:

如果不打算使用参数,可以使用如下函数:

global $custom_limit;
$custom_limit = \'0, 2\';
    function posts_limit_fn(){
            global $custom_limit
            return \'LIMIT \' . $custom_limit;
        }
add_filter(\'posts_limit\', \'posts_limit_fn\',10, 0);
这是一种方法。总是尝试在所有全局变量前面加前缀,如果可以避免,那就更好了。

编辑:不带全局变量

function posts_limit_fn($limit, $query, $custom_limit = \'\'){
                if($custom_limit !== \'\'){
                    return $custom_limit;
                }
                return $limit;
            }
    add_filter(\'posts_limit\', \'posts_limit_fn\',10, 3);
$custom_limit = \'LIMIT 0,4\';

apply_filters(\'posts_limit\', \'\', \'\', $custom_limit)

edit for WP_Query:

如果您正在使用WP_Query, 对于分页,可以传递paged 每个函数调用的参数。

结束

相关推荐

如果我将POSTS表中代表文章修订的所有行都删除到WordPress数据库中,会发生什么?

我对posts WordPress数据库的表。我看到,当我在这个表中创建一个新帖子时,会自动创建2个新行。32 1 2014-08-16 15:07:22 2014-08-16 15:07:22 TEST REVISION TEST REVISION inherit open open 31-revision-v1 2014-08-16 15:07:22 2014-08-16 15:07:22 31 http://localhost/w