Themes, Tipps, WordPress

WP – Tutorial, wir schreiben ein WordPress Theme – Teil 3

Nachdem wir im zweiten Teil der Serie „Ein WordPress Theme selbst erstellen” das Stylesheet mit Hilfe der Template Tags eingebunden haben, sollen nun im dritten Teil alle weiteren Daten aus dem Backend von WordPress geladen werden. Damit wird die Grundlage geschaffen, dass ein Theme die Einstellungen des jeweiligen Weblogs nutzt und das Theme in jedem beliebigen Weblog einsetzbar ist.

Gleich vorweg, es wird in diesem Artikel eine ganze Reihe an Code kommen. Bitte nicht verzweifeln, wenn es der erste Kontakt mit PHP-Syntax ist. Mit der Zeit kommt die Übung, ganz gleich wie das Lernen von HTML. Außerdem werde ich gleichzeitig auf eine Reihe Template Tags und Funktionen eingehen, die für das erstellen eines Themes von Relevanz sind und in diesem Teil des Tutorials nötig sind.

Im diesem Abschnitt des Tutorials werden wir den head-Abschnitt der index.php erweitern. Es werden nicht nur die statischen Daten so erweitert, dass die Werte aus der Datenbank gezogen werden, sondern ich erweitere gleich um eine Reihe weiterer Zeilen und Zeichen, um die Möglichkeiten und nach meiner Meinung wichtigen Daten zu integrieren. Weiterlesen

Standard
Tipps, Webküche, WordPress

Tipps für das Schreiben guter WordPress Tipps

Mit diesem Thema befasst Lorelle auf Blog Herald in einem aktuellen Artikel. Angesichts der Tatsache, dass die Anzahl der Tipps zur Webpublishing Plattform WordPress immer größer wird, ist dieser Artikel recht interessant.

Der Artikel weist auf einige grundlegende Regeln hin, die man eingehalten sollte – Begründungen sind hinzugefügt und die Aussagen stehen nicht leer im Raum.

Kurz und bündig, sehen die Tipps folgendermaßen aus.

  • Schreibe WordPress, nicht WordPress!
    Der Artikel verliert an Glanz und Glaubwürdigkeit, wenn man nicht das eingetragene Warenzeichen kennt. (Fällt mir auch immer wieder in Zeitschriften und auch Büchern auf)
  • Tipps zu WordPress sollten auch auf der Plattform WordPress präsentiert werden.
  • Achte auf die Darstellung von Code. Der Code sollte fehlerfrei und sauber integriert sein, ohne Character Entities
  • Bringe es auf den Punkt. Tipps sollen helfen und nicht langatmige Geschichten erzählen.
  • Innerhalb des Beitrags ist sparsam mit Werbung umzugehen.
  • Leute kommen über Suchmaschinen auf den Artikel, sie kennen die Hintergründe des Problems nicht. Erkläre also mehr als die Lösung, erkläre wozu und warum du sie anwendest.
  • Kopiere nicht den Inhalt oder den Code anderer Beiträge, wenn es nicht eine Bereicherung gibt. Ebenso gehört es sich, die Quelle zu nennen und darauf hinzuweisen.

Der Artikel geht wesentlich tiefer und beleuchtet die verschiedenen Facetten und Hintergründe – Lesebefehl für alle, die Tipps zum Thema WordPress veröffentlichen: „Tips For Writing Good WordPress Tips“.

Standard
Tipps, WordPress

WP – Tutorial, wir schreiben ein WordPress Plugin – Teil 3

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->prepare( $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;
}

Einbau im Blog

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  &raquo; Blog Archiv   &raquo; 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>

Optionsseite und Funktion

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.

Motivation

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.

Danke !

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:

Außerhalb von the_loop:

Download als phps-DateiDownload als phps-Datei: fb_meta_description_3.phps – 3 KByte

Download als phps-Datei

Die Abschlussdatei:

Download als phps-Datei: fb_meta_description_31.phps – 3 KByte


Standard
Tipps, Webküche, WordPress

Optimiere deinen Blog

Im Beitrag „Optimiere deinen Feed“ habe ich schon die wichtigsten Erkenntnisse aus dem Screencast von Stephen Spencer kurz aufgenommen und näheres erläutert. Seine Tipps zum optimieren des Blogs sind aber ebenso interessant und ich habe sie im folgenden aufgelistet und einige Tipps, die sich speziell auf WordPress beziehen, dazu gebracht.
Die Hinweise auf Plugins sind natürlich nicht vollständig – bei der Vielzahl an Plugins für WP ist das auch kaum möglich.

Im weiteren sollte das Blog auch im Title-Tag und den URLs optimiert werden.

  • Der Blogname gehört ans Ende des Titels Tutorial WordPress Titel ändern, außerdem kann man mit dm Plugin „SEO Title Tag“ arbeiten
  • Tags sollten auf eine Tag-Seite verlinken – kann WordPress standardmäßig, darstellen kann man das auch in einer Tagwolke mit den oben genannten Tag-Plugins
  • Zusätzliche Keywords sollten nur auf deiner Website zu sehen sein

Außerdem gehören ‚Unmengen’ Tags auf die Seite:

  • Kategorie Name, der verlinkt ist auf die Kategorie-Seite
  • Beitragstitel enthält den Permalink zum Artikel
  • Verwende interne und externe Links, schreiibe dabei einen aussagekräftigen text und nicht „hier“ oder „dort“
  • Tags, Keywords führen zu Tag-Seiten
  • Verwende interne Anker, um bestimmte Bereiche anzusprechen – z.B. zum Header zu kommen (siehe die Quicknavi rechts oben)

Besonders bei Gruppen-Blogs, bei der mehrere Autoren schrieben, sollten sich die Autoren beschreiben, vorstellen. Ebenfalls sollte der Tag des Autors auf diese Vorstellungsseite führen.

Weitere SEO-Tipps für WordPress gibt es im Beitrag „Methoden der Suchmaschinen-Optimierung (SEO) unter WordPress“.

Standard