Passen Sie profile.php

Mit dem Plugin “Erweiterte benutzerdefinierte Felder”: https://wordpress.org/plugins/advanced-custom-fields/ kann ich meine benutzerdefinierten Felder zu profile.php hinzufügen.

Aber wie entferne ich die Standardelemente von profile.php (Persönliche Optionen, Name, etc.)?

Ich weiß, dass ich neue Vorlagendateien in meinem untergeordneten Thema erstellen kann, um zu überschreiben, wie Seiten aussehen, aber ich kann nicht finden, wie man das mit profile.php macht.

Ich habe angefangen, CSS zu verwenden, um die Elemente auszublenden, das funktioniert außer für die Titel, die keine class oder ID haben, und ich kann nicht einfach das gesamte Formular ausblenden, weil Erweiterte benutzerdefinierte Felder die neuen Elemente in die gleiche Form bringen.

Ich würde es vorziehen, von großen Plugins fernzubleiben, die Frontend-Benutzerkonten über dem bestehenden System erstellen, nur damit ich eine angepasste Profilbearbeitungsseite erhalten kann.

Danke für jede Hilfe.

Solutions Collecting From Web of "Passen Sie profile.php"

Es gibt wahrscheinlich mehrere Möglichkeiten, um Ihr Ziel zu erreichen, unten ist eine der Möglichkeiten, die von mir gezeigt werden.
(diese 2 functionen gehören zueinander)

Bitte machen Sie immer eine Kopie von functions.php bevor Sie mit dem Bearbeiten / Hinzufügen eines Plugins oder eines anderen Code-Snippets beginnen.

 /** * Remove fields from an user profile page for all except Administrator * * FYI {@link https://codex.wordpress.org/Function_Reference/current_user_can} * {@link https://codex.wordpress.org/Roles_and_Capabilities} * {@link https://codex.wordpress.org/Plugin_API/Action_Reference/admin_footer} * {@link https://developer.wordpress.org/reference/hooks/load-pagenow/} * * Checked with @version WordPress 4.8 */ add_action('admin_init', 'wpse273289_remove_profile_fields' ); function wpse273289_remove_profile_fields() { global $pagenow; // apply only to user profile or user edit pages if( $pagenow !=='profile.php' && $pagenow !=='user-edit.php' ) { return; } // Make it happen for all except Administrators if( current_user_can( 'manage_options' ) ) { return; } add_action( 'admin_footer', 'wpse273289_remove_profile_fields_js' ); } /** * Remove (below)selected fields on user profile * This function belongs to the wpse273289_remove_profile_fields function! * */ function wpse273289_remove_profile_fields_js() { ?>  < ?php } 

Die obigen Felder im Skript sind nur Beispiele, also passen Sie sie bitte Ihren Wünschen an.
Beide functionen werden in einer lokalen Sandbox überprüft und funktionieren für mich.

Hinweis: oben ist NICHT mit ACF-Plugin getestet, aber das sollte kein Problem sein.

Eine andere Möglichkeit besteht darin, diese Elemente mithilfe von CSS zu deaktivieren / auszublenden.

Zuerst müssen Sie eine function hinzufügen, die basierend auf der Benutzerrolle eine Body-class hinzufügt:

 function your_prefix_add_admin_body_class( $classes ) { $roles = wp_get_current_user()->roles; return "$classes ".implode(' ', $roles); } add_filter( 'admin_body_class', 'your_prefix_add_admin_body_class' ); 

Und dann fügen Sie Ihrem Administrator benutzerdefinierte CSS hinzu:

 function your_prefix_custom_css() { echo ''; } add_action('admin_head', 'your_prefix_custom_css'); 

Denken Sie daran, dies ist nicht die sicherste Lösung. Wenn der Benutzer ein bisschen CSS kennt, kann er es wieder aktivieren.