Ich muss einige Profilfelder gemäß den Benutzerrollen von der Seite "Profil" entfernen. Zum Entfernen des Farbwählers habe ich verwendet remove_action("admin_color_scheme_picker", "admin_color_scheme_picker")
. Ich möchte diese Felder entfernen:
- Spitzname
- Name öffentlich anzeigen als
- AIM-, Yahoo-, Google Talk- und About yourself-Felder
- Der Bereich "Show Admin Bar" mit den beiden Kontrollkästchen
Ich habe die Datei 'user-edit.php' durchgesehen, um zu sehen, ob es Aktionen / Filter gibt, mit denen ich das machen kann, aber es scheint, als gäbe es keine. Kann mir jemand sagen, wie das geht? Jede Hilfe wäre dankbar. Vielen Dank
EDIT: Danke @helenhousandi für die Antwort. Ich hatte es aber schon so gemacht.
<?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 }
}
?>
Ich weiß, das ist etwas länger, aber es hat funktioniert! Ich denke, ich werde mit @ helenhousandis Antwort gehen.
functions.php
oder eine Plugin-Datei gehen. Solange die Haken stimmen, funktioniert es an beiden Stellen.Antworten:
Für den Kontaktmethodenfilter
user_contactmethods
:quelle
Obwohl der
user_contactmethods
Filter einer der wenigen für den Benutzerprofilbildschirm ist, da die anderen Felder in WordPress nicht erforderlich sind, können Sie jQueries verwenden.hide()
und.remove()
diejenigen, die Sie nicht möchten, ohne Komplikationen beim Speichern der Informationen effektiv entfernen . Sicher, eine Person ohne JS würde sie immer noch sehen, aber das ist eine kleine Minderheit, und ich vermute, dass die Informationen, die sich dort ändern, tatsächlich nichts bewirken werden.Ein Beispiel für das Entfernen des gesamten Teils der persönlichen Optionen (Verwaltungsleiste und Farbschema anzeigen). Ich weiß, dass es nicht genau das ist, wonach Sie suchen, ich wollte Ihnen nur ein kurzes Beispiel geben, das ich zur Hand habe:
Außerdem ein Hinweis zur Option "Admin-Leiste anzeigen": In 3.3 wird die Admin-Leiste zur Kopfzeile und kann daher nicht aktiviert oder deaktiviert werden.
Ich habe das Codebeispiel aktualisiert, um es genauer und vollständiger zu machen. Hatte ein paar Reste drin.
quelle
profile.php
. Ich musste dies auch für eine bestimmte benutzerdefinierte Rolle tun, die in meinem System definiert ist. Aktualisierung meiner Frage mit der Antwort.$("#nickname,#display_name").parent().parent().remove();
Da es anscheinend keinen guten PHP-Hook dafür gibt, habe ich die Felder mit CSS ausgeblendet und sie dann mit JS entfernt.
quelle
Über das WordPress-Support-Forum können Sie die Entfernung mit PHP durchführen. Dies entfernt den Abschnitt über sich selbst:
Der Code ersetzt die Überschrift "About Yourself" durch "Password" und entfernt dann alles zwischen dieser und der nächsten gefundenen Tabelle (die die Kennworttabelle ist).
Auch das Plugin WP Hide Dashboard ersetzt jQuery auf ähnliche Weise, wenn Sie es erweitern möchten.
quelle
admin_head-profile.php
andadmin_footer-profile.php
verwendenACHTUNG!!
1) Das Entfernen eines Feldes ist möglicherweise nicht gut , da beim Update, wenn Sie die wesentlichen Felder nicht an den WORDPRESS-Update-Hook senden, möglicherweise leere Werte für diese Felder festgelegt werden! (Zum Beispiel sollte es in übermittelter Form existieren , zB
<input name="username".../>
)Ich denke, es ist besser, Benutzer nur visuell auszublenden, mit jquery
.hide();
und nicht mit.remove();
BEISPIEL-Code, um die Felder " DISPLAY NAME " und " NICKNAME " auszublenden :
2) Um die Admin-Leiste auszublenden, gibt es eine spezielle Option im WordPress-Menü (in den Einstellungen) . für benutzerdefinierten Code, wie z
quelle
Verwenden
und hinzufügen
vor JavaScript.
quelle
Es gibt keinen Filter, um sie zu deaktivieren. Schauen Sie sich die Quelle (
/wp-admin/user-edit.php
) an, wenn Sie solche Dinge tun müssen. Sie können sie mit JS ausblenden, sie können jedoch weiterhin sichtbar gemacht werden, und die Werte werden beim POST aktualisiert.Die einzig gangbare Option ist, den Core selbst zu hacken. Stellen Sie einfach sicher, dass Sie mit dem Update fertig sind, und ignorieren Sie diese Felder beim POST.
quelle