PHP,Wordpress - 用户信息未发送到用户配置文件

时间:2017-04-21 16:44:11

标签: php wordpress

我有一个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");
?>

0 个答案:

没有答案