按页面ID有条件地添加过滤器

时间:2016-08-20 作者:Jarod Thornton

我创建了一个函数来向正文中添加一个类,但是if应该只应用于一个页面ID。这通常不会是一个问题,但会破坏其他页面的布局。

Filter Function

add_filter(\'body_class\',\'add_blog_to_body_class\');

function add_blog_to_body_class($classes) {
    $classes[] = \'blog\';
        return $classes;
}

My Condition (that isn\'t working)

function add_blog_to_body_class($classes) {
    $classes[] = \'blog\';
    if ( is_page(\'ID\') ) {
        return $classes;
    }
}
我已经包装了整个函数,声明add_filter 胡克,一切都没有运气。

如何在单个页面ID上使用此函数?

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

重要的是always return the value 在过滤器回调中,否则就像添加__return_null() 回调。

下面的示例添加了blog 仅对ID为40的页面初始化:

add_filter( \'body_class\', \'add_blog_to_body_class\' );

function add_blog_to_body_class( $classes )
{
    if ( is_page( 40 ) )
        $classes[] = \'blog\';

    return $classes;
}

相关推荐

Apply_Filters()对所需的参数进行切片

我正在尝试向WooCommerce订单中的每个退款行添加一个按钮(其功能超出了这个问题的范围,足以说明它需要退款id作为参数)。我发现这些行是在woocommerce\\includes\\admin\\meta Box\\views\\html订单退款中创建的。无法重写的php。然而,有一项行动:do_action( \'woocommerce_admin_order_item_values\', null, $refund, $refund->get_id() ); 这似乎非常适合我的