条件不适用于Add_Filter

时间:2016-11-23 作者:DCdesign

我想应用条件,它只显示在页面上,但不起作用,怎么了?

    function luc_add_cutom_fields_to_content( $content ) {

    $custom_fields = get_post_custom();

    $content .= "<div class=\'cta-div\'>";

    if( isset( $custom_fields[\'luc_name\'] ) ) {
         $content .= \'<h3> \'. $custom_fields[\'luc_name\'][0] . \'</h3>\';
    }
    if( isset( $custom_fields[\'luc_description\'] ) ) {
         $content .= \'<p> \' . $custom_fields[\'luc_description\'][0] . \'</p>\';
    }
    if( isset( $custom_fields[\'luc_action\'] ) ) {
         $content .= \'<a href=" \' . $custom_fields[\'luc_link\'][0] . \' ">\' . $custom_fields[\'luc_action\'][0] . \'</a>\';
    }
    $content .= \'</div>\';

    return $content;
} 

if( is_page() ) {
add_filter( \'the_content\', \'luc_add_cutom_fields_to_content\' );
}

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

is_page() 需要WP_Query 我假设您的代码在此之前运行。您可以在过滤器回调中使用此函数:

add_filter(\'the_content\', function($c){
    return is_page() ? luc_add_cutom_fields_to_content($c) : $c;
});

SO网友:Benoti

也许过滤器启动得很好,但当前post和if没有全局范围(isset(…)无法执行。

在函数的顶部,可以使用get_post_meta()

 global $post;

 $custom_fields = get_post_meta($post->ID);

相关推荐

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

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