Für Menschen · Seien Sie begeistert und Sie werden begeistern !
Die Aufgabe unseres kleinen Tutorials bestand ja darin, die „benutzerdefinierten Felder“ für den Bereich Meta Keywords oder Description im Header deines Blogs zu nutzen. Dazu müssen wir die Daten außerhalb von the_loop bereitstellen. Übergeben wir Daten innerhalb von the_loop, ist das alles ein wenig einfacher, da hier alle Zugriffe, die WP benutzt, breit stehen und damit kann sie auch jedes Plugin nutzen.
In diesem Teil wollen wir nun die Daten aus dem Feld „description“ in den Header bringen. Erinnert euch dazu an Teil 1 dieser Serie, in der wir die kleine hauseigene Funktion von WP in ein Plugin integriert hatten und nur die Möglichkeit geschaffen haben, dass man das eigentliche Feld, welches wir auslesen wollen, definieren kann. Diese Routine tasten wir nicht an, somit können wir später immer wieder darauf zugreifen und die Daten holen wir nun eigens aus der Datenbank. Dazu sind einige Kenntnisse in der mySQL-Abfrage sehr hilfreich - als Tipp dient die Manuel von mySQL oder das Buch „DSP“ von Christoph Reeg (Online oder als PDF verfügbar).
Im folgenden ist der Code zu finden, den ich mir gebaut habe, um das Feld aus der Datenbank zu lesen. Hinweise und Erläuterungen habe ich direkt in den Code geschrieben, so könnt ihr diese auch in eurem Lieblingseditor lesen, wenn ihr am Plugin arbeitet. Auch hier noch mal der Hinweis, die PHP-Routine soll nicht perfekt sein, sie soll verdeutlichen, wie wir zu einer Lösung kommen. Wer mit diesem Plugin arbeiten will, der kann gerne den Code optimieren.
// ausserhalb von the_loop
function fb_meta_description_outside($field) {
global $wpdb;
if (empty($between)) $limit = 1;
if ($order != 'ASC') $order = 'DESC';
$aktuellesDatum = current_time('mysql');
/** unsere SQL-Anweisung:
SELECT meta_value FROM $wpdb->posts AS posts, $wpdb->postmeta AS postmeta
WHERE posts.ID = postmeta.post_id
AND postmeta.meta_key = '$field'
AND posts.post_date < '$aktuellesDatum'
ORDER BY posts.post_date $order
LIMIT $limit
*/
$sql = "SELECT "; //waehlt eine bestimmte Spalte, mehrere Spalten oder abgeleitete Spaltenwerte
$sql .= "meta_value FROM $wpdb->posts AS posts, $wpdb->postmeta AS postmeta "; //Tabelle _posts und _postmetadata
$sql .= "WHERE posts.ID = postmeta.post_id "; //wenn ID in _posts und post_id in _postmeta gleich sind
$sql .= "AND postmeta.meta_key = '$field' "; //waehlt bestimmte Zeilen - meta_key in _postmeta von Variable $field
$sql .= "AND posts.post_date < '$aktuellesDatum' "; //kleiner als aktuelles Datum
$sql .= "ORDER BY posts.post_date $order LIMIT $limit"; //sortiert die Ausgabe,sonst bekommen wir immer die erste
$results = array();
$values = array();
$results = $wpdb->get_results($sql);
if (!empty($results))
foreach ($results as $result) { $values[] = $result->meta_value; };
return fb_meta_description_value($field, $values);
}
function fb_meta_description_value($field, $meta_values) {
if (empty($between)) $meta_values = array_slice($meta_values,0,1);
if (!empty($meta_values))
foreach ($meta_values as $meta) {
$values[] = apply_filters('the_meta', $meta);
}
if (empty($values)) $value = '';
else {
$values = array_map('trim', $values);
switch ($size = sizeof($values)) {
case 1:
$value = $values[0];
break;
case 2:
$value = $values[0] . $values[1];
break;
default:
$value = implode(array_slice($values,0,$size-1)) . $values[$size-1];
}
}
return $value;
}
Bauen wir nun unsere neue Funktion in die header.php unseres Blogs ein. In meinem Beispiel wähle ich das Feld „description“ aus und will die Daten aus diesem Feld im Meta-Tag des Headers ausgeben. Folgende Zeile schmückt nun die header.php .
<meta name="description" content="<?php echo fb_meta_description_outside('description'); ?>" /></meta>
Schaut euch nun die Seite an - nicht viel zu sehen, dann schau in den Quellcode der Seite. Hier finden wir nun den „Wert“, den wir zum Feld description gepflegt haben. Somit könnten wir nun zu jedem einzelnen Beitrag oder Seite eine eigene Beschreibung ausgeben. Die Seite ist dann wesentlich optimierter für Suchmaschinen, da eine genaue Beschreibung im Bereich Meta zum Inhalt existiert. Das Gleiche kann man mit anderen Feldern machen, denn die entstandene Funktion ist ja von der Übergabe der Parameter abhängig. wir könnten also auch in unserem Beispiel noch zusätzlich die „keywords“, denn dazu haben wir eingangs ein Feld erstellt, abfragen und diese in den Header schreiben. Das sieht dann in der header.php so aus:
<meta name="keywords" content="<?php echo fb_meta_description_outside('keywords'); ?>" />
</meta><meta name="description" content="<?php echo fb_meta_description_outside('description'); ?>" /></meta>
Schaue ich mir dann wieder meine Seite an und öffne den Quellcode, habe ich saubere Keywords und eine Description zum Thema, falls sie inhaltlich besser gepflegt ist, als in unserem Tutorial.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head profile="http://gmpg.org/xfn/11">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Test FB » Blog Archiv » Tutorial, wir schreiben ein WP-Plugin</title>
<meta name="generator" content="WordPress 2.0.2" /> <!-- leave this for stats -->
<meta name="keywords" content="Test keywords" />
<meta name="description" content="Test description" />
...</head></html>
Nun gilt es eigentlich nur noch, dass wir die entstandenen Lösungen aus Teil 2 und dem hiesigen Abschnitt zusammen fügen. Damit haben wir einmal die Möglichkeit ein Feld innerhalb von the Loop abzufragen, mit einer eigenen Optionsseite und wir haben die Möglichkeit die Daten außerhalb von the_loop einzubinden. Und auch dort können wir jedes Feld abfragen.
Natürlich kann man mit diesen benutzerdefinierten Feldern viel mehr machen, als nur die descriptions oder keywords einer Seite zu speichern. Genau deshalb sind sie ja auch in WordPress vorhanden. Zum Beispiel könnt man so in jedem Beitrag seine gegenwärtige Verfassung durch einen Wert wiedergeben, oder diesen Wert dann wieder durch ein Bild ersetzen.
Was ich damit sagen will - probiere, tüftele - es macht Spaß etwas zu versuchen und dazu zu lernen.
Meinen Dank möchte ich schon jetzt allen Lesern aussprechen, die dieses Tutorial aufmerksam verfolgt haben und mich vielleicht auf diverse Fehler hinweisen. Wichtig ist mir, dass es verständlich ist und das ihr ein wenig Spass dabei habt, euren eigenen Blog zu erweitern oder einfach nur mit diversen Gimmicks zu gestallten.
Wie immer gilt - wenn du Fragen hast, keine Angst - her damit (Nur um ein wenig Geduld bitte ich.) Und wenn es dir besonders gut gefallen hat, dass schau auf meine Wunschliste und Spende in einer der vielen Möglichkeiten - Danke.
Download als phps-Datei: fb_meta_description_3.phps - 3 KByte

