2016-04-23 4 views
4

Мне было интересно, может ли кто-нибудь помочь мне.Wordpress - Редактирование функциональности фильтра плагина

У меня есть плагин под названием Платный членство Pro.

В форме регистрации есть поля, которые я хочу сделать необходимыми.

Я прошел через код и нашел место, где он устанавливает, какие поля являются обязательными и не требуется, как показано ниже:

//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); 

Это находится в одном из плагинов основных файлов плагинов/оплаченный членским составом -pro/preheaders/checkout.php

Я хочу, чтобы иметь возможность переопределить это, но я не хочу редактировать основные файлы, есть ли способ, которым я могу редактировать это через мои темы functions.php-файл?

Например, добавьте bfirstname и blastname в число $ pmpro_required_user_fields?

Любая помощь была бы принята с благодарностью, я искал, как это сделать, но я не могу понять, возможно ли это.

Спасибо всем :)

+0

я думаю, что вам нужно переопределить класс или функцию в функции темы –

ответ

0

я нашел кусок кода, который работал отлично

//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'); 
1

(Поместите этот код в файле чида темы function.php)

Не уверен, но вы можете попробовать использовать remove_filters первые:

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); 

Это просто непроверенная идея, надеюсь, что это сработает.

Смежные вопросы