it-swarm.com.de

Rufen Sie eine Liste aller verfügbaren Felder im Benutzerprofil ab

Standardmäßig verfügt die Seite Benutzerprofil über einige Optionen und Felder, die der Benutzer festlegen kann. Wie die folgenden:

Personal Options
-- Visual Editor
-- Admin Color Scheme
-- Keyboard Shortcuts
-- Toolbar
Name
-- First Name
-- Last Name
-- Nickname
-- Display Name
Contact Info
-- Website
About Yourself
-- Biographical Info
-- Avatar Display

In meinem Plugin, Deaktiviere Blogging , habe ich eine Einstellungsseite hinzugefügt, die alle diese Felder in Kontrollkästchen auflistet, um die auszublendenden Felder umzuschalten ( siehe Screenshot ).

Abhängig vom verwendeten Plugin oder Thema werden jedoch zusätzliche Einstellungen und Felder angezeigt. Nehmen Sie das Yoast SEO Plugin als Beispiel, das diese zusätzlichen Felder unter dem Abschnitt "Kontaktinformationen" und einen eigenen Abschnitt hinzufügt:

Contact Info
-- Website
-- Google+
-- Twitter username (without @)
-- Facebook profile URL
...
Yoast SEO
-- Title to use for Author page
-- Meta description to use for Author page
-- Exclude user from Author-sitemap
-- Disable SEO analysis
-- Disable readability analysis

Mit der Funktion wp_get_user_contact_methods() konnte ich leicht echo eine Liste der benutzerdefinierten Kontaktfelder erstellen, die vom Yoast SEO Plugin wie folgt hinzugefügt wurden:

add_action( 'personal_options', 'wpse_237504_user_profile_fields' );
function wpse_237504_user_profile_fields() {
    foreach ( wp_get_user_contact_methods() as $id => $label ) {
        echo( $label . " > " . $id . "<br>" );
    }
}

Ausgabe:

Google+ > googleplus
Twitter username (without @) > Twitter
Facebook profile URL > facebook

Leider sehe ich keine native WordPress-Funktion, die ich aufrufen kann, um alle im Benutzerprofil aufgelisteten Felder abzurufen.

Das Disable Blogging - Plugin verbirgt diese Felder, indem JavaScript basierend auf den in jedem for= festgelegten <label>-Werten verwendet wird. Zum Beispiel: <label for="user_login">Username</label>

?>
<script type="text/javascript">
    jQuery( document ).ready( function( $ ) {
    $( 'form#your-profile > h2' ).hide();
    <?php
        foreach ( $profile_fields as $label ) {
            echo( "$( '#" . $label . "' ).closest( 'tr' ).hide(); " );
        }
    ?>
    } );
</script>
<?php

Gesamtziel

Während dies für alle Benutzerprofilfelder funktioniert, die ich manuell im Plugin aufgelistet habe, ist es mein übergeordnetes Ziel für diese Frage, automatisch eine Liste aller verfügbaren Felder (sowohl native als auch benutzerdefinierte) im Benutzerprofil zu erhalten, ohne sie manuell auflisten zu müssen in meinem Plugin.

Auf diese Weise wird ein Benutzer, der das Blogging deaktivieren Plugin verwendet und Profildateien ausblenden möchte, die von einem anderen Plugin oder Thema erstellt wurden, automatisch als Kontrollkästchen aufgeführt.


Ich fordere zwar niemanden auf, den gesamten Code für mich zu schreiben (obwohl es mir auch nichts ausmacht und ich Sie gerne als Mitwirkenden hinzufüge), aber ich akzeptiere Teilantworten, die mir beim Ausfüllen helfen diese Funktion oder zeigen Sie mir einen alternativen Weg, um die gleichen Ergebnisse zu erzielen.

Wenn Ihnen etwas nicht klar ist, schreiben Sie einen Kommentar oder eine Nachricht an The Loop , um eine schnellere Antwort zu erhalten

Der zweite Parameter in get_user_meta ist optional, sodass Sie alle Benutzermeta wie folgt abrufen können (Code, der in meiner Installation schnell getestet wurde):

$cu = get_current_user_id ();
$um = get_user_meta ($cu);
var_dump ($um);

Dies würde auch Metafelder einschließen, die auf der Benutzerprofilseite ausgeblendet sind.

2
cjbj