在新配置文件字段的输入字段下添加描述文本

时间:2013-10-17 作者:730wavy

如何修改以下代码以在输入字段下添加一些描述文本?我尝试修改它,正如你在facebook url字段中看到的那样,但文本显示在字段标签下,而不是实际的输入字段--

function modify_contact_methods($profile_fields) {
    // Add new fields
    $profile_fields[\'address\'] = \'Address\';
    $profile_fields[\'city\'] = \'City\';
    $profile_fields[\'state\'] = \'State\';
    $profile_fields[\'zipcode\'] = \'Zip Code\';
    $profile_fields[\'phone\'] = \'Phone Number\';
    $profile_fields[\'fax\'] = \'Fax\';
    $profile_fields[\'gplus\'] = \'Google+ URL\';
    $profile_fields[\'twitter\'] = \'Twitter URL\';
    $profile_fields[\'facebook\'] = \'Facebook URL <br /><span style="clear:both;">Ex: www.facebook.com/username</span>\';
    // Remove old fields
    unset($profile_fields[\'aim\']);
    unset($profile_fields[\'yim\']);
    unset($profile_fields[\'jabber\']);

    return $profile_fields;
}
add_filter(\'user_contactmethods\', \'modify_contact_methods\');

1 个回复
最合适的回答,由SO网友:josh 整理而成

根据收集的信息HEREHERE; 我能把一些东西组合起来。

第一放弃第一种方法。它将添加一个字段值,是的。但它不允许您添加描述性字段。

相反,我们需要创建一个全新的table 从WordPress填充的结构中的标记。为此,让我们使用以下函数:

function my_custom_user_profile_fields( $user ) {
    ?>
    <table id="facebook_user_field_table" class="form-table">
        <tr id="facebook_user_field_row">
            <th>
                <label for="facebook_field"><?php _e(\'Facebook URL\', \'your_textdomain\'); ?></label>
            </th>
            <td>
                <input type="text" name="facebook_field" id="facebook_field" value="<?php echo esc_attr( get_the_author_meta( \'facebook_field\', $user->ID ) ); ?>" class="regular-text" /><br />
                <span class="description"><?php _e(\'Please enter your Facebook profile url.\', \'your_textdomain\'); ?></span>
            </td>
        </tr>
    </table>
<?php 
}
add_action( \'show_user_profile\', \'my_custom_user_profile_fields\' );
add_action( \'edit_user_profile\', \'my_custom_user_profile_fields\' );
这将定义我们的新tr 元素,并用必要的结构填充它。您可以根据需要更改字段标签和描述。

注意:这只会创建新的tr 元素,并将其放置在“关于您自己”部分的底部。为了“放置”新的tr 元素(即“联系信息”),我们必须使用一些jQuery:

function my_facebook_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 = $(\'#facebook_user_field_row\').remove();
            parent = $(\'#url\').closest(\'tr\');
            field.insertBefore(parent);
        });
    </script>
<?php
}
add_action( \'admin_head\', \'my_facebook_field_placement_js\' );
此代码将tr 元素,并将其添加到WordPress生成的“网站”字段之前。

注意:查看我们如何连接到admin_head 在这里我们要确保这不会在每个管理页面上运行。因此,此代码块的第一部分将检查当前页面,并且仅当我们在概要文件页面上时才运行代码。

现在那太好了。位置完美!!但是等等。。。现在,当我们更新字段时,数据没有保存。不要担心!!我们还有另一个钩子:

function my_save_custom_user_profile_fields( $user_id ) {
    if ( !current_user_can( \'edit_user\', $user_id ) )
        return FALSE;

    update_user_meta( $user_id, \'facebook_field\', $_POST[\'facebook_field\'] );
}
add_action( \'personal_options_update\', \'my_save_custom_user_profile_fields\' );
add_action( \'edit_user_profile_update\', \'my_save_custom_user_profile_fields\' );
这将更新字段,并将其存储在用户元表中。然后,每当需要从模板访问此值时;只需使用get_user_meta 作用

结束

相关推荐

Client Profiles

正在寻找创建客户机数据库的最佳方法。插件能最好地实现以下功能吗?我的客户端数据库插件存储有关客户端的个人信息和统计信息,这些信息和统计信息将通过自定义字段和自定义表单收集,管理员创建客户端配置文件后,仪表板选项卡将打开列表区域(类似于用户选项卡)(仅限管理员)“添加新”功能(类似于仪表板的用户区域)。管理员可以将客户端分配给用户,分配给用户的客户端显示为用户元数据。分配给用户的客户端将在用户配置文件中可见,仪表板小部件显示为登录用户分配的客户端,并带有指向客户端配置文件页面的链接。插件是解决此问题的解决方