WordPress多站点中的条件重力表单过滤器

时间:2016-07-25 作者:whakawaehere

我正在使用这种技术:https://stackoverflow.com/questions/27323460/how-to-label-payments-in-gravity-forms-paypal-pro

从重力表单向paypal注释字段添加注释。然而,它是一种多站点配置。我想修改它,使过滤器只在blog\\u id 2上触发

什么是使这个条件化的正确方法?

非常感谢。

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

根据@jdm2112的响应,我做了以下工作:

add_filter(\'gform_paypalpaymentspro_args_before_payment\',\'add_donation_comment\', 10, 2 );
function add_donation_comment( $args, $form_id ) { // do not edit $args or $form_id
    global $blog_id; // Make this available to the function

    // Apply filter only if blog id is 2
    if ( 2 == $blog_id ) {

        // apply to form 1 only
        if ( 1 == $form_id ) { // Replace \'1\' with your form id
                $args["COMMENT1"] = \'Field Project\'; // Comment1 is the arg that paypal pro uses. 
        }
        // apply to form 2 only
        if ( 2 == $form_id ) { // Replace \'2\' with your form id
                $args["COMMENT1"] = \'Help Us Grow\';
        }
        // always return the args, even if not changing anything 
        return $args;

    }       

    else {

        // always return the args, even if not changing anything 
        return $args;

    }

SO网友:jdm2112

使用您在问题中链接的答案中的代码(目前尚未测试):

add_filter( \'gform_paypalpaymentspro_args_before_payment\',\'add_donation_comment\', 10, 2 );
function add_donation_comment( $args, $form_id ) { // do not edit $args or $form_id
    global $blog_id; // Make this available to the function

    // Apply filter only if blog id is 2
    if ( 2 !== $blog_id ) {
        return $args;
    }       

    // apply to form 1 only
    if ( 1 == $form_id ) { // Replace \'1\' with your form id
            $args["COMMENT1"] = \'Field Project\'; // Comment1 is the arg that paypal pro uses. 
    }
    // apply to form 2 only
    if ( 2 == $form_id ) { // Replace \'2\' with your form id
            $args["COMMENT1"] = \'Help Us Grow\';
    }
    // always return the args, even if not changing anything 
    return $args;
}
添加global $blog_id 行使此WP值可用于函数。如您所知,它在多站点安装中存储站点ID#,允许您在网络中的特定站点上应用过滤器。

第二个加法只是对该值的测试,以Yoda condition. 如果此功能在任何其他站点上执行,则$args 数组返回时保持不变。

此代码的其余部分与您引用的答案完全相同。

注意:我现在无法测试,但如果您有任何问题,我将稍后提供。干杯