将条件自定义选项添加到“将名称公开显示为”下拉菜单

时间:2016-01-01 作者:krzaczor93

除了内置的“公开显示名称为”选项外,我还想添加一个自定义name + nickname + surname“下拉列表的选项。

此自定义选项应由两个条件确定:

  1. Name + nickname + surname 应自动用于编辑器角色
  2. Nickname 应自动用于所有其他角色
    1. *除管理员外,所有角色都应隐藏要更改此设置的字段

      我将非常感谢您的帮助。

1 个回复
SO网友:Andy Macaulay-Brook

虽然您无法编辑下拉列表,但只要您能够编辑主题或主题使用标准,就可以实现您想要的the_author() 模板标记。

要改写您的问题,您需要:

编辑姓名显示为姓名+昵称+姓氏

  • 其他姓名显示为昵称

    除了管理员之外,没有人可以更改此选项

  • 我现在假设第3点只是为了防止人们改变事情,甚至管理员也不需要真正改变1&;2.

    主题编辑解决方案

    在主题中显示作者姓名的任何地方,为什么不使用自己的代码:

    if ( user_can( get_the_author_meta(\'ID\'), \'editor\' ) ) {
        echo get_the_author_meta(\'first_name\');
        echo \' \';
        echo get_the_author_meta(\'nickname\');
        echo \' \';
        echo get_the_author_meta(\'last_name\');
    } else {
        echo get_the_author_meta(\'nickname\');
    }
    
    /* Use a clever way of joining the parts of the name together
       if you wish, the style here is just for clarity.
    */
    
    NB - get_the_author_meta 从全局$authordata, 因此,您可以通过直接访问全局来简化代码,尽管使用get_the_author_meta 给你。

    如果您不想编辑主题并且主题使用标准,则插件解决方案the_author() 模板标签,然后让自己成为一个小插件,钩住过滤器the_author.

    function wpse_213437_author_display_name( $display_name ) {
        if ( user_can( get_the_author_meta(\'ID\'), \'editor\' ) ) {
            $display_name = get_the_author_meta(\'first_name\');
            $display_name .=  \' \';
            $display_name .= get_the_author_meta(\'nickname\');
            $display_name .= \' \';
            $display_name .= get_the_author_meta(\'last_name\');
        } else {
            $display_name = get_the_author_meta(\'nickname\');
        }
        return $display_name;
    }
    
    add_filter( \'the_author\', \'wpse_213437_author_display_name\' );
    
    允许管理员覆盖作为读者的练习,您可以将自己的字段添加到用户编辑屏幕。因此,虽然您不能增加内置的显示名称下拉列表,但您可以构建自己的或为覆盖值添加文本输入,然后挂接到the_author 如上所述,使用您的新值。

    相关推荐

    如何让`wp-list-table`显示我在Custom-Post中的`Custom-Fields`

    一切都好吗<我需要wp-list-table 也要显示custom-fields 在每个custom-post 我有,但我不知道如何做到这一点,在这幅图中,它显示了带有字段的表格:Title, Author and Publication Date: 我想要的是能够选择custom-fields 将出现,例如以下示例Title, Carta, Naipe, Author, and Date of Publication: