我正在尝试将用户个人资料“公开显示名称”从选择框更改为文本框。关于如何做到这一点的任何想法?无法找到所有的东西。
答案 0 :(得分:0)
解决它的两种方法。你编辑wordpress核心文件,这不是一个好方法。或者您可以使用wordpress hook在配置文件框中添加额外的字段。
我给你第一条路:
转到wp-admin / user-edit.php
打开文件。然后找
<td>
<select name="display_name" id="display_name">
<?php
$public_display = array();
$public_display['display_nickname'] = $profileuser->nickname;
$public_display['display_username'] = $profileuser->user_login;
if ( !empty($profileuser->first_name) )
$public_display['display_firstname'] = $profileuser->first_name;
if ( !empty($profileuser->last_name) )
$public_display['display_lastname'] = $profileuser->last_name;
if ( !empty($profileuser->first_name) && !empty($profileuser->last_name) ) {
$public_display['display_firstlast'] = $profileuser->first_name . ' ' . $profileuser->last_name;
$public_display['display_lastfirst'] = $profileuser->last_name . ' ' . $profileuser->first_name;
}
if ( !in_array( $profileuser->display_name, $public_display ) ) // Only add this if it isn't duplicated elsewhere
$public_display = array( 'display_displayname' => $profileuser->display_name ) + $public_display;
$public_display = array_map( 'trim', $public_display );
$public_display = array_unique( $public_display );
foreach ( $public_display as $id => $item ) {
?>
<option id="<?php echo $id; ?>"<?php selected( $profileuser->display_name, $item ); ?>><?php echo $item; ?></option>
<?php
}
?>
</select>
</td>
用
更改它<th><label for="display_name"><?php _e('Display name publicly as'); ?> </label></th>
<td><input type="text" name="display_name" id="display_name" value="<?php echo esc_attr( $profileuser->display_name ); ?>" class="regular-text" /></td>
但这仍然不是一个好的解决方案。
答案 1 :(得分:0)
我遇到了同样的问题并使用了一些javascript来解决它。 Wordpress允许您将display_name
字段设置为您想要的任何内容,因此您可以使用以下脚本(在主题的functions.php
文件中)将选择转换为文本字段。
function change_display_name_to_textfield() {
echo "><div>"; // don't remove '>'
?>
<script>
jQuery(function($) {
// replace display_name select with input
$('select#display_name').after( '<input type="text" name="display_name" id="display_name" value="' + $('#display_name').val() + '" class="regular-text">' ).remove();
})
</script>
<?php
echo "</div"; // don't add '>'
}
// hook into new user and edit user pages
add_action( "user_new_form_tag", "change_display_name_to_textfield" );
add_action( "user_edit_form_tag", "change_display_name_to_textfield" );
注意打开/关闭标签的奇怪用法。这是因为那些特定的钩子在开始表单标签结束之前执行。因此,您需要关闭表单标记,打印脚本,然后打印最终标记,而不用关闭它。
答案 2 :(得分:0)
对于管理员用户编辑页面,我找到了最简单的方法之一:
add_action( 'personal_options', 'rm_personal_options' );
function rm_personal_options($profileuser){
if( !is_admin() ) return; ?>
<script type="text/javascript">
jQuery(document).ready(function($){
//$("input#nickname").parent().parent().hide();
$("select#display_name").replaceWith(function(){
return '<input type="text" name="display_name" id="display_name" value="'+$(this).val()+'" class="regular-text" style="width:25em" />';
});
});
</script>
<?php
}
只需将其粘贴到主题文件的functions.php中:)