1

我正在使用以下代码在 wordpress 的注册页面中添加名字和姓氏框。它被添加到我的主题 function.php 文件中并且工作正常,但是我想将它们添加到现有表单的顶部 - 而不是底部。任何人都可以帮我解决这个问题。

/*------- add first name to signup form -----------*/

//0. Style the new form elements...
add_action( 'wp_head', 'full_name_signup_stylesheet' );
function full_name_signup_stylesheet() {
?>
<style type="text/css">
.mu_register #first_name,
.mu_register #last_name { width:47%; font-size: 24px; margin:5px 5px 0px 0px; display:inline-block; float:left; position:relative;}
</style>

<?php
}

//1. Add a new form element...
add_action('signup_extra_fields','full_name_register_form');
function full_name_register_form ($errors)
{
// first_name
$first_name = ( isset( $_POST['first_name'] ) ) ? $_POST['first_name']: '';
    echo '<label for="first_name">' . __('First Name') . '</label>';
if ( $errmsg = $errors->get_error_message('first_name') ) {
    echo '<p class="error">'.$errmsg.'</p>';
}
echo '<input name="first_name" type="text" id="first_name" value="'. esc_attr($first_name) .'" maxlength="60" />';

// last_name
$last_name = ( isset( $_POST['last_name'] ) ) ? $_POST['last_name']: '';
    echo '<label for="last_name">' . __('Last Name') . '</label>';
if ( $errmsg = $errors->get_error_message('last_name') ) {
    echo '<p class="error">'.$errmsg.'</p>';
}
echo '<input name="last_name" type="text" id="last_name" value="'. esc_attr($last_name) .'" maxlength="60" />';
}

//2. Add validation. In this case, we make sure first_name is required.
add_filter('signup_user_init', 'full_name_signup_user_init', 10, 1);
function full_name_signup_user_init($arguments)
{
if ( isset( $_POST['signup_for'] ) ) {

// first_name
$errors = $arguments['errors'];
if ( empty( $_POST['first_name'] ) ) {
$errors->add( 'first_name', __('Please enter your first name.','') );
}
}

return $arguments;
}

//3. Finally, save our extra registration user meta.
add_action('add_signup_meta', 'full_name_add_signup_meta');
function full_name_add_signup_meta ($meta)
{
// first_name
if ( isset( $_POST['first_name'] ) ) {
$meta['first_name'] = $_POST['first_name'];
}

// last_name
if ( isset( $_POST['last_name'] ) ) {
$meta['last_name'] = $_POST['last_name'];
}

return $meta;
}
4

1 回答 1

1

如果您使用钩子*,它们会显示在顶部,但不可用:signup_hidden_fields $errors

add_action( 'signup_hidden_fields', 'full_name_register_form' );

function full_name_register_form ()
{
    // first_name
    $first_name = ( isset( $_POST['first_name'] ) ) ? $_POST['first_name']: '';
        echo '<label for="first_name">' . __('First Name') . '</label>';
    
    echo '<input name="first_name" type="text" id="first_name" value="'. esc_attr($first_name) .'" maxlength="60" />';

    // last_name
    $last_name = ( isset( $_POST['last_name'] ) ) ? $_POST['last_name']: '';
        echo '<label for="last_name">' . __('Last Name') . '</label>';
    
    echo '<input name="last_name" type="text" id="last_name" value="'. esc_attr($last_name) .'" maxlength="60" />';
}

*检查该文件是否有其他文件do_action,还有一些其他文件,但这完全取决于您的设置。

也检查一下

于 2014-04-17T11:51:03.987 回答