在Wordpress用户配置文件中对“联系信息”字段进行排序

时间:2014-11-18 23:39:18

标签: php wordpress sorting

我可以使用以下内容在用户个人资料部分添加和删除字段:

function add_remove_contactmethods($contactmethods ) {
    // Remove AIM
    unset($contactmethods['aim']);
    //add Phone
    $contactmethods['phone'] = 'Phone';
    return $contactmethods;
}

add_filter( 'user_contactmethods', 'add_remove_contactmethods' );

当我在后端查看此屏幕时,"电话"领域是最后的,在其他一些领域之后,例如" Email"和"网站"。我想这是因为我添加的字段是在默认的Wordpress字段之后添加的。我如何按字母顺序排序,以便我的电话"电话"字段按字母顺序而不是默认字段后?如何在不弄乱它的情况下对$ contactmethods的输出进行排序?

2 个答案:

答案 0 :(得分:0)

尝试使用ksort

    function add_remove_contactmethods($contactmethods ) {
       // Remove AIM
       unset($contactmethods['aim']);
       //add Phone
       $contactmethods['phone'] = 'Phone';
       ksort($contactmethods);
       return $contactmethods;
    }

    add_filter( 'user_contactmethods', 'add_remove_contactmethods' );

重新 UPDATE: So I guess the answer to my original question, is to explain why and how "Website" and "Email" are stored, and how the output is controlled in the backend when you view a profile. Maybe it's an ordered action? I guess "Website" and "Email" are just user meta, but how is the output order controlled. I accept that I might have to write a custom script to sort the output, I just don't know where to begin.

您的权利,所有新的联系人字段都已添加到user_meta表中。 user_email和user_url位于users表中。您将要执行此操作的问题是,不存在用于修改信息的过滤器。您可以在此处查看主过滤器:

http://codex.wordpress.org/Plugin_API/Filter_Reference

你也可以看看核心本身。所有管理模板都在wp-admin中,因此您可以在user-edit.php($ profileuser)中查看需要修改的变量。我绝不推荐这个,但是你可以在那里修改模板,它会在下一次更新时被覆盖,因此这是一个缺点。

在加载模板过程中,管理员可能会有一个钩子,如果你能找到一个,你可以将模板位置重新定位到一个主题文件,然后用你想要的更改重新创建它。但是所有这些似乎只需要包括两个字段来重新排序吗?

答案 1 :(得分:0)

另一种方法是在添加字段时使用更高优先级。例如,Yoast添加了3种联系方式,如果你想要你的电话'出现在那些之前,将过滤器设置为:

add_filter('user_contactmethods', 'my_contactmethods', -5, 1);

电子邮件和网站无法重新订购除非深入PHP编码或javascript重新订购或高级CSS。

如果您知道密钥(检查源代码中的名称字段),您可以自己添加其他插件字段,并选择准确的外观。如果一个字段添加两次,则只添加一次(!)这是我们使用的方式:

function entex_author_contactmethods($contactmethods){

    $contactmethods['mail'] = __('Public email', 'entex-theme');
    $contactmethods['phone'] = __('Phone', 'entex-theme');
    $contactmethods['googleplus'] = __('Google+', 'wordpress-seo');
    $contactmethods['youtube'] = __('YouTube URL', 'wordpress-seo');
    $contactmethods['facebook'] = __('Facebook profile URL', 'wordpress-seo');
    $contactmethods['instagram'] = __('Instagram URL', 'wordpress-seo');
    $contactmethods['twitter'] = __('Twitter username (without @)', 'wordpress-seo');
    $contactmethods['linkedin'] = __('LinkedIn URL', 'wordpress-seo');
    $contactmethods['myspace'] = __('MySpace URL', 'wordpress-seo');
    $contactmethods['pinterest'] = __('Pinterest URL', 'wordpress-seo');

    return $contactmethods;
}
add_filter('user_contactmethods', 'entex_author_contactmethods', -5, 1);

快乐联系!