使用自定义字段自定义WP用户配置文件

时间:2011-11-12 作者:dwenaus

我想允许我正在构建的网站的管理员对WordPress用户进行高度自定义。这将是一个非常高级的插件,所以我可以在管理中创建一个全新的页面来进行定制(以避免当前用户管理页面中的弱挂钩)。

如何使管理员能够轻松创建不同类型的自定义字段而无需编码?它有点像一个自定义的元框,但它是为用户而不是为帖子而设计的。

我知道BuddyPress为前端做了这项工作,最新版本1.5非常强大。我相信它可以适应管理领域,但这可能需要大量的工作。我还编写了一个自定义解决方案,但目前它的功能很差,我想知道是否有更好的解决方案。

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

有一个很好的插件解决方案:CIMY user extra fields

如果现成的解决方案不能百分之百令人满意,我完全支持控制和亲写你的例程,但在扩展用户配置文件的情况下,我从来没有看到过这种需要。我自己在两个生产站点上使用这个插件,非常满意。

SO网友:Brad Elsmore

如果你不想走插件路线,你可以使用默认的wordpress操作将其直接构建到你的主题中。第一个功能将在用户配置文件屏幕上创建新部分,第二个功能将添加/删除默认用户配置文件设置。

add_action( \'show_user_profile\', \'be_show_extra_profile_fields\' );
add_action( \'edit_user_profile\', \'be_show_extra_profile_fields\' );

function be_show_extra_profile_fields( $user ) {
?>
    <h3>Extra Contact Information</h3>

    <table class="form-table">
        <tr>
            <th><label for="contact">Contact Number</label></th>
            <td>
                <input type="text" name="contact" id="contact" value="<?php echo esc_attr( get_the_author_meta( \'contact\', $user->ID ) ); ?>" class="regular-text" /><br />
                <span class="description">Please enter your phone number.</span>
            </td>
        </tr>
    </table>
<?php
} 
add_action( \'personal_options_update\', \'be_save_extra_profile_fields\' );
add_action( \'edit_user_profile_update\', \'be_save_extra_profile_fields\' );

function be_save_extra_profile_fields( $user_id ) {

    if ( ! current_user_can( \'edit_user\', $user_id ) ) {
        return false;
    }

    update_usermeta( $user_id, \'contact\', esc_attr( $_POST[\'contact\'] ) );
}
下面是我通常用来摆脱过时的社交平台并为用户添加一些新平台的功能。我认为,它可以很容易地根据您的需要重新调整用途。

add_filter( \'user_contactmethods\', \'be_hide_profile_fields\', 10, 1 );
function be_hide_profile_fields( $contactmethods ) {
    unset($contactmethods[\'aim\']);
    unset($contactmethods[\'jabber\']);
    unset($contactmethods[\'yim\']);

    $contactmethods[\'twitter\'] = \'Twitter\';
    $contactmethods[\'facebook\'] = \'Facebook\';
    $contactmethods[\'linkedin\'] = \'LinkedIn\';
    return $contactmethods;
}
如果您想添加其他内容,请说出一个电话号码,您可以添加以下内容

$contactmethods[\'phonenumber\'] = \'Phone Number;
,它将为您创建字段。

结束

相关推荐

重定向出wp-admin,而不丢失admin-ajax.php

我试图通过在is\\u admin条件中使用wp\\u重定向,将所有非管理员排除在Wordpress管理面板之外。问题是,如果非管理员不能在Wordpress中使用“admin ajax.php”文件进行ajax调用,那么这会产生副作用。看来a few people on the Wordpress forums 最近也有同样的问题。有没有人能解决这个问题?