web-dev-qa-db-ja.com

[プロフィール]セクションからこれらのフィールドを削除する方法

ユーザーの役割に応じて、[プロフィール]ページからプロフィールフィールドをいくつか削除する必要があります。カラーピッカーを削除するために私はremove_action("admin_color_scheme_picker", "admin_color_scheme_picker")を使いました。これらのフィールドを削除したいです。

  1. ニックネーム
  2. 名前を一般公開で表示する
  3. AIM、ヤフー、グーグルトークとあなた自身についてフィールド
  4. [管理者バーを表示]セクションと2つのチェックボックス

それを可能にするアクション/フィルタがあるかどうか確認するために 'user-edit.php'ファイルを調べましたが、そうではないようです。誰もがこれを行う方法を教えてもらえますか?任意の助けがいただければ幸いです。ありがとう

編集: /答えをくれてありがとう@helenhousandi。私はもうすでにこうしていました。

<?php
add_action('admin_footer-profile.php', 'remove_profile_fields');
function remove_profile_fields()
{
    if(current_user_can('custom_role'))
    { ?>
        <script type="text/javascript">
            jQuery("h3:contains('Personal Options')").next('.form-table').remove();
            jQuery("h3:contains('Personal Options')").remove();
            jQuery("h3:contains('About Yourself')").next('.form-table').remove();
            jQuery("h3:contains('About Yourself')").remove();
        </script>
<?php }
}
?>

私はこれがもう少し長いことを知っています、しかしそれはうまくいきました! @ helenhousandiさんの回答と一緒に行きましょう。

15

連絡方法フィルターの場合: user_contactmethods

function update_contact_methods( $contactmethods ) {

    unset( $contactmethods['aim'] );
    unset( $contactmethods['Jabber'] );
    unset( $contactmethods['yim'] );

    return $contactmethods;

}
add_filter( 'user_contactmethods', 'update_contact_methods' );
14
Chris_O

user_contactmethods フィルタはWordPressでは必須ではないので、ユーザープロファイル画面には数少ないものの1つですが、jQueryの.hide().remove()を使用して、不要なフィールドを効果的に削除できます。情報を保存するという点での複雑さ。確かに、JSを持っていない人はまだそれらを見るでしょうが、それは少数派であり、私はそこで変化する情報が実際には何も影響を及ぼさないと思います。

個人用オプション部分全体を削除する例(管理バーと配色の表示)私はそれがあなたが正確に探しているものではないということを知っています、ちょうどあなたに私が手にしている簡単な例を与えたいと思いました:

// remove personal options block
if( is_admin() ){
    remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );
    add_action( 'personal_options', 'prefix_hide_personal_options' );
}

function prefix_hide_personal_options() {
  ?>
    <script type="text/javascript">
        jQuery( document ).ready(function( $ ){
            $( '#your-profile .form-table:first, #your-profile h3:first' ).remove();
        } );
    </script>
  <?php
}

また、[管理バーを表示]オプションに関するメモ:3.3では管理バーがヘッダーになっているため、オンまたはオフにできないため、心配する必要はありません。

より正確で完全なコード例を更新しました。そこにいくつかの残り物がありました。

9
helenhousandi

これには良いphpフックがないように思われるので、CSSでフィールドを隠してからJSでそれらを削除しました。

add_action( 'admin_head', 'remove_default_profile_fields' );

function remove_default_profile_fields() {

    global $pagenow;

    if( 'profile.php' != $pagenow) return;

    remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );

    // <tr> selectors, each containing a field
    $tr = array(
        "tr.user-rich-editing-wrap",
        "tr.user-comment-shortcuts-wrap",
        "tr.user-first-name-wrap",
        "tr.user-last-name-wrap",
        "tr.user-admin-bar-front-wrap",
        "tr.user-profile-picture",
        "tr.user-user-login-wrap",
        "tr.user-display-name-wrap",
        "h2" // Personally I decided to remove all H2 tags too.
    );

    $selectors = implode(", ", $tr);

    // Hide the fields with css, so even if javascript is disabled they wont show up. 
    echo "<style>{$selectors}{display:none;}</style>"; ?>

    <script type="text/javascript">
        jQuery( document ).ready(function( $ ){
           // Remove selected <tr>'s
           $( '<?= $selectors; ?>' ).remove();
           // Remove any empty table that may have been left over
           $(".form-table:not(:has(tr))").remove();
        });
    </script>

  <?php
}
1
Tobbe

wordpress support forum から - PHPを使って削除することができます。これはAbout Yourselfセクションを削除します。

if (! function_exists('remove_plain_bio') ){
    function remove_plain_bio($buffer) {
        $titles = array('#<h3>About Yourself</h3>#','#<h3>About the user</h3>#');
        $buffer=preg_replace($titles,'<h3>Password</h3>',$buffer,1);
        $biotable='#<h3>Password</h3>.+?<table.+?/tr>#s';
        $buffer=preg_replace($biotable,'<h3>Password</h3> <table class="form-table">',$buffer,1);
        return $buffer;
    }

    function profile_admin_buffer_start() { ob_start("remove_plain_bio"); }

    function profile_admin_buffer_end() { ob_end_flush(); }
}
add_action('admin_head', 'profile_admin_buffer_start');
add_action('admin_footer', 'profile_admin_buffer_end');

このコードは、 'About Yourself'ヘッダーを 'Password'に置き換えてから、それが見つかった次のテーブル(パスワードテーブル)の間にあるものをすべて取り除きます。

プラグイン WP Hide Dashboard を拡張したい場合は、同様のjQueryの置き換えを行います。

1
icc97

注意してください!!

1) フィールドを削除するのは良くないかもしれません 、アップデート時のように、必須のフィールドをWORDPRESSのアップデートフックに送らないと、それらのフィールドに空の値を設定するかもしれません(例えば、送信フォームには、<input name="username".../>が存在するはずです)
jquery .hide();で、.remove();ではなく、視覚的にのみ非表示にすることをお勧めします。
[ 表示名 ]および[ _ニックネーム_ ]フィールドを非表示にするコード例:

jQuery(document).ready(function( $ ){
    $("#nickname,#display_name").parent().parent().hide();
});

2) 管理バーを非表示にするには、(設定で)ワードプレスメニューに特別なオプションがあります 。カスタムコードの場合.

add_action('after_setup_theme', 'remove_admin_bar');

function remove_admin_bar()
{
  if (!current_user_can('administrator') && !is_admin()) 
  {
    show_admin_bar(false);
  }
}
1
T.Todua

つかいます

add_action('admin_head', 'remove_profile_fields');

そして追加

jQuery(document).ready(function(e) {

javaScriptの前に。

0
Akhil Sharma