toscho.design

WordPress-Plugin: Öffentliche Kontaktdaten

Das brauche ich bei jeder Website: Eine öffentlich sichtbare E-Mail-Adresse und eine Telefonnummer. Wenn nur ein Hauptbenutzer existiert, packe ich diese Daten per Miniplugin in dessen Profil. In Unternehmen und anderen Organisationen jedoch ist das keine Option: Da existiert oft eine spezielle Supporthotline, und die E-Mail-Adresse wird auch von mehreren Leuten verwaltet.

Das Plugin Public Contact Data erzeugt dafür neue Felder im Backend unter Einstellungen/Allgemein. Außerdem gibt es drei weitere Felder für Google Plus, Facebook und Twitter.

Im Screenshot hier werden vier Felder benutzt. Neben E-Mail und Telefon auch Facebook und Google Plus. Im Vordergrund sieht man den Tab mit dem Backend, im Hintergrund den Einsatz in der Website.
Screenshot Public Contact Data

Die Liste kann man über den Filter 'pcd_fields' ändern. Ein Beispiel:

add_filter( 'pcd_fields', 'change_pcd_fields', 10, 1 );
function change_pcd_fields( $fields )
{
	// remove an item
	unset ( $fields['facebook'] );
	// add an item
	$fields['github'] = 'GitHub';
	return $fields;
}

Für jedes Feld wird automatisch ein Shortcode erstellt nach dem Muster [public_$fieldname]. Hintergrund dazu auf WordPress Stack Exchange.
[public_email] gibt als die E-Mail-Adresse aus, [public_github] den Wert des per Filter erzeugten GitHub-Feldes.

Für den Gebrauch im Theme existiert auch eine Aktion namens pcd. Deren erster Parameter ist der Feldname, der zweite ein Array mit Optionen:

array (
	'before'  => '',
	'after'   => '',
	'link'    => TRUE,
	'print'   => TRUE,
	'pattern' => FALSE
);

Um einen E-Mail-Link zu bekommen, schreibt man beispielsweise:

do_action( 'pcd', 'email', array ( 'before' => 'Email: ' ) );

Die E-Mail-Adresse wird immer maskiert ausgegeben, also durch die Funktion antispambot() geschickt. Das hilft nicht viel, schadet aber auch nicht.

Wird das Argument pattern benutzt, so wird link ignoriert. Benutze %value% als Platzhalter im Pattern-String.

Der Vorteil beim Einsatz der Aktion: Wird das Plugin abgeschaltet, passiert nichts Schlimmes. Es wird einfach nichts ausgegeben, weil WordPress die Aktion ja nicht mehr kennt und somit ignoriert.

Man kann die wenigen öffentlichen Funktionen der Klasse auch über den Zugriff auf eine eventuell schon existierende Instanz ansprechen. Beispiel:

Public_Contact_Data::instance()->action_handler( $field, $options );

Das Plugin ist natürlich übersetzbar, eine deutsche Übersetzung liegt bei. Deshalb heißt es in der Pluginliste eines ins Deutsche übersetzten WordPress’ auch Öffentliche Kontaktdaten. Momentan wird die Sprachdatei nur im Backend geladen, um die Ladezeit zu schonen.

Den Code findet man auf GitHub, im Bugtracker dort möchte ich auch Fehlermeldungen und Verbesserungsvorschläge sehen.

Ich habe das Plugin unter eine MIT Lizenz gestellt. Die ist kompatibel mit der GPL, gibt dem Benutzer aber etwas mehr Freiraum.

Ein Kommentar

  1. Mika am 01.03.2012 · 21:23

    Cool,

    ich werde dein Plugin gleich mal testen.

    Gruß Mika