0

ユーザープロファイルの「一般に表示名」を選択ボックスからテキストボックスに変更しようとしています。これを行う方法についてのアイデアはありますか?何も見つかりませんでした。

4

3 に答える 3

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" );

開始/終了タグの奇妙な使い方に注意してください。これは、これらの特定のフックがフォームの開始タグの終わりの直前で実行されるためです。そのため、フォーム タグを閉じ、スクリプトを印刷してから、終了タグを閉じに印刷する必要があります。

于 2015-02-06T07:28:36.087 に答える
0

管理者ユーザーの編集ページについては、最も簡単な方法の 1 つを見つけました。

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 に貼り付けるだけです:)

于 2019-03-30T20:19:07.013 に答える