虽然您无法编辑下拉列表,但只要您能够编辑主题或主题使用标准,就可以实现您想要的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
如上所述,使用您的新值。