<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>bueltge.de [by:ltge.de] &#187; Tipps</title>
	<atom:link href="http://bueltge.de/tag/tipps/feed/" rel="self" type="application/rss+xml" />
	<link>http://bueltge.de</link>
	<description>Frank Bültge schreibt auf bueltge.de zu den Themen Webentwicklung &#38; design, WordPress, Literatur und andere Themen bezüglich Internet und Development</description>
	<lastBuildDate>Mon, 06 Feb 2012 12:19:43 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>WP - Tutorial, wir schreiben ein WordPress Theme - Teil 3</title>
		<link>http://bueltge.de/wp-tutorial-wir-schreiben-ein-wordpress-theme-teil-3/527/</link>
		<comments>http://bueltge.de/wp-tutorial-wir-schreiben-ein-wordpress-theme-teil-3/527/#comments</comments>
		<pubDate>Thu, 25 Oct 2007 20:52:42 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Themes]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Anleitung]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Theme]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[WP]]></category>
		<category><![CDATA[xHTML]]></category>

		<guid isPermaLink="false">http://bueltge.de/wp-tutorial-wir-schreiben-ein-wordpress-theme-teil-3/527/</guid>
		<description><![CDATA[Nachdem wir im <a href="http://bueltge.de/wp-tutorial-wir-schreiben-ein-wordpress-theme-teil-2/513/">zweiten Teil</a> der Serie &#8222;Ein WordPress Theme selbst erstellen&#8221; 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 <code>head</code>-Abschnitt der <code>index.php</code> 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.]]></description>
			<content:encoded><![CDATA[<div class="contentnavi">
<h3>Inhalt:</h3>
<ul>
<li><a href="http://bueltge.de/wp-tutorial-wir-schreiben-ein-wordpress-theme-teil-1/498/">Teil 1 - Wir legen los,<br />Voraussetzungen,<br />Grundlagen, Layout</a></li>
<li><a href="http://bueltge.de/wp-tutorial-wir-schreiben-ein-wordpress-theme-teil-2/513/">Teil 2 - Das statische<br />Design wird<br />WordPress-fähig</a></li>
<li>Teil 3 - Noch mehr Daten<br />aus dem Backend</li>
<li><a href="http://bueltge.de/wp-tutorial-wir-schreiben-ein-wordpress-theme-teil-4/634/">Teil 4 - Der Loop</a></li>
<li>. . .</li>
</ul>
</div>
<p>Nachdem wir im <a href="http://bueltge.de/wp-tutorial-wir-schreiben-ein-wordpress-theme-teil-2/513/">zweiten Teil</a> der Serie &bdquo;Ein WordPress Theme selbst erstellen&rdquo; 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.</p>
<p>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.</p>
<p>Im diesem Abschnitt des Tutorials werden wir den <code>head</code>-Abschnitt der <code>index.php</code> 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.<span id="more-527"></span></p>
<h3><code>html</code>-Tag</h3>
<p>Als erstes wird der Doctype deklariert. Ich wähle dabei XHTML 1.0 Transitional und erweitere den <code>html</code>-Tag lediglich um eine Funktion von WordPress <code>language_attributes()</code>.</p>
<pre><code>
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; &amp;lt;?php if ( function_exists('language_attributes') ) language_attributes(); ?&amp;gt; id=&quot;fb&quot;&gt;
</code></pre>
<p>Diese Funktion übergibt zwei Werte die für sauberen und validierbaren Code nötig sind. </p>
<pre><code>dir="ltr" lang="de-DE"</code></pre>
<p>Das Attribut <code>dir</code> bekommt den Wert aus den WordPress-Einstellungen und übergibt den Wert <code>ltr</code>, womit der Text von links nach rechts (<strong>l</strong>eft <strong>t</strong>o <strong>r</strong>ight) dargestellt wird. Nähere Information zum Beispiel bei <a href="http://de.selfhtml.org/html/text/logisch.htm#textrichtung">SELFHTML</a>.</p>
<p>Das Attribut <code>lang</code> übergibt die Sprache der Website und wird aus der <code>wp-config.php</code> gezogen. Je nach dem welcher Wert dort hinterlegt wurde, wird nun das Attribut lang ergänzt. Bekommt die Konstante <code>WPLANG</code> in der <code>wp-config.php</code> keinen Wert zugeordnet, so wird auch kein Wert für das Attribut <code>lang</code> ausgeben, wie es beispielsweise die Sprache des Weblog und Backend interpretiert. In dem Fall wird en_US genutzt und ausgeben, interessant bei der Erstellung von mehrsprachigen Themes oder Plugins. Gleichzeitig wird aber auch das Attribut nicht ausgegeben, also lediglich das <code>dir</code>-Attribut.</p>
<div class="contentdiv">
<h4>Tipp</h4>
<p>Es empfiehlt sich, alle verwendeten Funktionen innerhalb des Templates mit der PHP-Funktion <code>function_exists</code> abzufragen.</p>
<pre><code>&lt;?php if ( function_exists('FUNKTION') ) FUNKTION(); ?&gt;</code></pre>
<p>Nur so kann sicher gestellt werden, dass das Weblog auch ohne die Funktion auf unterschiedlichen Plattformen funktioniert. Natürlich ist auch das kein Garant, je nach Aufbau des Markups, aber damit können oft Probleme in der Darstellung oder lästige PHP-Fehlermeldungen auf das Weblog umgangen werden. Das gleiche gilt natürlich auch für die Integration von Plugins, werden sie deaktiviert, dann ist das Weblog auch weiterhin verfügbar. Dieses wenigen Zeilen sollten es euch wert sein und der Leser wird nicht mit unwichtigen PHP-Fehlermeldungen genervt.<br />
Näheres ist ebenso im Artikel &bdquo;<a href="http://bueltge.de/abfrage-einer-php-funktion-bzw-wp-plugins/160/">Abfrage einer PHP-Funktion, bzw. WP-Plugins</a>&rdquo; nachzulesen.
</div>
<p>Möchte man die beiden Attribute einzelnen übergeben, dann steht die Funktion <code>get_bloginfo()</code> als Alternative zur Verfügung. Bei der Verwendung dieser Möglichkeit, würde unser Beispiel wie folgt aussehen.</p>
<pre><code>&lt;html xmlns="http://www.w3.org/1999/xhtml" dir="&lt;?php echo get_bloginfo('text_direction'); ?&gt;" lang="&lt;?php echo get_bloginfo('language'); ?&gt;" id="fb"&gt;</code></pre>
<p>Allerdings muss in diesem Fall beachtet werden, dass bei nicht hinterlegtem Wert für die Konstante <code>WPLANG</code> in der <code>wp-config.php</code> auch kein Wert gezogen wird. Das Attribut <code>lang</code> steht also ohne Inhalt, was zu Fehlern führt. Also diese Version nur bei gepflegtem Wert in der <code>wp-config.php</code> nutzen.</p>
<h3><code>head</code>-Tag</h3>
<p>WordPress unterstützt das Metadaten-Profil der <a href="http://www.gmpg.org/xfn/">XHMTL Friens Network</a> (XFN) und dieses wird dem <code>head</code>-Tag hinzugefügt. Das Attribut <code>profile</code> ist dafür zuständig. Kurz gesagt, kann man damit persönliche Beziehungen über Links deklarieren. WordPress nutzt das bei der Definition der Links in der Blogroll (<a href="http://de.wikipedia.org/wiki/XHTML_Friends_Network" title="mehr dazu gibt es unter anderem bei Wikipedia">mehr zu XFN</a>).</p>
<pre><code>
&lt;head profile=&quot;http://gmpg.org/xfn/11&quot;&gt;
</code></pre>
<p>Innerhalb des head-Abschnittes werden eine Reihe an <code>meta</code>-Tags definiert, bei denen ich eine ganze Reihe mehr als unbedingt nötig nutze. Das hat einerseits den Grund der Suchmaschinenfütterung und andererseits den Grund alle Daten zu dem Dokument Weblog zu hinterlegen, der für sauberen und vollständigen Code nötig ist.</p>
<h4><code>meta</code>-Tag die 1.</h4>
<p>Die ersten beiden <code>meta</code>-Tags legen den <code>Content-Type</code> (Angaben zur Zeichencodierung) und den <code>Content-Script-Type</code> (Angaben zum Standard für Scripte) fest. Sollte keinerlei Script zum Einsatz kommen, dann kann die Zeile fehlen. In der Regel sind aber immer JavaScript-Codes in der Ausgabe des Weblog zu finden.</p>
<pre><code>
&lt;meta http-equiv="Content-Type" content="&lt;?php bloginfo('html_type'); ?&gt;; charset=&lt;?php bloginfo('charset'); ?&gt;" /&gt;
&lt;meta http-equiv="Content-Script-Type" content="text/javascript" /&gt;
</code></pre>
<p>Im <a href="http://bueltge.de/wp-tutorial-wir-schreiben-ein-wordpress-theme-teil-2/513/">zweiten Teil dieses Tutorials</a> haben wir den Template Tag <code><strong>bloginfo()</strong></code> schon einmal verwendet, zur Angabe der Stylesheet-Adresse.<br />
Dieser Tag ist ein recht mächtiger und wichtiger Template Tag bei dem Erstellen von Theme und Plugins. Er akzeptiert eine große Anzahl von Parametern. Der <a href="http://codex.wordpress.org/Template_Tags/bloginfo">Codex</a> stellt nicht alle Möglichkeiten des Tags dar, deshalb kurz die Möglichen Parameter und was es damit auf sich hat.</p>
<p>Die Funktion <code>bloginfo()</code> ist im übrigen nur die Ausgabe (<code>echo</code>) von der Funktion <code>get_bloginfo()</code>. Sollte man also den Wert eines Parameters ohne Ausgabe wünschen, dann kann die Funktion <code>get_bloginfo()</code> als Alternative dienen.</p>
<ul>
<li><code>url</code> Blog-Adresse (URL) aus den Einstellungen im Backend (ehemals auch <code>home</code> oder <code>siteurl</code>, fällt aber in den Folgeversionen >2.4 von WP weg)</li>
<li><code>wpurl</code> WordPress-Adresse (URL) aus den Einstellungen im Backend (Installationsadresse)</li>
<li><code>description</code> Blog-Thema aus den Einstellungen im Backend</li>
<li><code>rdf_url</code> URL für RDF/RSS 1.0 Feed</li>
<li><code>rss_url</code> URL für RSS 0.92 Feed</li>
<li><code>rss2_url</code> URL für RSS 2.0 Feed</li>
<li><code>atom_url</code> URL für den Atom Feed</li>
<li><code>comments_atom_url</code> URL für den Atom Feed zu Kommentaren</li>
<li><code>comments_rss2_url</code> URL für den RSS 2.0 Feed zu Kommentaren</li>
<li><code>pingback_url</code> Pingback Adresse</li>
<li><code>stylesheet_url</code> URL zum Stylesheet des aktiven Themes (muss im Theme ohne Unterordner liegen)</li>
<li><code>stylesheet_directory</code> URL zum Ordner des verwendeten Stylesheets</li>
<li><code>template_directory</code> oder <code>template_url</code> URL zum Order des aktiven Themes</li>
<li><code>admin_email</code> E-Mail-Adresse des Administrators aus den allgemeinen Einstellungen im Backend</li>
<li><code>charset</code> Zeichensatz aus den lesenden Einstellungen im Backend</li>
<li><code>html_type</code> <code>Content-Type</code> für das Blog</li>
<li><code>version</code> Version der WordPress-Installation</li>
<li><code>language</code> Sprache aus der <code>wp-config.php</code>, siehe oben im Abschnitt</li>
<li><code>text_direction</code> Wert für das <code>dir</code>-Attribut, siehe oben im Abschnitt</li>
<li><code>name</code> Blogtitel aus den allgemeinen Einstellungen im Backend</li>
</ul>
<h4><code>title</code>-Tag</h4>
<p>In der folgenden Zeile übergebe ich den <code>title</code>-Tag, der den Title des jeweiligen Beitrags, Seite, Kategorie usw. übergeben soll. Im einfachsten Fall wird dieser mit Hifle des Template Tag <code>the_title()</code> gefüttert.</p>
<pre><code>&lt;title&gt;&lt;?php wp_title(); ?&gt;&lt;/title&gt;</code></pre>
<p>Der Template Tag <code><strong>the_title()</strong></code> hat dabei die Funktion der Übergabe des jeweiligen Beitrags, Seite, Archiv usw.. Der <a href="http://codex.wordpress.org/Template_Tags/the_title">Codex</a> beschreibt den Tag ausführlich.</p>
<pre><code>&lt;?php the_title('before', 'after', display); ?&gt;</code></pre>
<p><strong>Parameter:</strong><br />
<code>before</code> (string) Text vor dem Titel, standard ist ''<br />
<code>after</code> (string) Text nach dem Titel, standard ist ''<br />
<code>display</code> (Boolean) Zeige den Title (TRUE) oder Rückgabe für PHP (FALSE), standard ist TRUE.</p>
<p>Natürlich lässt sich dieser beliebig erweitern, beispielsweise um den Namen des Weblog.</p>
<pre><code>
&lt;title&gt;&lt;?php bloginfo('name'); ?&gt;&lt;?php wp_title(); ?&gt;&lt;/title&gt;
</code></pre>
<p>Allerdings sollte man wissen, dass eine derartige Darstellung nicht besonders schön für Leser, die beispielsweise einen Beitrag als Lesezeichen ablegen, oder Suchmaschinen ist. Dafür nutze ich die Conditional Tags und je nach geladenem Dokument-Type wird der Title angepasst. Eine Möglichkeit könnte wie folgt aussehen.</p>
<pre><code>
&lt;title&gt;&lt;?php if ( is_home() ) { _e('Startseite | ', 'THEMENAME'); } wp_title(' '); if (wp_title(' ', false)) { echo ' | '; } bloginfo('name'); ?&gt;&lt;/title&gt;
</code></pre>
<p>Im Beitrag &bdquo;<a href="http://bueltge.de/wp-wordpress-titel-aendern/102/">WordPress Titel ändern</a>&rdquo; bin ich schon auf Hintergründe und Lösungen eingegangen. Deshalb hier keine weiteren Erklärungen. Lediglich die Erläuterung zum Thema Conditional Tags soll nicht verloren gehen.</p>
<p><strong id="conditionaltags">Conditional Tags</strong> sind Funktionen, mit denen man Bedingungen abfragen kann. Die Ausgabe des Weblog ist damit vielfältig und einfach steuerbar. Es gibt eine ganze Reihe von Conditional Tags. Einige von ihnen können Parameter aufnehmen. Das Ergebnis der Übergabe ist immer <code>TRUE</code> oder <code>FALSE</code>.</p>
<ul>
<li><code>is_admin</code> Wenn im Adminbereich</li>
<li><code>is_archive</code> Ob ein Archiv dargestellt wird</li>
<li><code>is_attachment</code> Anhang im Beitrag oder Seite</li>
<li><code>is_author</code> Autorenseite</li>
<li><code>is_category</code> Kategorie Archiv oder Parameter</li>
<li><code>is_tag</code> Tag-seite</li>
<li><code>is_comments_popup</code> Kommentar per Popup Funktion</li>
<li><code>is_date</code> Archivseite auf Basis Datum</li>
<li><code>is_day</code> Archivseite auf Basis Tag</li>
<li><code>is_feed</code> wenn es ein Feed ist</li>
<li><code>is_front_page</code> die definierte Startseite des Blog (nur ab WP 2.5)</li>
<li><code>is_home</code> Startseite (nicht nur die statische Seite)</li>
<li><code>is_month</code> Archivseite auf Basis Monat</li>
<li><code>is_page</code> statische Seite</li>
<li><code>is_paged</code> Seite/ Weblog wurde &bdquo;geblättert&rdquo;</li>
<li><code>is_preview</code> Vorschau</li>
<li><code>is_robots</code> </li>
<li><code>is_search</code> Suchseite</li>
<li><code>is_single</code> einzelner Beitrag</li>
<li><code>is_singular</code> </li>
<li><code>is_time</code> Archivseite auf Basis Zeit</li>
<li><code>is_trackback</code> wenn es es sich um Pingback oder Trackback handelt</li>
<li><code>is_year</code> Archivseite auf Basis Jahr</li>
<li><code>is_404</code> Fehlerseite 404</li>
</ul>
<p>Nicht alle Tags sind im Theme-Umfeld üblich, trotzdem sollen sie erwähnt werden und stehen somit als vollständige Liste zur Verfügung. Eine Dokumentation der Conditional Tags findet man ebenso im <a href="http://codex.wordpress.org/Conditional_Tags">Codex</a>.</p>
<h4><code>meta</code>-Tag die 2.</h4>
<p>In den folgenden Zeilen werden eine ganze Reihe von <code>meta</code>-Tags hinterlegt und mit Werten gefüllt. Wenn möglich, dann fülle ich diese mit Daten aus dem Backend. Dabei kommen wieder die bereits erwähnten Template Tags zum Tragen. Deshalb werde ich auch nicht auf jede Zeile eingehen, Informationen zu den Möglichkeiten mit Tag <code>bloginfo()</code> bzw. <code>get_bloginfo()</code> sind im obigen Abschnitt zu finden.<br />
Ebenso wende ich Conditional Tags an, um den Inhalt der Attribute je nach Ausgabe entsprechend zu füllen.</p>
<pre><code>
&lt;meta name=&quot;generator&quot; content=&quot;WordPress &lt;?php bloginfo('version'); ?&gt;&quot; /&gt;
&lt;meta name=&quot;robots&quot; content=&quot;index, follow&quot; /&gt;
&lt;meta name=&quot;description&quot; content=&quot;&lt;?php if ( is_single() ) { wp_title(''); echo ' - '; } elseif ( is_page() ) { wp_title(''); echo ' - '; } bloginfo('description'); ?&gt;&quot; /&gt;
&lt;meta name=&quot;keywords&quot; content=&quot;&quot; /&gt;
&lt;meta name=&quot;language&quot; content=&quot;&lt;?php bloginfo('language'); ?&gt;&quot; /&gt;
&lt;meta name=&quot;content-language&quot; content=&quot;&lt;?php bloginfo('language'); ?&gt;&quot; /&gt;
&lt;meta name=&quot;publisher&quot; content=&quot;&lt;?php bloginfo('name'); ?&gt;&quot; /&gt;
&lt;meta name=&quot;revisit-after&quot; content=&quot;1 days&quot; /&gt;
&lt;meta name=&quot;author&quot; content=&quot;Frank Bueltge&quot; /&gt;
</code></pre>
<p>Die Übergabe von Keywords im entsprechendem <code>meta</code>-Tag ist nicht so ohne weiteres möglich. Der kann beispielsweise mit den <a href="http://bueltge.de/wordpress-benutzerdefinerte-felder-custom-fields/525/">benutzerdefinierten Feldern</a> oder einem Plugin entsprechend dem Inhalt der Ausgabe befüllt werden.</p>
<h4>Stylesheet laden</h4>
<p>Im Anschluss lade ich das Stylesheet des Themes. Diese Zeilen haben wir schon im <a href="http://bueltge.de/wp-tutorial-wir-schreiben-ein-wordpress-theme-teil-2/513/">Teil 2</a> des Tutorials besprochen und dementsprechend <a href="http://bueltge.de/wp-tutorial-wir-schreiben-ein-wordpress-theme-teil-2/513/">verweise</a> ich nur drauf und hinterlasse hier keine weiteren Zeilen Erklärung.</p>
<h4><code>link</code>-Tag</h4>
<p>Der <code>link</code>-Tag ist im Zusammenhang mit seinem <code>rel</code>-Attribut eine sehr sinnvolle Erweiterung mit Mehrwert. In unserem Fall definieren wir die RSS 2.0 Feed-URL, das Favicon und die Pingback-URL des Blogs und können so eine Reihe von weiteren Funktionen vieler Browser bzw. Applikationen nutzen.<br />
Auch hierbei kommt der Template Tag <code>bloginfo()</code> zum Einsatz.</p>
<pre><code>
&lt;link rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot; title=&quot;RSS 2.0&quot; href=&quot;&lt;?php bloginfo('rss2_url'); ?&gt;&quot; /&gt;
&lt;link rel=&quot;Shortcut Icon&quot; type=&quot;image/x-icon&quot; href=&quot;&lt;?php bloginfo('url'); ?&lt;/favicon.ico&quot; /&gt;
&lt;link rel=&quot;pingback&quot; href=&quot;&lt;?php bloginfo('pingback_url'); ?&gt;&quot; /&gt;
</code></pre>
<h4><code>wp_head</code> Hook</h4>
<p>Bevor wir zum Abschluss des Abschnittes <code>head</code> kommen, erweitern wir den Teil noch um den Hook <code>wp_head</code>. Dieser ermöglicht die Erweiterung der Daten im <code>head</code>-Abschnitt durch WordPress, zum Beispiel durch Plugins innerhalb des Backends. Alle Daten können mit Hilfe dieses Hook aus dem Backend, einem Plugin, direkt hier hinzugefügt werden, ohne Arbeit am Code. Dies macht die Einbindung von Plugins einfacher, insofern sie Daten hier ablegen müssen und ebenso die Integration von neuen Funktionen der WordPress-Anwender. (<a href="http://codex.wordpress.org/Theme_Development#Plugin_API_Hooks">Doku im Codex</a>)</p>
<pre><code>&lt;?php wp_head(); ?&gt;</code></pre>
<h3>kompletter Code <code>doctype</code>, <code>html</code> und <code>head</code></h3>
<p>Zum Schluss nun noch der komplette Code des besprochenen Abschnittes.</p>
<pre><code>
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; &lt;?php if ( function_exists('language_attributes') ) language_attributes(); ?&gt; id=&quot;fb&quot;&gt;

&lt;head profile=&quot;http://gmpg.org/xfn/11&quot;&gt;
	&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;&lt;?php bloginfo('html_type'); ?&gt;; charset=&lt;?php bloginfo('charset'); ?&gt;&quot; /&gt;
	&lt;meta http-equiv=&quot;Content-Script-Type&quot; content=&quot;text/javascript&quot; /&gt;

	&lt;title&gt;&lt;?php if (is_home()) { _e('Startseite | ', 'THEMENAME'); } wp_title(' '); if (wp_title(' ', false)) { echo ' | '; } bloginfo('name'); ?&gt;&lt;/title&gt;

	&lt;meta name=&quot;generator&quot; content=&quot;WordPress &lt;?php bloginfo('version'); ?&gt;&quot; /&gt;
	&lt;meta name=&quot;robots&quot; content=&quot;index, follow&quot; /&gt;
	&lt;meta name=&quot;description&quot; content=&quot;&lt;?php if ( is_single() ) { wp_title(''); echo ' - '; } elseif ( is_page() ) { wp_title(''); echo ' - '; } bloginfo('description'); ?&gt;&quot; /&gt;
	&lt;meta name=&quot;keywords&quot; content=&quot;&quot; /&gt;
	&lt;meta name=&quot;language&quot; content=&quot;&lt;?php bloginfo('language'); ?&gt;&quot; /&gt;
	&lt;meta name=&quot;content-language&quot; content=&quot;&lt;?php bloginfo('language'); ?&gt;&quot; /&gt;
	&lt;meta name=&quot;publisher&quot; content=&quot;&lt;?php bloginfo('name'); ?&gt;&quot; /&gt;
	&lt;meta name=&quot;revisit-after&quot; content=&quot;1 days&quot; /&gt;
	&lt;meta name=&quot;author&quot; content=&quot;Frank Bueltge&quot; /&gt;

	&lt;style type=&quot;text/css&quot; media=&quot;screen&quot;&gt;
		@import url( &lt;?php bloginfo('stylesheet_url'); ?&gt; );
	&lt;/style&gt;

	&lt;link rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot; title=&quot;RSS 2.0&quot; href=&quot;&lt;?php bloginfo('rss2_url'); ?&gt;&quot; /&gt;
	&lt;link rel=&quot;Shortcut Icon&quot; type=&quot;image/x-icon&quot; href=&quot;&lt;?php bloginfo('url'); ?&gt;/favicon.ico&quot; /&gt;
	&lt;link rel=&quot;pingback&quot; href=&quot;&lt;?php bloginfo('pingback_url'); ?&gt;&quot; /&gt;

	&lt;?php wp_head(); ?&gt;

&lt;/head&gt;
</code></pre>
<h3>Download:</h3>
<form class="spenden" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="DT9BG8NJTXQN4">
<input type="image" src="http://bueltge.de/wp-content/images/donate.png" border="0" name="submit" alt="Jetzt einfach, schnell und sicher online bezahlen – mit PayPal.">
<img class="ob" alt="Spendenbutton" src="https://www.paypal.com/de_DE/i/scr/pixel.gif" width="1" height="1"><br />
</form>
<p><strong>Ist die Arbeit nicht 1 Euro wert?</strong><br />
Jede Spende wird dankbar angenommen und erm&ouml;glicht das weitere Arbeiten an freier Software.<br />
M&ouml;chtest du mehr oder anders spenden, so besuche meine <a href="http://bueltge.de/wunschliste/">Wunschliste</a>.<br />
Download als php-Datei: <a href="http://bueltge.de/wp-content/download/theme_schreiben/wp_tutorial_teil3.zip">wp_tutorial_teil3.zip</a> - 2 kByte</p>
<h3>Fazit und Ausblick</h3>
<p>In diesem dritten Teil der Serie haben wir eine ganze Reihe neuer Informationen, so hoffe ich, gelernt. Die Mächtigkeit der Conditional Tags ist hoffentlich zum Tragen gekommen und ebenso das Verständnis der Template Tags, auch wenn wir nur sehr wenige der vielen Tags genutzt haben.</p>
<p>Im kommen Teil 4 werde ich den Loop ins Spiel bringen, denn nun soll es endlich Daten aus dem Backend geben. Ich hoffe, dass es nicht zu theoretisch und zu langweilig ist, aber nur so kann ich auf die kleinen Details eingehen und Bezug zu den Unterschieden zu einer statischen HTML-Datei nehmen. Noch mehr Inhalt in die jeweiligen Teile zu bringen, halte ich für weniger gut und es macht die Seite unleserlich. Außerdem ist es für mich auch recht viel Aufwand derartige Artikel zu schreiben.</p>
<p>Auch hier wieder der Hinweis, ich freue mich über Feedback in jeder Form.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wp-tutorial-wir-schreiben-ein-wordpress-theme-teil-3/527/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wp-tutorial-wir-schreiben-ein-wordpress-theme-teil-3/527/feed/</wfw:commentRss>
		<slash:comments>36</slash:comments>
	
		<media:thumbnail url="http://bueltge.de//www.paypal.com/de_DE/i/scr/pixel.gif" />
		<media:content url="http://bueltge.de//www.paypal.com/de_DE/i/scr/pixel.gif" medium="image">
			<media:title type="html">Spendenbutton</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Tipps für das Schreiben guter WordPress Tipps</title>
		<link>http://bueltge.de/tipps-fuer-das-schreiben-guter-wordpress-tipps/472/</link>
		<comments>http://bueltge.de/tipps-fuer-das-schreiben-guter-wordpress-tipps/472/#comments</comments>
		<pubDate>Wed, 11 Jul 2007 06:19:35 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Tipps]]></category>
		<category><![CDATA[Webküche]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Anleitung]]></category>
		<category><![CDATA[Beitrag]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/tipps-fuer-das-schreiben-guter-wordpress-tipps/472/</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>Mit diesem Thema befasst <a href="http://lorelle.wordpress.com/">Lorelle</a> auf <a href="http://www.blogherald.com/2007/07/09/tips-for-writing-good-wordpress-tips/">Blog Herald in einem aktuellen Artikel</a>. Angesichts der Tatsache, dass die Anzahl der Tipps zur Webpublishing Plattform WordPress immer größer wird, ist dieser Artikel recht interessant.</p>
<p>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.</p>
<p>Kurz und bündig, sehen die Tipps folgendermaßen aus.</p>
<ul>
<li>Schreibe <strong>WordPress</strong>, nicht WordPress!<br />
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)</li>
<li>Tipps zu WordPress sollten auch auf der Plattform WordPress präsentiert werden.</li>
<li>Achte auf die Darstellung von Code. Der Code sollte fehlerfrei und sauber integriert sein, ohne Character Entities</li>
<li>Bringe es auf den Punkt. Tipps sollen helfen und nicht langatmige Geschichten erzählen.</li>
<li>Innerhalb des Beitrags ist sparsam mit Werbung umzugehen.</li>
<li>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.</li>
<li>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.</li>
</ul>
<p>Der Artikel geht wesentlich tiefer und beleuchtet die verschiedenen Facetten und Hintergründe - Lesebefehl für alle, die Tipps zum Thema WordPress veröffentlichen: „<a href="http://www.blogherald.com/2007/07/09/tips-for-writing-good-wordpress-tips/">Tips For Writing Good WordPress Tips</a>“.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/tipps-fuer-das-schreiben-guter-wordpress-tipps/472/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/tipps-fuer-das-schreiben-guter-wordpress-tipps/472/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WP - Tutorial, wir schreiben ein WordPress Plugin - Teil 3</title>
		<link>http://bueltge.de/wp-tutorial-wir-schreiben-ein-wordpress-plugin-teil-3/242/</link>
		<comments>http://bueltge.de/wp-tutorial-wir-schreiben-ein-wordpress-plugin-teil-3/242/#comments</comments>
		<pubDate>Wed, 20 Sep 2006 08:55:33 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=242</guid>
		<description><![CDATA[Die Aufgabe unseres kleinen Tutorials bestand ja darin, die <em>benutzerdefinerten Felder</em> für den Bereich Meta <em>Keywords</em> oder <em>Description</em> im Header deines Blogs zu nutzen. Dazu müssen wir die Daten außerhalb von <a href="http://doku.wordpress.de/Der_Loop">the_loop</a> bereitstellen. Übergeben wir Daten innerhalb von <a href="http://doku.wordpress.de/Der_Loop">the_loop</a>, ist das alles ein wenig einfacher, da hier alle Zugriffe, die WP benutzt, breit stehen und damit kann sie auch jedes Plugin nutzen.<br />In diesem Teil wollen wir nun die Daten aus dem Feld description in den Header bringen.]]></description>
			<content:encoded><![CDATA[<div class="contentnavi">
<h4>Inhalt:</h4>
<ul>
<li><a href="http://bueltge.de/wp-tutorial-wir-schreiben-ein-simples-wp-plugin-teil-0/211/" title="Zum Teil 0 springen" >Teil 0 - simples Plugin, Basiswissen</a></li>
<li><a href="http://bueltge.de/wp-tutorial-wir-schreiben-ein-wordpress-plugin-teil-1/210/" title="Zum Teil 1 springen" >Teil 1 - Plugin schreiben, Tutorial,<br />innerhalb „the loop“</a></li>
<li><a href="http://bueltge.de/wp-tutorial-wir-schreiben-ein-wordpress-plugin-teil-2/226/" title="Zum Teil 2 springen" >Teil 2 - Optionen aus dem Admin-<br />bereich übergeben</a></li>
<li>Teil 3 - Plugin schreiben,<br /> außerhalb „the loop“</li>
</ul>
</div>
<p>Die Aufgabe unseres kleinen Tutorials bestand ja darin, die „<em>benutzerdefinierten Felder</em>“ für den Bereich Meta <em>Keywords</em> oder <em>Description</em> im Header deines Blogs zu nutzen. Dazu müssen wir die Daten außerhalb von <a href="http://screenpress.de/video/der-wordpress-loop">the_loop</a> bereitstellen. Übergeben wir Daten innerhalb von <a href="http://codex.wordpress.org/The_Loop">the_loop</a>, ist das alles ein wenig einfacher, da hier alle Zugriffe, die WP benutzt, breit stehen und damit kann sie auch jedes Plugin nutzen.</p>
<p>In diesem Teil wollen wir nun die Daten aus dem Feld „description“ in den Header bringen. Erinnert euch dazu an <a href="http://bueltge.de/wp-tutorial-wir-schreiben-ein-wordpress-plugin-teil-1/210/">Teil 1 dieser Serie</a>, 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 <a href="http://dev.mysql.com/doc/">Manuel von mySQL</a> oder das Buch <a href="http://ffm.junetz.de/members/reeg/DSP/">„DSP“ von Christoph Reeg (Online oder als PDF verfügbar)</a>.</p>
<p>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.</p>
<pre><code>
// 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-&gt;posts AS posts, $wpdb-&gt;postmeta AS postmeta 
	 WHERE posts.ID = postmeta.post_id 
	 AND postmeta.meta_key = '$field' 
	 AND posts.post_date &lt; '$aktuellesDatum' 
	 ORDER BY posts.post_date $order 
	 LIMIT $limit
	*/
	$sql  = &quot;SELECT &quot;; //waehlt eine bestimmte Spalte, mehrere Spalten oder abgeleitete Spaltenwerte
	$sql .= &quot;meta_value FROM $wpdb-&gt;posts AS posts, $wpdb-&gt;postmeta AS postmeta &quot;; //Tabelle _posts und _postmetadata
	$sql .= &quot;WHERE posts.ID = postmeta.post_id &quot;; //wenn ID in _posts und post_id in _postmeta gleich sind
	$sql .= &quot;AND postmeta.meta_key = '$field' &quot;; //waehlt bestimmte Zeilen - meta_key in _postmeta von Variable $field
	$sql .= &quot;AND posts.post_date &lt; '$aktuellesDatum' &quot;; //kleiner als aktuelles Datum
	$sql .= &quot;ORDER BY posts.post_date $order LIMIT $limit&quot;; //sortiert die Ausgabe,sonst bekommen wir immer die erste
	
	$results = array(); 
	$values = array();
	$results = $wpdb-&gt;prepare( $wpdb-&gt;get_results($sql) );
	if (!empty($results))
		foreach ($results as $result) { $values[] = $result-&gt;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;
}
</code></pre>

<h3>Einbau im Blog</h3>
<p>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 .</p>

<pre><code>
&lt;meta name=&quot;description&quot; content=&quot;&lt;?php echo fb_meta_description_outside('description'); ?&gt;&quot; /&gt;&lt;/meta&gt;
</code></pre>

<p>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:</p>

<pre><code>
&lt;meta name=&quot;keywords&quot; content=&quot;&lt;?php echo fb_meta_description_outside('keywords'); ?&gt;&quot; /&gt;
&lt;/meta&gt;&lt;meta name=&quot;description&quot; content=&quot;&lt;?php echo fb_meta_description_outside('description'); ?&gt;&quot; /&gt;&lt;/meta&gt;
</code></pre>

<p>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.</p>

<pre><code>
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;

&lt;head profile=&quot;http://gmpg.org/xfn/11&quot;&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot; /&gt;

&lt;title&gt;Test FB  &amp;raquo; Blog Archiv   &amp;raquo; Tutorial, wir schreiben ein WP-Plugin&lt;/title&gt;

&lt;meta name=&quot;generator&quot; content=&quot;WordPress 2.0.2&quot; /&gt; &lt;!-- leave this for stats --&gt;

&lt;meta name=&quot;keywords&quot; content=&quot;Test keywords&quot; /&gt;
&lt;meta name=&quot;description&quot; content=&quot;Test description&quot; /&gt;
...&lt;/head&gt;&lt;/html&gt;
</code></pre>

<h3>Optionsseite und Funktion</h3>
<p>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.</p>
<h3>Motivation</h3>
<p>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.<br />Was ich damit sagen will - probiere, tüftele - es macht Spaß etwas zu versuchen und dazu zu lernen.</p>
<h3>Danke !</h3>
<p>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.<br />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 <a href="http://bueltge.de/wunschliste/">Wunschliste</a> und Spende in einer der vielen Möglichkeiten - Danke.</p>

<h3>Download:</h3>
<h4>Außerhalb von the_loop:</h4>
<p><img class="alignleftob" src="http://bueltge.de/wp-content/images/php.png" alt="Download als phps-Datei" />Download als <acronym title="Hypertext PreProcessing Source">phps</acronym>-Datei: <a href="/wp-content/download/plugin_schreiben/fb_meta_description_3.phps" class="liinternal">fb_meta_description_3.phps</a> - 3 KByte</p>
<p><img class="alignleftob" src="http://bueltge.de/wp-content/images/php.png" alt="Download als phps-Datei" /></p>

<h4>Die Abschlussdatei:</h4>
<p>Download als <acronym title="Hypertext PreProcessing Source">phps</acronym>-Datei: <a href="/wp-content/download/plugin_schreiben/fb_meta_description_31.phps" class="liinternal">fb_meta_description_31.phps</a> - 3 KByte</p>
<br style="clear:left" /></p><hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wp-tutorial-wir-schreiben-ein-wordpress-plugin-teil-3/242/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wp-tutorial-wir-schreiben-ein-wordpress-plugin-teil-3/242/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/php.png" />
		<media:content url="http://bueltge.de/wp-content/images/php.png" medium="image">
			<media:title type="html">Download als phps-Datei</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/php.png" medium="image">
			<media:title type="html">Download als phps-Datei</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Optimiere deinen Blog</title>
		<link>http://bueltge.de/optimiere-deinen-blog/232/</link>
		<comments>http://bueltge.de/optimiere-deinen-blog/232/#comments</comments>
		<pubDate>Fri, 01 Sep 2006 11:18:54 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Tipps]]></category>
		<category><![CDATA[Webküche]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Optimierung]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://www.bueltge.de/?p=232</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>Im Beitrag Optimiere deinen Feed habe ich schon die wichtigsten Erkenntnisse aus dem <a href="http://www.stephanspencer.com/archives/2006/08/29/screencast-on-how-to-optimize-your-blogs-and-rss-feeds/">Screencast</a> 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.<br />
Die Hinweise auf Plugins sind natürlich nicht vollständig - bei der Vielzahl an Plugins für WP ist das auch kaum möglich.</p>
<ul>
<li>Tag nutzen (Wolken, Seiten) <em>- machbar mit <a href="http://www.neato.co.nz/manyfaces/wordpress-plugins/ultimate-tag-warrior">Ultimate Tag Warrior</a> oder <a href="http://vapourtrails.ca/wp-keywords">WP Jerome's Keywords</a> (Bsp: <a href="http://bueltge.de/statistik/">Meine Statistikseite</a></em></li>
<li>Ähnliche Beiträge zum Artikel <em>- geht mit <a href="http://www.w-a-s-a-b-i.com/archives/2004/05/26/wordpress-related-entries-plugin/">Related Posts</a> (Tipps dazu im Artikel: <a href="http://bueltge.de/wp-aehnliche-artikel-plugin/98/">Ähnliche Artikel (Plugin)</a>) oder <a href="http://sw-guide.de/wordpress/related-posts-for-jeromes-keywords-plugin/">Related Posts for Jeromes Keywords Plugin</a> (Bsp.: unter meinem Artikel zu finden)</em></li>
<li>Top 10 der Beiträge <em>- Auch dafür gibt's ein Plugin:<a href="http://bueltge.de/wp-sayfa-sayac-de-counter-fuer-beitraege-gelesen-plugin/83/">Sayfa Sayaç (de) - Counter für Beiträge gelesen (Plugin)</a></em></li>
<li>Frühere und ältere Einträge <em>- im WP-default-Theme vorgesehen (Bsp.: über meinem Artikel zu finden)</em></li>
<li>Pflege die Blogroll <em>- über die Links von WP zu pflegen</em></li>
<li>Tags von diversen Service in den Beitrag integrieren, z.B. <a href="http://www.technorati.com/">Technorati</a></li>
</ul>
<p>Im weiteren sollte das Blog auch im Title-Tag und den URLs optimiert werden.</p>
<ul>
<li>Der Blogname gehört ans Ende des Titels <em>- <a href="http://bueltge.de/wp-wordpress-titel-aendern/102/">Tutorial WordPress Titel ändern</a>, außerdem kann man mit dm Plugin <a href="http://www.netconcepts.com/seo-title-tag-plugin/">SEO Title Tag</a> arbeiten</em></li>
<li>Tags sollten auf eine Tag-Seite verlinken <em>- kann WordPress standardmäßig, darstellen kann man das auch in einer Tagwolke mit den oben genannten Tag-Plugins</em></li>
<li>Zusätzliche Keywords sollten nur auf deiner Website zu sehen sein</li>
</ul>
<p>Außerdem gehören Unmengen Tags auf die Seite:</p>
<ul>
<li>Kategorie Name, der verlinkt ist auf die Kategorie-Seite</li>
<li>Beitragstitel enthält den Permalink zum Artikel</li>
<li>Verwende interne und externe Links, schreiibe dabei einen aussagekräftigen text und nicht hier oder dort</li>
<li>Tags, Keywords führen zu Tag-Seiten</li>
<li>Verwende interne Anker, um bestimmte Bereiche anzusprechen <em>- z.B. zum Header zu kommen (siehe die Quicknavi rechts oben)</em></li>
</ul>
<p>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.</p>
<p>Weitere SEO-Tipps für WordPress gibt es im Beitrag <a href="http://bueltge.de/methoden-der-suchmaschinen-optimierung-seo-unter-wordpress/182/">Methoden der Suchmaschinen-Optimierung (SEO) unter WordPress</a>.</p>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/optimiere-deinen-blog/232/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/optimiere-deinen-blog/232/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
	</channel>
</rss>

