使用CURRENT_POST的POST_CLASS过滤器的自定义查询不起作用

时间:2015-07-11 作者:Andrew

我在存档页面上有一个新的WP\\U查询。我还有一个post\\u类过滤器,有条件地添加一个first 因此,我可以可靠地按3行显示它们。

这是post\\u类筛选器

function sm_inline_post_class( $classes ) {
    global $wp_query;

    if( 0 == $wp_query->current_post || 0 == $wp_query->current_post % 3 )
        $classes[] = \'first\';

    return $classes;
}
add_filter( \'post_class\', \'sm_inline_post_class\' );
这对于默认查询很好,但是first 类不会应用于自定义查询中的帖子。

如何有条件地将post类应用于自定义查询的条目?

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

您正在使用全局$wp_query 不是您的自定义查询。要么宣布你的全球太像global $wp_query_archives 然后在sm_inline_post_class 在意识到使用全局变量的缺点或做一些类似的工作时进行回调:

$class = sm_inline_post_class( array(), $my_custom_query );
然后通过$class 作为您的post_class 调用(我想象您正在存档页面上使用此功能)。

然后,修改sm_inline_post_class 功能如下:

function sm_inline_post_class( $classes, $query = null ) {
    global $wp_query;

    $query = ( $query == null ) ? $wp_query : $query;

    if( 0 == $query->current_post || 0 == $query->current_post % 3 ) {
         $classes[] = \'first\';

    return $classes;
}
但是,如果您使用自定义设置,则始终可以“先”附加到您WP_Query 嵌套在$wp_query 正好有current_post 设置为3的倍数。

更安全的选择是使用不同的函数来获取类名:

$class = custom_inline_post_class( array(), $my_custom_query );

function custom_inline_post_class( $classes, $query ) {
    if( 0 == $query->current_post || 0 == $query->current_post % 3 ) {
         $classes[] = \'first\';

    return $classes;
}

结束

相关推荐

Search with filters and title

我想搜索custom_post 按标题和ACF字段。所以,我用了WP_Query WordPress函数,但我不能按标题过滤,只能按过滤器过滤。当我提交表单时,我有这样的URL:http://example.com/?s=titre&filter1=condition1&filter2=condition2&filter3=condition3 我的代码:$title = $_GET[\'s\']; $args = array( \'pagenam