注册表:在默认字段前添加自定义字段

时间:2016-08-09 作者:trainoasis

我知道如何通过register\\u form挂钩向WP register表单添加自定义字段。但这会在表单末尾添加新字段。如何在表单的开头移动此字段?

示例:

function mytheme_register_form() 
{
    $first_name = ( ! empty( $_POST[\'first_name\'] ) ) ? trim( $_POST[\'first_name\'] ) : \'\';

    ?>
    <p>
        <label for="first_name"><?php _e( \'Your name\', \'mytheme\' ) ?><br />
            <input type="text" name="first_name" id="first_name" class="input" value="<?php echo esc_attr( wp_unslash( $first_name ) ); ?>" size="25" />
        </label>
           </p>
    <?php
}
add_action( \'register_form\', \'mytheme_register_form\' );

https://codex.wordpress.org/Plugin_API/Action_Reference/register_form

2 个回复
最合适的回答,由SO网友:Krzysztof Grabania 整理而成

你不能,因为wp-login.php 结构以下是代码register_form 挂钩:

<form name="registerform" id="registerform" action="<?php echo esc_url( site_url( \'wp-login.php?action=register\', \'login_post\' ) ); ?>" method="post" novalidate="novalidate">
    <p>
        <label for="user_login"><?php _e(\'Username\') ?><br />
        <input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr(wp_unslash($user_login)); ?>" size="20" /></label>
    </p>
    <p>
        <label for="user_email"><?php _e(\'Email\') ?><br />
        <input type="email" name="user_email" id="user_email" class="input" value="<?php echo esc_attr( wp_unslash( $user_email ) ); ?>" size="25" /></label>
    </p>
    <?php
    /**
     * Fires following the \'Email\' field in the user registration form.
     *
     * @since 2.1.0
     */
    do_action( \'register_form\' );
    ?>
    <p id="reg_passmail"><?php _e( \'Registration confirmation will be emailed to you.\' ); ?></p>
    <br class="clear" />
    <input type="hidden" name="redirect_to" value="<?php echo esc_attr( $redirect_to ); ?>" />
    <p class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="<?php esc_attr_e(\'Register\'); ?>" /></p>
</form>

SO网友:Betty

我刚刚想出了一个方法来实现这一点。

register_form 第页,第二个示例(在您给出的示例之后)是关于使用输出缓冲更改寄存器形式的。这个例子实际上有一些拼写错误,不起作用,但我们可以使用这个想法。

以下代码应起作用:

function my_register_form() {

   $content = ob_get_contents();
   $my_content = \'<label for="first_name">First name<br />
                    <input type="text" name="first_name" id="first_name" class="input" value="" size="25" />
                    </label>
                    </p><p>
                    <label for="user_login">\';
   $content = str_replace ( \'<label for="user_login">\', $my_content, $content );

   ob_get_clean();
   echo $content;
}
add_action( \'register_form\', \'my_register_form\' );

相关推荐

Wodpress XML Import hooks

要将来自给定远程站点的帖子合并到给定类别下的一个站点中,我如何挂接导入插件以保存给定类别的帖子:给出的示例:接收方站点具有类别auto 我想从(例如)导入所有帖子auto.com 在下面this category. 如果远程帖子有另一个类别auto 添加为子级。应该下载内部帖子图片,更新帖子内的所有链接,因此我已经找到了一个核心方法,下面是我尝试的方法,但我认为这可以变得更简单<?php if (!class_exists(\'Wp_Http\')) in