用户配置文件/添加自定义域

时间:2012-01-18 作者:Steven Doran

您好:我正在尝试向标准Wordpress wp管理/配置文件添加7个自定义字段。php页面。有几个网站建议使用一些简单的代码来实现这一点,例如:

http://wpengineer.com/2173/custom-fields-wordpress-user-profile/

但是,我希望能够添加我的自定义字段,以便它们正好显示在“传记信息”框的下方和“更改密码”字段的上方。我阅读和尝试过的所有内容都会在页面底部放置自定义字段,但我希望它们出现在“传记信息”框之间和“更改密码”字段上方。

我该怎么做?有可能吗?这是否也涉及到使用javascript?请告知。非常感谢。

4 个回复
SO网友:Hameedullah Khan

WordPress无法在用户的简历和密码之间添加字段,但正如您所说的,您可以通过javascript方式来完成。下面是添加单个字段的代码,以举例说明如何实现相同的效果。

NOTE: 下面的代码只显示字段,但不处理任何信息或保存字段值,因为该部分与本文中描述的相同linked 在问题中。

添加字段,将下面的代码放入函数中。php显示字段。

function wpse39285_add_custom_user_profile_fields( $user ) {
?>
    <table id="custom_user_field_table" class="form-table">
        <tr id="custom_user_field_row">
            <th>
                <label for="custom_field"><?php _e(\'Field\', \'your_textdomain\'); ?></label>
            </th>
            <td>
                <input type="text" name="custom_field" id="custom_field" value="<?php echo esc_attr( get_the_author_meta( \'custom_field\', $user->ID ) ); ?>" class="regular-text" /><br />
                <span class="description"><?php _e(\'Please enter your custom_field value.\', \'your_textdomain\'); ?></span>
            </td>
        </tr>
    </table>
<?php 
}
add_action( \'show_user_profile\', \'wpse39285_add_custom_user_profile_fields\' );
add_action( \'edit_user_profile\', \'wpse39285_add_custom_user_profile_fields\' );
上述代码将在密码字段之后放置自定义字段。

移动字段

只有当用户查看自己的个人资料或管理员正在编辑其他人的个人资料时,下面的代码才会在WordPress管理员头中插入javascript。

function wpse39285_field_placement_js() {
    $screen = get_current_screen();
    if ( $screen->id != "profile" && $screen->id != "user-edit" ) 
        return;
    ?>
    <script type="text/javascript">
        jQuery(document).ready(function($) {
            field = $(\'#custom_user_field_row\').remove();
            field.insertBefore(\'#password\');
        });
    </script>
    <?php
}
add_action( \'admin_head\', \'wpse39285_field_placement_js\' );
上述javascript将使字段移动到密码字段和bio字段之间。如果用户从非javascript浏览器查看页面,则字段将不会移动,并将按默认方式显示。

启用JavaScript浏览器的字段

field with javascript enabled browser

具有非JavaScript浏览器的字段

field with javascript disabled browser

SO网友:Raphael

我的建议是:不要玩游戏/破解系统。创建核心开发人员希望您提供的内容;您希望字段完全位于此处的原因可能不是规避Wordpress流的好方法。

使用行动挂钩profile_personal_options 要在页面上放置所需设置的新部分,请执行以下操作。这不仅在技术上是合理的,而且对用户来说更清楚(知道WP通常是什么样子的)。

SO网友:Ziqurrat

对我来说,哈米·杜拉·汗的回答很有效。我只做了一点修改,因为我的新字段破坏了页面布局。所以在我添加的jquery代码中

jQuery(document).ready(function($) {
            field = $(\'#custom_user_field_row\').remove();
            field.insertBefore(\'#password\');
            $(\'#custom_user_field_row\').wrapAll(\'<tr><td colspan="2"></td></tr>\');
        });
保持表格对齐。

SO网友:user3206631

由于您不能真正做到这一点,我建议您使用Theme My Login 插件,一个非常简单的成员插件,它只会创建“登录”、“注销”和“个人资料”页面,适合您的主题定制。您可以根据需要在一个可以添加到子主题的不同文件中更改字段的顺序,这样在出现问题时就不会有任何问题。

唯一的问题是你的个人资料在user-edit.php 但在your-profile.php.

结束

相关推荐

用户面板(users.php)中的可排序自定义列?

我正在使用Register Plus Redux插件用自定义元数据字段扩充注册表。这些字段显示在每个用户记录详细信息页面的底部,可以使用get\\u the\\u author\\u meta检索这些字段。此外,我能够在用户面板(列表视图)中创建列,并使这些列可排序。问题是,当我单击自定义列标题时,URL中的orderby=值似乎被忽略。换句话说,生成用户列表视图的查询似乎不包括自定义元数据(例如,如果元数据不在用户数据的通常位置,可能需要join语句?)。感觉好像我错过了一步。以下是创建自定义列的代码: