Erweitern der Felder

Um nun diese Felder zu erweitern bedarf es eines kleinen Eingriffes in die functions.php des von euch verwendeten Themes. Hier muss eine Funktion eingebaut werden, die genau dieses bewirkt.

Bei dieser Funktion hat man die Wahl, ob man die Kontaktfelder erweitern oder ersetzen möchte. (siehe dazu Zeile 13)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
 * AIM, YIM und Jabber aus den Kontaktinformationen
 * herausnehmen und ersetzen oder die Kontaktinformationen erweitern.
 */
if(!function_exists('my_contact_info')) {
    function my_contact_info($contactmethods) {
        $array_Contactmethods = array(
            'facebook'   => 'Facebook',
            'twitter'    => 'Twitter',
            'googleplus' => 'Google+',
            'youtube'    => 'Youtube'
        );

//      $array_Contactmethods = array_merge($contactmethods, $array_Contactmethods);

        return $array_Contactmethods;
    }

    add_filter('user_contactmethods', 'my_contact_info');
}

Ist Zeile 13 – wie in diesem Beispiel – auskommentiert, so werden die Kontaktinformationen ersetzt. Das heisst, die bestehenden Felder (AIM, YIM und Jabber) werden einfach entfernt und durch die hier definierten Felder. In diesem Beispiel durch Facebook, Twitter und Youtube.

Sollen nun die Felder nicht entfernt werden, sondern erweitert, also die bestehenden Felder auch bestehen bleiben, so muss nur Zeile 13 “einkommentiert” werden, soll heissen, die beiden / am Beginn der Zeile müssen weg.

Die Felder für die Webseite und die E-Mail bleiben in beiden Fällen unberührt.

Kontaktinformationen auslesen

Die Kontaktinformationen wären natürlich komplett sinnbefreit, wenn man diese nicht auch irgendwie auf der Seite anzeigen könne. Da hilft ein Eingriff in das Theme ebenfalls weiter.

Um diese Informationen anzeigen zu können hilft get_the_author_meta($var_sFeldname); weiter. An einer Stelle eurer Wahl – also je nach dem wo ihr diese Informationen anzeigen wollt (single.php zum Beispiel) – fügt ihr folgende Zeilen ins Theme ein. Natürlich sollte man vorher abfragen, ob in das entsprechende Feld auch etwas eingetragen wurde. (siehe Zeile 2)

1
2
3
4
// Beispiel für die Anzeige des Links zum Twitteraccount des Autors
if(get_the_author_meta('twitter')) {
    echo '<a href="' . get_the_author_meta('twitter') . '" title="' . __('Follow me on Twitter', 'my_theme') . '">' . __('Follow me on Twitter', 'my_theme') . '</a>' . "\n";
}

Die Feldnamen sind die, die ihr in der oberen Funktion definiert habt. zusätzlich stehen noch ‘user_url‘ für die Webseite des Autors und ‘user_email‘ für die E-Mailadresse des Autors zur Verfügung.

Vorsicht bei E-Mailadressen

E-Mailadressen in Klartext auszugeben ist selten eine brillante Idee!!
Diese sollten, wenn überhaupt, verschlüsselt im Quelltext stehen. Um dies zu erreichen bedient man sich einer weiteren Funktion, welche – sofern man vorhat die Mailadressen aus den Kontaktinformationen auch zu verwenden, ebenfalls in die functions.php eingebunden wird.

1
2
3
4
5
6
7
8
9
10
11
12
if(!function_exists('my_scramble_email')) {
    function my_scramble_email($var_sEmail) {
        $var_sScrambled_Mail = "";
        $array_Unpack = unpack("C*", $var_sEmail);

        foreach ($array_Unpack as $var_sUnpacked) {
            $var_sScrambled_Mail .= sprintf("%%%X", $var_sUnpacked);
        }

        return $var_sScrambled_Mail;
    }
}

Der Aufruf für die E-Mail würde dann wie folgt aussehen:

