我有一个Wordpress网站,添加了会员插件。最初,插件只捕获用户名/密码才能注册。我们希望获取更多信息,因为这与WooCommerce无关。找到了一个示例php文件,我完成了它以捕获我们想要的客户信息(见下文)。
注册表中的所有这些新字段都是必需的。但是,问题是当用户尝试升级其成员资格时,他们不能。他们会收到一条错误消息,上面写着“需要地址,城市,州等”。表格已经消失了 - 因为他们已登录 - 但仍然需要这些字段。为了解决这个问题,我将代码的结尾放在for循环中,如下所示:
if ( is_user_logged_in() ) {
echo '';
}
else {
foreach($fields as $field)
pmprorh_add_registration_field(
"after_password", // location on checkout page
$field // PMProRH_Field object
);
}
目前的问题是,新字段不已添加到用户的个人资料中。我仍然可以通过导出Excel电子表格看到输入的信息,但是Wordpress不会捕获此信息并将其放在用户的个人资料中这一事实有点可怕。
有没有更好的方法来编码,以便(1.)所有信息都传递给用户的个人资料,我可以在网站的管理员端看到它,(2)如果他们尝试,用户不会收到任何错误升级会员帐户?
代码如下。谢谢!
<?php
/*
Plugin Name: Register Helper Example
Plugin URI: http://www.paidmembershipspro.com/wp/pmpro-customizations/
Description: Register Helper Initialization Example
Version: .1
Author: Stranger Studios
Author URI: http://www.strangerstudios.com
*/
//we have to put everything in a function called on init, so we are sure
//Register Helper is loaded
function my_pmprorh_init()
{
//don't break if Register Helper is not loaded
if(!function_exists("pmprorh_add_registration_field"))
{
return false;
}
//define the fields
$fields = array();
$fields[] = new PMProRH_Field(
"Birthday", // input name, will also be used as meta
"select", //type of field
array(
"required"=>"true", //required and mark it as such
"profile"=>true,
"memberslistcsv"=>true,
"label"=>"Birthday",
"options"=>array( // <option> elements for select field
"" => "", // blank option - cannot be selected if this
//field is required
"January"=>"January", // <option
value="January">January</option>
"February"=>"February", // <option
value="February">February</option>
"March"=>"March", // <option value="March">March</option>
"April"=>"April", // <option value="April">April</option>
"May"=>"May", // <option value="May">May</option>
"June"=>"June", // <option value="June">June</option>
"July"=>"July", // <option value="July">July</option>
"August"=>"August", // <option value="August">August</option>
"September"=>"September", // <option
value="September">September</option>
"October"=>"October", // <option
value="February">February</option>
"November"=>"November", // <option
value="November">November</option>
"December"=>"December" // <option
value="December">December</option>
)));
$fields[] = new PMProRH_Field(
"firstname", // input name, will also be used as meta
"text", // type of field
array(
"label"=>"First Name:", //displays the field's label
"size"=>20, // input size
"class"=>"firstname", // custom class
"profile"=>true, // show in user profile
"required"=>true, // make this field required
"memberslistcsv"=>true
));
$fields[] = new PMProRH_Field(
"lastname",
"text",
array(
"label"=>"Last Name:",
"size"=>20,
"class"=>"lastname",
"profile"=>true,
"required"=>true,
"memberslistcsv"=>true
));
$fields[] = new PMProRH_Field(
"address",
"text",
array(
"label"=>"Address:",
"size"=>20,
"class"=>"address",
"profile"=>true,
"required"=>true,
"memberslistcsv"=>true
));
$fields[] = new PMProRH_Field(
"address2",
"text",
array(
"label"=>"Address Line 2:",
"size"=>20,
"class"=>"address2",
"profile"=>true,
"memberslistcsv"=>true
));
$fields[] = new PMProRH_Field(
"City",
"text",
array(
"label"=>"City:",
"size"=>20,
"class"=>"city",
"profile"=>true,
"required"=>true,
"memberslistcsv"=>true
));
$fields[] = new PMProRH_Field(
"State",
"text",
array(
"label"=>"State:",
"size"=>5,
"class"=>"astate",
"profile"=>true,
"required"=>true,
"memberslistcsv"=>true
));
$fields[] = new PMProRH_Field(
"Zip",
"text",
array(
"label"=>"Zip Code:",
"size"=>10,
"class"=>"zipcode",
"profile"=>true,
"required"=>true,
"memberslistcsv"=>true
));
/*add the fields into a new checkout_boxes area of the checkout page.
fields only appear if user is not logged in.
this is done to prevent required fields from being hidden.*/
if ( is_user_logged_in() ) {
echo '';
}
else {
foreach($fields as $field)
pmprorh_add_registration_field(
"after_password", // location on checkout page
$field // PMProRH_Field object
);
}
add_action("init", "my_pmprorh_init");
?>