Bu alanlar 'Profil' bölümünden nasıl kaldırılır?


16

Kullanıcı rollerine göre 'Profil' sayfasındaki bazı profil alanlarını kaldırmam gerekiyor. Kullandığım renk seçiciyi kaldırmak için remove_action("admin_color_scheme_picker", "admin_color_scheme_picker"). Bu alanları kaldırmak istiyorum:

  1. Takma ad
  2. Görünen ad herkese açık olarak
  3. AIM, Yahoo, Google talk ve Kendiniz hakkında alanlar
  4. 2 onay kutusuyla birlikte 'Yönetici Çubuğunu Göster' bölümü

Bunu yapmama izin veren herhangi bir eylem / filtre olup olmadığını görmek için 'user-edit.php' dosyasını inceledim, ancak öyle görünmüyor. Biri bana bunun nasıl yapılacağını söyleyebilir mi? Herhangi bir yardım mutluluk duyacağız. Teşekkürler

DÜZENLE: Yanıt için @helenhousandi teşekkürler. Yine de bu şekilde yapmıştım.

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

Bunun biraz daha uzun olduğunu biliyorum, ama işe yaradı! Sanırım @ helenhousandi'nin cevabı ile gideceğim.


Bu nereye gitmeli? functions.php?
Fabian

Evet. functions.phpBir eklenti dosyasına gidebilir . Kancalar doğru olduğu sürece, her iki yerden de çalışacaktır.
Rutwick Gangurde

Tamam, ama eğer function.php içine koyarsam, javascript'i nasıl geri gönderebilirim? dönüş veya yankı ile?
Fabian

Görünüşe göre WordPress v4.4.1, Takma ad zorunlu bir alan haline geldi ve HATA veriyor : Lütfen bir kullanıcıyı bu gizli ancak doldurulmamış olarak güncellerken bir Takma
Ad Girin

Yanıtlar:


15

İletişim yöntemleri filtresi için 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' );

Teşekkürler ... bunu aldım! 'Yönetici Çubuğunu Göster' ve 'Kendiniz hakkında' bölümleri için herhangi bir şey var mı?
Rutwick Gangurde

Bir çözüm bulursanız lütfen bunu güncelleyin ... Yine de cevabınızı kabul ediyorum. Teşekkürler!
Rutwick Gangurde

Çünkü PHP ile alanları kaldırma hatırlamak kadar WordPress de usermeta tablosunda boş girişler oluşturmasını durdurur.
Ashfame

9

Gerçi user_contactmethodsdiğer alanlarda WordPress gerekli değildir çünkü filtre, kullanıcı profili ekranı için birkaç biridir şunu kullanabilirsiniz jQuery en .hide()ve .remove()bilgiyi etkin tasarrufu açısından Eğer komplikasyon olmadan istemediğiniz kurtulmak için . Tabii, JS'si olmayan biri hala onları görecekti, ama bu küçük bir azınlık ve sanırım orada değişen bilgiler aslında hiçbir şeyi etkilemeyecek.

Tüm kişisel seçenekler parçasını kaldırma örneği (yönetici çubuğunu ve renk şemasını göster). Tam olarak aradığın şey olmadığını biliyorum, sadece elimdeki hızlı bir örneği vermek istedim:

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

Ayrıca, Yönetici Çubuğunu Göster seçeneği hakkında bir not: 3.3'te yönetici çubuğu başlık haline geliyor ve bu nedenle açılamıyor veya kapatılamıyor, bu yüzden endişelenmeye değmeyebilir.

Kod örneğini daha doğru ve eksiksiz olacak şekilde güncelledim. Orada kalanlar vardı.


Teşekkürler! Bu güzel bir çözüm! Yaptığım şey benzer bir şeydi ama betiğim sadece üzerinde çalışacak şekilde farklı bir eylem kanca kullandım profile.php. Bunu sistemimde tanımlanan özel bir özel rol için de yapmam gerekiyordu. Sorumu yanıtla güncelliyorum.
Rutwick Gangurde

1
$("#nickname,#display_name").parent().parent().remove();
JQuery'ye

Ayrıca edit_user_profile kancasını da kullanabilirsiniz. Ve kodu anında çalıştırmak için jQuery (document) .ready yöntemini kullanmayın. Bunun gibi
Giraldi

WP v.4.4.1
icc97

2

Bunun için iyi bir php kanca gibi görünüyor gibi ben sonra CSS ile alanları gizlemek sona erdi JS ile onları kaldırın.

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

Gönderen wordpress destek forumunda PHP kullanarak kaldırma yapabilirsiniz. Bu, Kendiniz Hakkında bölümünü kaldırır:

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

Kod, 'Kendiniz Hakkında' üstbilgisini 'Parola' ile değiştirir ve ardından bu ve bulduğu bir sonraki tablo (parola tablosu) arasında herhangi bir şey çıkarır.

Ayrıca WP Hide Dashboard eklentisini genişletmek isterseniz benzer jQuery değiştirmeyi yapar.


İleride başvurmak için kullanmak isteyebilir admin_head-profile.phpve admin_footer-profile.phpbunun yerine

1

DİKKATLİ OL!!

1) Bir alanı kaldırmak güncellemede olduğu gibi iyi olmayabilir , eğer gerekli alanları WORDPRESS güncelleme kancasına göndermezseniz, bu alanlara boş değerler ayarlayabilir! (örneğin, form gönderilirken, yani var olmalıdır <input name="username".../>)
Bence, " DISPLAY NAME " ve " NICKNAME " alanlarını gizlemek için EXAMPLE koduyla .hide();değil , yalnızca görsel olarak, jquery ile kullanıcılardan .remove();
gizlemek daha iyidir :

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

2) Yönetici çubuğunu gizlemek için wordpress menüsünde (Ayarlar'da) özel bir seçenek vardır . özel kod için, ör.

add_action('after_setup_theme', 'remove_admin_bar');

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

0

kullanım

add_action('admin_head', 'remove_profile_fields');

ve Ekle

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

JavaScript'ten önce.


Biraz açıklama harika olurdu!
bravokeyl

-4

Bunları devre dışı bırakacak filtre yok. Bunun /wp-admin/user-edit.phpgibi şeyler yapmanız gerektiğinde source ( ) öğesine bakın. Bunları JS ile gizleyebilirsiniz, ancak yine de görünür hale getirilebilir ve değerler POST'ta güncellenir.

Tek uygulanabilir seçenek çekirdeği kendiniz kesmek. Sadece güncellemeyi ele aldığınızdan ve POST'ta bu alanları göz ardı ettiğinizden emin olun.


Evet, o dosyayı zaten kontrol ettim! JS çözümü çok güvenli görünmüyor. Ne yapabileceğimi göreceğim! Teşekkürler!
Rutwick Gangurde

3
Aklınıza gelebilecek tek çözüm çekirdeği hacklemekse, belki de o soruya cevap vermemelisiniz. Ayrıca, daha önce bahsedilen dosyaya bakması için askere soru sormanıza da gerek yoktur ve ayrıca hiç filtre olmadığını belirtmek konusunda da doğru değilsiniz - kesinlikle soruyu ve daha önce yanıtını okumalısınız?
helenhousandi

@helenhousandi xoxo
EarnestoDev
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.