2013-05-07 2 views

답변

0

두 가지 방법으로 해결할 수 있습니다. 당신은 좋은 방법이 아닌 WordPress core 파일을 편집합니다. 또는 wordpress 후크를 사용하여 프로필 상자에 추가 필드를 추가 할 수 있습니다.

하는 것은 당신에게 첫 번째 방법을 제공하고있다 :

이동 WP - 관리자에게/사용자 edit.php

파일을 엽니에게. 그런 다음

<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> 

<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> 

변경을 찾을하지만 여전히 이것은 좋은 해결책이 아니다.

+0

코어 편집은 옵션이 아닙니다. 그러면 추가 필드가 추가됩니다. 덕분에 –

+0

"표시 이름을 공개적으로"후크를 사용하여 숨길 수는 없습니다. 사용자 정의 필드를 추가하면됩니다. –

+0

감사합니다. 맞춤 입력란을 사용하여 종료되었습니다. –

0

나는이 동일한 문제를 겪고 그것을 해결하기 위해 약간의 자바 스크립트를 사용했습니다. 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"); 

열기/닫기 태그의 이상한 사용에 유의하십시오. 이는 특정 후크가 시작 양식 태그의 끝 직전에 실행되기 때문입니다. 따라서 양식 태그를 닫고 스크립트를 인쇄 한 다음 마지막 태그 인을 닫지 말고 인쇄해야합니다.

관련 문제