Für Menschen · Seien Sie begeistert und Sie werden begeistern !
Seit Version 2.5 wird WordPress mit der Shortcode-API ausgeliefert, näheres dazu hatte ich im Artikel „WordPress 2.5 Shortcode API“ erläutert. Nun hatten ich ihm Rahmen mit einem lieben Leser eine Anforderung, die sicher nicht selten vorkommt und die man mit Hilfe dieser Shortcode-API und den benutzerdefinierten Feldern sehr schön lösen kann.
Pro Artikel hinterlegt der Autor drei benutzerdefinierte Felder, in einem weiteren Artikel schon mal näher erläutert: bild, link, linktext. Im Text kann er den Shortcode [werbung] setzen. Diesen erkennt WordPress und mit Hilfe der folgenden Funktion werden die entsprechenden Daten geladen und die Werbung wir dann an dieser Stelle eingebunden.
![]()
Die folgende Funktion kann als Plugin oder in der functions.php des Themes abgelegt werden.
function example_link() {
global $wp_query;
$postID = $wp_query->post->ID;
$mylink = get_post_custom_values('link', $postID);
$mypic = get_post_custom_values('bild', $postID);
$mylinktext = get_post_custom_values('linktext', $postID);
return '<a href="' . $mylink[0] . '"><img title="' . $mylinktext[0] . '" src="' . $mypic[0] . '" alt="" /></a>';
}
add_shortcode('werbung', 'example_link');
Im Text erscheint nun auf recht einfache Weise das Bild mit Link und Linktext. Die Lösung zeigt nur einen Lösungsweg und kann sicher in der einen oder anderem Form Anwendung finden. Trotzdem sollte man überlegen, wie man die Shortcodes nutzen will und die Funktion darauf hin anpassen. Ähnlich könnte auch die Daten für Link, Bild, und Linktext aus anderen Datenfeldern kommen, die Shortcode-API erleichtert es aber, dass Autoren derartige Inhalte in den Artikel einbinden können.
bueltge.de [by:ltge.de] wird von Frank Bültge geführt, administriert und gestaltet. Alle Inhalte sind persönlich von mir ausgewählt und erstellt, nach bestem Gewissen und Können, was die Möglichkeit von Fehlern nicht ausschließt.
Das Weblog wird angetrieben von WordPress und aktuell gibt es 980 Beiträge, 18722 Kommentare in 14 Kategorien und 464 Tags.
Das Blog wird liebevoll mit xHTML & CSS in Handarbeit gestaltet. Erstellt mit ♥ zum Befüllen und Erhalten.
Design und Code ist unter Copyright
© 2001 - 2012 bueltge.de [by:ltge.de]
26. August 2008 um 16:59
Sehr schönes Beispiel für die Shortcodes bzw Custom Keys. Werde etwas ähnliches demnächst für einen Kunden brauchen, bzw in deren Internet Auftritt massiv auf Shortcodes setzen müssen da viele Dinge einfach zu komplex sind um es einem Laien verständlich zu machen.
27. August 2008 um 02:01
Sehr schön mal solch ein Beispiel zu haben! Das wird mir sicher noch nützen!
27. August 2008 um 10:18
Danke für das Beispiel, werde ich mir mal bei Zeiten zu Gemüte führen und genauer anschauen um es dann auch selber zu nutzen. Hab mich bisher immer vor dem Einsatz von Shortcodes gedrückt, da ich keine Lust dazu hatte mich damit zu befassen. Aber mit so einem guten Beispiel, sollte selbst mir das gelingen.
27. August 2008 um 13:21
Eine einfache und elegante Lösung, wie ich finde. Danke für den Tip. Lässt sich bestimmt irgendwann mal verwenden.
27. August 2008 um 16:34
6. Juli 2009 um 17:15
Und noch schöner wäre es, wenn man shortcodes in meta_value-Feldern nutzen könnte.
Leider setzt WP sie dort aber nicht um: [text] bleibt bei der Ausgabe: [text].
Würde gerne den Autoren eines Blogs verschiedene Adressen-Snippets anbieten [adr01] etc., die sie dann nicht immer vollständig in die value-Felder tippen müßten.
Gibt es da vielleicht eine Lösung?
6. Juli 2009 um 17:35
@Adrian: doch, man sollte die Inhalte von benutz. Feldern in Shortcodes nutzen können, eventuell ist das Plugin ein Tipp
6. Juli 2009 um 19:01
Danke, das ist ein Tipp. Leider nicht der Richtige. Dann habe ich mich unverständlich ausgedrückt: Ich möchte nicht meta_values in shortcodes nutzen, sondern umgekehrt
Beispiel: Nach dem eigentlichen Artikel (Veranstaltung) kann der Autor Angaben machen, die dann in eine Tabelle fließen. Die optionalen Felder habe ich mit Custom Fields für ihn bereits angelegt (dank Flutter-Plugin sehr einfach). Nun finden die Veranstaltungen an verschieden Adressen statt, die er mit shortcodes eingeben können soll.
Statt "UncooleEckkneipe, Vermüllte Straße 123, 12345 Hippesheim" sollte er nur [adr5] eingeben müssen. Die shortcodes liegen bereits vor, da es nur 10 Orte sein können.
7. Juli 2009 um 07:54
Nochmal, du willst also Shortcodes in den benutz. Feldern verwenden?
7. Juli 2009 um 08:33
mach die Ausgabe einfach mit
7. Juli 2009 um 08:50
Ja. ("Und noch schöner wäre es, wenn man shortcodes in meta_value-Feldern nutzen könnte.")
7. Juli 2009 um 11:53
Meinst du dass du den Inhalt direkt angezeigt bekommen willst?
Ich versteh nicht so ganz worauf du willst...
7. Juli 2009 um 12:56
NACH Eingabe von Titel und Content des Events kann der Autor über diverse custom fields Daten eingeben (Startdatum, Seminarleiter, Kosten, Ort etc.), die eine Tabelle füllen, die per Template an den Artikel angefügt wird.
Er sieht links z.B. "Ort" (meta_key) und rechts ein Textinputfeld (meta_value), in das er die Adresse eingibt.
Adressen soll er als shortcode in das Textinputfeld eingeben können (er weiß z.B., dass Adresse xy den shortcode [adr_xy] hat).
Das aber funktioniert bisher nicht. Nach Veröffentlichung steht an Stelle der Adresse nur der shortcode "[adr_xy]" in der Tabellenzelle. Ich weiß nicht, wie ich mich noch anders ausdrücken soll...
7. Juli 2009 um 13:46
Was aber bedeutet, dass er die Shortcodes kennen muss. Ich vermute, dass du mit einem Plugin besser bedient wärest, zumindest was den Aspekt Nutzbarkeit und Usability betrifft. Metaboxen lassen sich recht einfach integrieren und dort könnte man diverse Inhalte anbieten, so dass man als User wirklich nur auswählen muss.
Aber, ich habe nun verstanden, Shortcodes als Wert für benutzdef. Felder.
7. Juli 2009 um 14:03
Danke für eure Antworten. Wenn es die shortcode-API nicht zuläßt (was noch immer ungeklärt ist), werde ich deine Anregung bzgl. Metaboxen aufgreifen. Ist mir noch neu, schau ich mir an.
Bin soeben auf das Plugin "Pods" gestoßen, dass ein weites Feld für die CMS-Nutzung von WP öffnet (und weitaus solider und variabler ist als die Nuzung von custom fields inkl. Flutter). Das könnte auch eine gute Lösung sein.
5. Dezember 2010 um 22:22
Schade.. hab alles wie beschrieben eingegeben.. Funktioniert leider igendwie dich nicht..
Aber genau das was ich gesucht habe.. Was tun..?
WP Version 3.02 ganz frisch..
5. Dezember 2010 um 22:22
sorry, mein Fehler.. funktioniert einwandfrei... Danke..
26. Mai 2011 um 22:11
Super Idee mit den Shortcodes, danke dafür! Ich habe bisher für Werbung immer ein spezielles Plugin eingesetzt, den Advertising Manager.
30. Dezember 2011 um 16:40
Hallo, eine tolle Idee was mit Shortcodes so alles machbar ist. Ich bin gerade am aufbauen unserer Famiulien Seite und habe versucht das umzusetzen. Leider ohne erfolg. Ein einfaches Drag & Drop des obigen Codes brachte kein Ergebnis/Ausgabe des Feldes.
Was mache ich falsch? Um das ganze für mich einfacher zu gestalten (langsames rantasten), habe ich folgenden Code in die functions.php aufgenommen (alle anderen Shortcodes funktionieren dort drin) und das Bentzerdefinierte Feld fldOrt angelegt und mit dem Text Toilettenschüssel belegt.
function stellplatz( $atts, $content = null ) { $fldOrt= get_post_meta($post->ID, 'fldOrt', true); return '' . $fldOrt . $content . ''; } add_shortcode( 'stellplatz', 'stellplatz' );Nach eingabe in meinem Content von [stellplatz] upssalat [/stellplatz] hätte ich jetzt Toilettenschüssel upssalat erwartet. statt dessen kam nur upssalat.
Hat jemand noch einen Tipp für mich in welche Richtung ich laufen muß?
Danke schon mal vorab (übrigens, habe den letzten stand von WordPress installiert.
viele Grüße
Achim
2. Januar 2012 um 08:03
@Achim: du vermischt hier einige Sachen; folgendes sollte klappen und den Shortcode mit dem Wert deines Custom Fields ersetzen