Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Wordpress-编辑插件';s过滤器功能_Php_Wordpress_Field_Hook_Membership - Fatal编程技术网

Php Wordpress-编辑插件';s过滤器功能

Php Wordpress-编辑插件';s过滤器功能,php,wordpress,field,hook,membership,Php,Wordpress,Field,Hook,Membership,我想知道是否有人能帮我 我有一个插件叫付费会员专业版 在报名表上有一些我想成为必填字段的字段 我浏览了代码,找到了它设置哪些字段是必填字段和哪些字段不是必填字段的位置,如下所示: //require fields $pmpro_required_billing_fields = array( "bfirstname" => $bfirstname, "blastname" => $blastname, "baddress1" => $baddress1,

我想知道是否有人能帮我

我有一个插件叫付费会员专业版

在报名表上有一些我想成为必填字段的字段

我浏览了代码,找到了它设置哪些字段是必填字段和哪些字段不是必填字段的位置,如下所示:

//require fields
$pmpro_required_billing_fields = array(
    "bfirstname" => $bfirstname,
    "blastname" => $blastname,
    "baddress1" => $baddress1,
    "bcity" => $bcity,
    "bstate" => $bstate,
    "bzipcode" => $bzipcode,
    "bphone" => $bphone,
    "bcountry" => $bcountry,
    "bemail" => $bemail,
    "CardType" => $CardType,
    "AccountNumber" => $AccountNumber,
    "ExpirationMonth" => $ExpirationMonth,
    "ExpirationYear" => $ExpirationYear,
    "CVV" => $CVV
);
$pmpro_required_billing_fields = apply_filters("pmpro_required_billing_fields", $pmpro_required_billing_fields);
$pmpro_required_user_fields = array(
    "username" => $username,
    "password" => $password,
    "password2" => $password2,
    "bemail" => $bemail,
    "bconfirmemail" => $bconfirmemail
);
$pmpro_required_user_fields = apply_filters("pmpro_required_user_fields", $pmpro_required_user_fields);
这可以在插件核心文件plugins/paid memberships pro/preheaders/checkout.php中找到

我希望能够覆盖它,但我不想编辑核心文件,有没有办法通过我的themes functions.php文件编辑它

例如,将bfirstname和blastname添加到$pmpro_required_user_字段

任何帮助都将不胜感激,我一直在寻找如何做到这一点,但我真的无法理解这是否可能

谢谢大家:)

(将此代码放在chid theme function.php文件中)

不是舒尔,但您可以先尝试使用
remove\u过滤器

remove_filters("pmpro_required_billing_fields", $pmpro_required_billing_fields);
remove_filters("pmpro_required_billing_fields", $pmpro_required_user_fields);
然后,您可以克隆这些阵列,对其进行自定义(并稍微更改其名称),然后为该自定义阵列重新应用过滤器:

$pmpro_required_billing_fields2 = array(
    /* your custom code goes here */
);
$pmpro_required_billing_fields2 = apply_filters("pmpro_required_billing_fields", $pmpro_required_billing_fields2);

$pmpro_required_user_fields2 = array(
    /* your custom code goes here */
);
$pmpro_required_user_fields2 = apply_filters("pmpro_required_user_fields", $pmpro_required_user_fields2);

这只是一个未经测试的想法,希望它能起作用。

我发现了一段工作完美的代码

//make sure address fields are required
function my_pmpro_required_user_fields($fields)
{
    global $bfirstname, $blastname, $baddress1, $bcity, $bstate, $bzipcode, $bcountry, $bphone, $bemail;
    $fields["bfirstname"] = $bfirstname;
    $fields["blastname"] = $blastname;
    $fields["baddress1"] = $baddress1;
    $fields["bcity"] = $bcity;
    $fields["bstate"] = $bstate;
    $fields["bzipcode"] = $bzipcode;
    $fields["bphone"] = $bphone;
    $fields["bemail"] = $bemail;
    $fields["bcountry"] = $bcountry;
    return $fields;
}
add_action("pmpro_required_user_fields", "my_pmpro_required_user_fields");

/*
 * Save billing fields when using PayPal
 */
function my_pmpro_paypalexpress_session_vars() {
    $_SESSION['bfirstname'] = $_REQUEST['bfirstname'];
    $_SESSION['blastname'] = $_REQUEST['blastname'];
    $_SESSION['baddress1'] = $_REQUEST['baddress1'];
    $_SESSION['baddress2'] = $_REQUEST['baddress2'];
    $_SESSION['bcity'] = $_REQUEST['bcity'];
    $_SESSION['bstate'] = $_REQUEST['bstate'];
    $_SESSION['bzipcode'] = $_REQUEST['bzipcode'];
    $_SESSION['bphone'] = $_REQUEST['bphone'];
    $_SESSION['bemail'] = $_REQUEST['bemail'];
    $_SESSION['bcountry'] = $_REQUEST['bcountry'];
}
add_action('pmpro_paypalexpress_session_vars', 'my_pmpro_paypalexpress_session_vars');

//load vars back into $_REQUEST
function my_init() {
if(!empty($_REQUEST['review']) && !empty($_REQUEST['token'])) {
    $_REQUEST['bfirstname'] = $_SESSION['bfirstname'];
    $_REQUEST['blastname'] = $_SESSION['blastname'];
    $_REQUEST['baddress1'] = $_SESSION['baddress1'];
    $_REQUEST['baddress2'] = $_SESSION['baddress2'];
    $_REQUEST['bcity'] = $_SESSION['bcity'];
    $_REQUEST['bstate'] = $_SESSION['bstate'];
    $_REQUEST['bzipcode'] = $_SESSION['bzipcode'];
    $_REQUEST['bphone'] = $_SESSION['bphone'];
    $_REQUEST['bemail'] = $_SESSION['bemail'];
    $_REQUEST['bcountry'] = $_SESSION['bcountry'];
}
}
add_action('init', 'my_init');

如果有人仍然需要此项-在这种情况下,最佳做法是使用
pmpro\u required\u user\u字段
pmpro\u required\u billing\u字段
过滤器,具体取决于您想要设置为required的字段-user或billing字段

因此,例如,如果您需要一个计费电话(
bphone
)字段,这将完成以下工作:

add_filter( "pmpro_required_billing_fields", 'yourtheme_require_phone' );
function yourtheme_require_phone($pmpro_required_user_fields) {

  global $bphone;

  $pmpro_required_user_fields["bphone"] = $bphone;

  return $pmpro_required_user_fields;
}

我认为您需要重写主题函数中的类或函数