1
2
3
4
// Beispiel Ausgabe eines mailto-Links zur Kontaktaufnahme zum Autor per Mail
if(get_the_author_meta('user_email') && function_exists('my_scramble_email')) {
    echo '<a href="mailto:' . my_scramble_email(get_the_author_meta('user_email')) . '" title="' . __('Write me a mail', 'my_theme') . '">' . __('Write me a mail', 'my_theme') . '</a>' . "\n";
}

In Zeile 2 wird hier abgefragt, ob eine E-Mailadresse hinterlegt ist, was sehr wahrscheinlich ist, denn diese ist erforderlich um einen Autor bei WordPress anzulegen und zusätzlich ob die Funktion my_scramble_email(); überhaupt verfügbar ist. Denn nur wenn beide Bedingungen eintreffen, wird der Link ausgegeben.

Fazit

Es ist also relativ simpel möglich die Kontaktinformationen eines Autors in WordPress zu erweitern und diese auch anzuzeigen. Wie diese Anzeige aussieht, obliegt natürlich eurer eigenen Kreativität. Was E-Mail anbelangt, würde ich dazu raten, dies eher über ein Kontaktformular zu erledigen, welches mehrere Empfänger unterstützt, solltet ihr mehrere Autoren in eurem Blog haben. Denn auch wenn, wie oben im Beispiel, die Mailadresse verschlüsselt wird, so ist dies doch keine absolute Sicherheit und kann durchaus umgangen werden.

In diesem Sinne, viel Spass damit :-)

Artikel weiterempfehlen
Werbung

8 Meinungen zu “WordPress: Kontaktinformationen im Nutzerprofil erweitern

  1. Das, genau das hier, ist das schöne an deinem Blog :-)

    Man sieht ein neues Feature, ob man es im eigenen Blog benutzen will oder nicht, muss man sich nicht erst die ganzen Infos irgendwo zusammen lesen, sondern wartet ein paar Tage bis du das dazugehörige Howto schreibst ;-)

    Danke für die Erläuterung, man findet diese auf vielen Seiten, aber selten mit den wesentlichen Bestandteilen und übersichtlich.

    Gruß,
    Martin

  2. Hallo Martin,

    Also, von der Seite habe ich das Ganze noch gar nicht betrachtet. Aber wenn ich es mir recht überlege, meine functions.php hat noch so einiges auf Lager, was da zusätzlich rein gekommen ist.

    Wobei ich sagen muss, zu dem hier hat mich eigentlich Ralf inspiriert als er wegen seiner Autorbox angefragt hat. Die Idee diese vor die Plugins zu setzen kam also durch ihn. Macht ja auch Sinn, denn so ist diese näher am Artikel selbst und hat so mehr Verbindung mit dem Artikel. Wie man die dort hin bekommt, schreib ich auch noch mal nieder bei Gelegenheit. Da ist dann schon etwas mehr Arbeit und mehr Anpassung nötig.

    Also, immer schön am RSS/Twitter was auch immer bleiben :-)

  3. Ich denke in einem Blog mit mehreren Autoren ist das durchaus sinnvoll. Bei mir, zum Beispiel, sind ja das Social Profile schon in der Sidebar. Dafür hab ich heute Nacht überlegt die Autorenbox wieder unter den Artikeln anzuzeigen. Hab aber im Theme nix gefunden. Hattest Du die ganz rausgelöscht oder nur auskommentiert? ;-)

  4. Die hatte ich damals auf Deinen Wunsch hin deaktiviert. Das heißt, mit einer Bedingung versehen, die nicht erfüllt werden kann. Aber das kannst Du ganz einfach ändern. Mach deine single.php auf und suche folgende Zeile:

    1
    <?php if ( get_the_author_meta( 'description' ) && 1 == 2 ) : // If a user has filled out their description, show a bio on their entries  ?>

    Diese Zeile ersetzt Du mit Folgender:

    1
    <?php if ( get_the_author_meta( 'description' ) ) : // If a user has filled out their description, show a bio on their entries  ?>

    Und schon sollte Deine Box wieder aktiv sein :-)

    Vorausgesetzt ist natürlich, dass Du in Deinem Profil auch etwas in der Autorenbeschreibung reingeschrieben hast.

Hinterlasse eine Antwort

Ihre Email-Adresse wird nicht veröffentlicht. Pflichtfelder sind durch * markiert.

Sie können folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>