Download als phps-Datei: fb_meta_description_31.phps - 3 KByte
Kommentarregeln: Bleib cool, kritisch ist in Ordnung, aber wenn du unhöflich bist, dann lösche ich deinen Kommentar. Bitte benutze deinen persönlichen Namen oder Initialen und nicht den Namen eines Unternehmens, dies würde als Spam gewertet und wird gelöscht. Der Zusammenhang zwischen Namen und URL sollte nicht offensichtlich auf Spam hindeuten! ♥ Ansonsten, vielen Dank für den Kommentar und viel Spaß mit meinem Blog.
händischer Spam:
Beachte die Kommentarregeln, jede Form von versuchtem Spam wird gelöscht. Warum und wieso steht in einem meiner Beiträge.
Bezug auf Textstellen:
Du kannst direkt bezug auf Textstellen im Beitrag nehmen. Dazu muss lediglich der Bereich im Artikel markiert werden; daraufhin erscheint ein Button, der den markierten Text in das Kommentarfeld übernimmt und als Zitat auszeichnet. Die Funktion ist nur bei aktivem JavaScript nutzbar.
xHTML:
Du kannst folgende Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <blockquote cite=""> <code> <pre> <em> <strong> <strike> <ul> <ul> <li>
Achte darauf, wenn du Code im Kommentar hinterlegen willst, dann muss der Code maskiert sein. Dann wird er nicht interpretiert. Der Code muss mit Hilfe von HTML-Entities dargestellt werden, d.h. dass man z.B. < als < und > als > einfügt.
E-Mail-Benachrichtigung bei neuen Kommentaren ?
Wenn der Haken in der Checkbox gesetzt ist, dann wirst du über neue Kommentare vie E-Mail informiert. Der Versand erfolgt nur, wenn du die URL in der Bestätigungs-E-Mail genutzt hast oder schon Abonnent hier im Blog bist.
Kommentar erscheint nicht:
Alle Kommentare werden manuell geprüft, freigegeben und nach Möglichkeit beantwortet. Bitte um etwas Geduld und Nachsicht.
Identifikationsbilder (Avatare):
Auf Gravatar.com kann man sich mit seiner E-Mail-Adresse registrieren und ein Bild hochladen, dann erscheint dieses Gravatar hier und in vielen weiteren Blogs.
Spamschutz:
Das Kommentarformular ist mit einem Spamschutz ausgerüstet. Solltest du diesen Artikel ohne JavaScript besuchen und kommentieren wollen, so muss du die Frage beantworten und das jeweilige Wort in das Textfeld eingeben.
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 892 Beiträge, 16496 Kommentare in 14 Kategorien und 450 Tags.
Das Blog wird liebevoll mit xHTML & CSS in Handarbeit gestaltet.
Design und Code ist unter Copyright
© 2001 - 2010 bueltge.de [by:ltge.de]
20. September 2006 um 11:08
20. September 2006 um 11:14
20. September 2006 um 11:24
25. September 2006 um 12:36
25. September 2006 um 16:54
8. November 2006 um 16:01
8. November 2006 um 16:05
8. November 2006 um 16:11
12. August 2007 um 22:40
Hey,
wirklich eine klasse Tutorial Reihe. Habe nun alle 4 durch und blicke nun ein bisschen durch. Habe sogar schon an einem eigenen Plugin angefangen. Allerdings möchte ich dafür eine DB Table erstellen. Das klappt noch nicht so ganz. Vielleicht kennst du da ja noch einen guten hinweis. Ansonsten gucke ich fleißig in andere Plugins und schaue mir deren Lösungen an. =)
Viele Grüße
Benedict Ernst
4. Dezember 2007 um 21:38
23. Januar 2008 um 16:43
wie kann ich die reihenfolge der zu ladenen plugins ändern? ich möchte ein plugin an erster stelle laden, so dass der html ordentlich aussieht und die metadaten als erstes stehen.
26. März 2008 um 13:31
Das Danke mit extra dickem ! geht zurück. Hab in deutscher Sprache keine vergleichbar gute Anleitung gefunden.
21. August 2008 um 19:07
Danke für das gute Tutorial. Werde die Idee mit den Feldern in meinem Blog einsetzen, da durch die Verwendung des Plugins "qTranslate" bei den Descriptions doppelter Content generiert wird. Man kann zwar auch das Feld "Auszug" verwenden (get_the_excerpt()) aber das geht leider nur für Posts und nicht für Seiten.
3. Januar 2009 um 13:24
Vielen Dank für diese super Artikel-Serie! Aber welches Plugin benutzt du für den Kasten der in den Artikel-Serien immer zu sehen ist? (Wenn ich mal so neugierig fragen darf)
4. Januar 2009 um 19:29
@Phil: die sind ohne Plugin entstanden, einfaches xHTML und CSS im Beitrag.
1. Februar 2010 um 02:48
Ich habe es inzwischen aufgegeben, ein gutes WP-Plugin zu finden, das es meinen Besuchern erlaubt, ihre Kommentare nachträglich zu ändern, ohne mit komischen Overlay-Popups belästigt zu werden, und will nun selbst aktiv werden. Hierzu müsste ich aber, wenn ich das richtig sehe, die Befugnisse des Besuchers "überschreiben". Gibt es dafür einen Hook? Im Plugin-API konnte ich nichts dergleichen finden.
1. Februar 2010 um 08:22
hmmm... weiss nicht ob es hier her passt, jedoch suche ich eine ebenso verständliche
Anleitung wie ich ein Plugin in das WordPress Repository einfügen kann.
Denn die Anleitung auf WP.org verwirrt mich ...
... vielleicht hat ja jemand brauchbare Tips bzw. Links für mich
Gracias!
1. Februar 2010 um 09:59
@tux.: nein, dazu ist mir nichts bekannt; du musst direkt in die DB schreiben, bzw. den Hook ansprechen, der die Kommentare ändert und die Berechtigung raus nehmen.