Muszę usunąć niektóre pola profilu ze strony „Profil” zgodnie z rolami użytkownika. Do usunięcia próbnika kolorów użyłem remove_action("admin_color_scheme_picker", "admin_color_scheme_picker")
. Chcę usunąć te pola:
- Przezwisko
- Wyświatlaj imie publicznie jako
- Pola AIM, Yahoo, Google talk i O sobie
- Sekcja „Pokaż pasek administratora” wraz z 2 polami wyboru
Przeszedłem przez plik „user-edit.php”, aby sprawdzić, czy są jakieś akcje / filtry, które pozwalają mi to zrobić, ale wygląda na to, że nie ma. Czy ktoś może mi powiedzieć, jak to zrobić? Każda pomoc będzie mile widziana. Dzięki
EDYCJA: Dzięki @helenhousandi za odpowiedź. Ale już tak to zrobiłem.
<?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 }
}
?>
Wiem, że to trochę dłużej, ale zadziałało! Myślę, że pójdę z odpowiedzią @ helenhousandi.
functions.php
lub pliku wtyczki. Dopóki haki są prawidłowe, będzie działać z dowolnego miejsca.Odpowiedzi:
Dla filtra metod kontaktowych
user_contactmethods
:źródło
Chociaż
user_contactmethods
filtr jest jednym z nielicznych dla ekranu profilu użytkownika, ponieważ inne pola nie są wymagane w WordPress, możesz użyć jQuery.hide()
i.remove()
skutecznie pozbyć się tych, których nie chcesz, bez komplikacji w zakresie zapisywania informacji . Jasne, osoba bez JS nadal by je widziała, ale to niewielka mniejszość i domyślam się, że zmieniające się tam informacje w rzeczywistości nic nie wpłyną.Przykład usunięcia całego elementu opcji osobistych (pokaż pasek administratora i schemat kolorów). Wiem, że nie jest to dokładnie to, czego szukasz, chciałem tylko dać ci szybki przykład, który mam pod ręką:
Również uwaga na temat opcji Pokaż pasek administratora: w 3.3 pasek administratora staje się nagłówkiem, dlatego nie można go włączać ani wyłączać, więc nie warto się martwić.
Zaktualizowałem przykład kodu, aby był bardziej dokładny i kompletny. Miałem tam trochę resztek.
źródło
profile.php
. Musiałem to również zrobić dla określonej niestandardowej roli zdefiniowanej w moim systemie. Aktualizacja mojego pytania z odpowiedzią.$("#nickname,#display_name").parent().parent().remove();
Ponieważ wydaje się, że nie ma dobrego haka php do tego, ukryłem pola za pomocą CSS, a następnie usunąłem je za pomocą JS.
źródło
Z forum wsparcia wordpress można usunąć za pomocą PHP. Spowoduje to usunięcie sekcji O sobie:
Kod zamienia nagłówek „About Yourself” na „Password”, a następnie usuwa wszystko między tą a następną znalezioną tabelą (która jest tabelą haseł).
Również wtyczka WP Hide Dashboard dokonuje podobnej wymiany jQuery, jeśli chcesz ją rozszerzyć.
źródło
admin_head-profile.php
aadmin_footer-profile.php
zamiast tegoBĄDŹ OSTROŻNY!!
1) Usunięcie pola może nie być dobre , ponieważ podczas aktualizacji, jeśli nie wyślesz niezbędnych pól do haka aktualizacji WORDPRESS, może ustawić puste wartości w tych polach! (na przykład w formularzu do przesłania powinien istnieć np.
<input name="username".../>
)Myślę, że lepiej ukrywać przed użytkownikami tylko wizualnie, używając jquery,
.hide();
a nie.remove();
kodu PRZYKŁADOWEGO, aby ukryć pola „ DISPLAY NAME ” i „ NICKNAME ”:
2) Aby ukryć pasek administratora, istnieje specjalna opcja w menu wordpress (w Ustawieniach) . dla niestandardowego kodu, np
źródło
Posługiwać się
i dodaj
przed JavaScript.
źródło
Nie ma filtru, aby je wyłączyć. Spójrz na źródło (
/wp-admin/user-edit.php
), kiedy musisz robić takie rzeczy. Możesz je ukryć za pomocą JS, ale nadal mogą być widoczne, a wartości są aktualizowane w POST.Jedyną realną opcją jest samodzielne zhakowanie rdzenia. Tylko upewnij się, że poradzisz sobie z aktualizacją i zignoruj te pola w POST.
źródło