web-dev-qa-db-ja.com

管理者以外からのWordPressプロフィールフィールドの削除

WordPressのプロファイル編集ページの管理者以外からDisplay name publicly asオプションを削除したいです。そんなことがあるものか?

enter image description here 

if ( ! current_user_can('manage_options') ) {
#remove the above
}

また、購読者の機能を削除して自分のプロフィールを編集することはどうすれば可能ですか。

2
csandreas1

ユーザーが入力する必要のない情報と混同したくない場合は、ユーザーを削除することをお勧めします。また、非表示にすることは選択肢ではないのでそれらを削除することを意味し、それはページがロードされた後にそれらのフィールドとタイトルを消すCSSまたはJSソリューションを含み、それはユーザーがフィールドのいくらかのちらつきを見ることを得ます。

WordPressの管理者プロフィールページのフィールド(個人用オプション、略歴、ウェブサイトなどを含む)およびJSなしのタイトルを削除する方法。単にfunctions.phpファイルにコピーして貼り付けてください。

    <?php
    // Remove fields from Admin profile page
    if ( ! function_exists( 'cor_remove_personal_options' ) ) {
        function cor_remove_personal_options( $subject ) {

            $subject = preg_replace('#<tr class="user-display-name-wrap(.*?)</tr>#s', '', $subject, 1); // Remove the "Display name publicly as" field
            return $subject;
        }

        function cor_profile_subject_start() {
            if ( ! current_user_can('manage_options') ) {
                ob_start( 'cor_remove_personal_options' );
            }
        }

        function cor_profile_subject_end() {
            if ( ! current_user_can('manage_options') ) {
                ob_end_flush();
            }
        }
    }
    add_action( 'admin_head', 'cor_profile_subject_start' );
    add_action( 'admin_footer', 'cor_profile_subject_end' );

だからこれはトリックを行い、管理者プロフィールページからフィールドを削除します。

しかし、このようにニックネームフィールドを削除したくない場合は必須です。それでこれのためにあなたはそのようにJSで解を使うことができます:

    <?php 

    //Remove fields from Admin profile page via JS to hide nickname field which is mandatory
    function remove_personal_options(){
        if ( ! current_user_can('manage_options') ) { // 'update_core' may be more appropriate
            echo '<script type="text/javascript">jQuery(document).ready(function($) {
                $(\'form#your-profile tr.user-nickname-wrap\').hide(); // Hide the "nickname" field
            });</script>';
        }
    }
    add_action('admin_head','remove_personal_options');

そしてフックを介して削除できる唯一のことは管理配色であり、それはそのように行われます:

// Removes ability to change Theme color for the users
remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );

Javascriptを使用してフィールドを非表示にする必要はありません。上記のコードを使用して、削除したくない行を捨てるだけです。

ありがとうございます。

2
Amritosh pandey