获取用户配置文件中所有可用字段的列表

时间:2016-08-29 作者:Ethan O\'Sullivan

默认情况下User Profile 页面有一些选项和字段,用户可以设置。例如:

Personal Options
-- Visual Editor
-- Admin Color Scheme
-- Keyboard Shortcuts
-- Toolbar
Name
-- First Name
-- Last Name
-- Nickname
-- Display Name
Contact Info
-- Website
About Yourself
-- Biographical Info
-- Avatar Display
在我的插件中,Disable Blogging, 我添加了一个设置页面,在复选框中列出所有这些字段,以切换要隐藏的字段(see screenshot).

但是,根据您使用的插件或主题,将显示其他设置和字段。采取Yoast SEO 以插件为例,添加了以下内容extra fields under the Contact Info section 以及他们自己的一部分:

Contact Info
-- Website
-- Google+
-- Twitter username (without @)
-- Facebook profile URL
...
Yoast SEO
-- Title to use for Author page
-- Meta description to use for Author page
-- Exclude user from Author-sitemap
-- Disable SEO analysis
-- Disable readability analysis
使用wp_get_user_contact_methods() 功能,我可以轻松echo 由添加的自定义联系人字段的列表Yoast SEO 像这样的插件:

add_action( \'personal_options\', \'wpse_237504_user_profile_fields\' );
function wpse_237504_user_profile_fields() {
    foreach ( wp_get_user_contact_methods() as $id => $label ) {
        echo( $label . " > " . $id . "<br>" );
    }
}
输出:

Google+ > googleplus
Twitter username (without @) > twitter
Facebook profile URL > facebook
遗憾的是,我没有看到可以调用的本地WordPress函数来获取用户配置文件中列出的所有字段。

这个Disable Blogging 插件通过使用基于for= 在每个中设置的值<label>. 例如:<label for="user_login">Username</label>

?>
<script type="text/javascript">
    jQuery( document ).ready( function( $ ) {
    $( \'form#your-profile > h2\' ).hide();
    <?php
        foreach ( $profile_fields as $label ) {
            echo( "$( \'#" . $label . "\' ).closest( \'tr\' ).hide(); " );
        }
    ?>
    } );
</script>
<?php
虽然这适用于我在插件中手动列出的所有用户配置文件字段,但我对这个问题的总体目标是自动获得用户配置文件中所有可用字段(本地和自定义)的列表,而不必在插件中手动列出它们。

这样,当使用Disable Blogging 插件,若要隐藏由其他插件或主题创建的配置文件,它将自动作为复选框列出。

虽然我没有要求任何人为我编写完整的代码(虽然我也不介意,也很乐意将您添加为贡献者),但我会接受部分答案,以帮助我完成此功能,或向我展示另一种获得相同结果的方法。

如果你有什么不清楚的地方,给我留言或留言The Loop 为了更快的响应

1 个回复
SO网友:cjbj

中的第二个参数get_user_meta 是可选的,因此您可以像这样检索所有用户元(在我的安装中快速测试的代码):

$cu = get_current_user_id ();
$um = get_user_meta ($cu);
var_dump ($um);
这还包括隐藏在用户配置文件页面上的元字段。