2016-04-23 30 views
4

Ich fragte mich, ob jemand mir helfen könnte.Wordpress - Bearbeiten der Plugin-Filter-Funktionalität

Ich habe ein Plugin namens Paid Memberships Pro.

Auf dem Anmeldeformular gibt es einige Felder, die ich machen möchte.

Ich habe durch den Code und fand den Ort gegangen, wo sie legt fest, welche Felder erforderlich sind, und nicht erforderlich ist, wie folgt:

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

Dieses in eines der Plugins Core-Dateien Plugins/paid-Mitgliedschaften gefunden -pro/preheaders/checkout.php

Ich möchte in der Lage sein, dies zu überschreiben, aber ich möchte nicht die Kerndateien bearbeiten, gibt es eine Möglichkeit, die ich über meine themes functions.php Datei bearbeiten kann?

Zum Beispiel, fügen Sie die bfirstname und blastname zu den $ pmpro_required_user_fields?

Jede Hilfe würde sehr geschätzt werden, ich habe gesucht, wie man das tut, aber ich kann nicht wirklich verstehen, wenn es möglich ist.

Dank all :)

+0

arbeitete ich glaube, Sie Klasse oder Funktion in Ihrem Thema Funktion außer Kraft setzen müssen –

Antwort

0

fand ich ein Stück Code, das perfekt

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

(Setzen Sie diesen Code in Ihrem Thema function.php Datei chid)

nicht sicher, aber man kann versuchen remove_filters zuerst zu verwenden:

remove_filters("pmpro_required_billing_fields", $pmpro_required_billing_fields); 
remove_filters("pmpro_required_billing_fields", $pmpro_required_user_fields); 

Dann können Sie diese Arrays klonen, sie anpassen (und deren Namen ein wenig ändern) und dann den Filter für diese benutzerdefinierten Arrays erneut anwenden:

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

Es ist nur eine unerprobte Idee, hoffe, es wird funktionieren.