<?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/"
	>

<channel>
	<title>onlinecasinodemar.com &#187; WordPress Funktionen</title>
	<atom:link href="http://www.onlinecasinodemar.com/artikel/wordpress/funktionen/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.onlinecasinodemar.com</link>
	<description>WordPress Themes &#38; Webdesign</description>
	<lastBuildDate>Wed, 05 Oct 2011 13:04:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
<meta name="generator" content="webdemar 3.0" />
		<item>
		<title>WordPress Mail-Funktion wp_mail()</title>
		<link>http://www.onlinecasinodemar.com/wordpress/funktionen/wordpress-mail-funktion-wp_mail/</link>
		<comments>http://www.onlinecasinodemar.com/wordpress/funktionen/wordpress-mail-funktion-wp_mail/#comments</comments>
		<pubDate>Thu, 14 Oct 2010 07:00:24 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[WordPress Funktionen]]></category>
		<category><![CDATA[Mail]]></category>
		<category><![CDATA[wp_mail]]></category>

		<guid isPermaLink="false">http://www.onlinecasinodemar.com/?p=2023</guid>
		<description><![CDATA[<img width="280" height="210" src="http://www.onlinecasinodemar.com/wp-content/uploads/2010/10/wordpress-wpmail.jpg" class="attachment-post-thumbnail wp-post-image" alt="wordpress-wpmail" title="wordpress-wpmail" />F&#252;r das Versenden von E-Mails aus einem Theme oder Plugin heraus stellt uns WordPress die Funktion wp_mail() zur Verf&#252;gung. Diese ist der PHP-Funktion f&#252;r den Mail-Versand sehr &#228;hnlich, vereinfacht jedoch z. B. das Hinzuf&#252;gen von Anh&#228;ngen und ist durch Filter leicht ver&#228;nder- oder erweiterbar. Anwendung Wie gesagt, ist die Funktion wp_mail() seinem urspr&#252;nglichen PHP-Pendant mail() [...]]]></description>
			<content:encoded><![CDATA[<img width="280" height="210" src="http://www.onlinecasinodemar.com/wp-content/uploads/2010/10/wordpress-wpmail.jpg" class="attachment-post-thumbnail wp-post-image" alt="wordpress-wpmail" title="wordpress-wpmail" /><p>F&#252;r das Versenden von E-Mails aus einem Theme oder Plugin heraus stellt uns WordPress die Funktion <code>wp_mail()</code> zur Verf&#252;gung. Diese ist der PHP-Funktion f&#252;r den Mail-Versand sehr &#228;hnlich, vereinfacht jedoch z. B. das Hinzuf&#252;gen von Anh&#228;ngen und ist durch Filter leicht ver&#228;nder- oder erweiterbar.<span id="more-2023"></span></p>
<h3 class="clear">Anwendung</h3>
<p>Wie gesagt, ist die Funktion <code>wp_mail()</code> seinem urspr&#252;nglichen PHP-Pendant <code>mail()</code> sehr &#228;hnlich und wird Euch daher bekannt vorkommen.</p>
<pre><code>&lt;?php wp_mail( $to, $subject, $message, $headers, $attachments ); ?&gt;</code></pre>
<ul>
<li><strong>$to</strong>: mehrere Adressen durch Kommas trennen oder in einem Array &#252;bergeben</li>
<li><strong>$subject</strong>: Betreff als Text-String</li>
<li><strong>$headers</strong>: zumindest <code>From: My Name &lt;myname@mydomain.com&gt;</code> erforderlich</li>
<li><strong>$attachments</strong>: Array von Pfaden anzuh&#228;ngender Dateien</li>
</ul>
<h3>Beispiel</h3>
<p>Ein funktionierendes Beispiel von <code>wp_mail()</code> w&#228;re folgendes:</p>
<pre><code>&lt;?php

    $mail_to = 'empfaenger@email.de';
    $subject = 'Betreffendes';

    $message = 'Ich will keine Message, ich will lieber ne Massage!';

    $headers = 'From: Dein Name &lt;absender@email.de&gt;' . "\r\n\";
    $attachments = array(WP_CONTENT_DIR . '/uploads/file_to_attach.zip');

    wp_mail($mail_to, $subject, $message, $headers, $attachments);

?&gt;</code></pre>
<p>Wichtig ist hierbei zu wissen, dass zum korrekten Versenden der Nachricht zumindest der zus&#228;tzliche Header <em>From:</em> mit der Absenderadresse n&#246;tig ist.</p>
<h3>HTML-Mails</h3>
<p>Standardm&#228;&#223;ig ist der Content-type der durch <code>wp_mail()</code> versendeten E-Mails reiner Text (<code>text/plain</code>). Es ist also erstmal kein HTML m&#246;glich.</p>
<p>Mit dem Filter <code>wp_mail_content_type</code> kann man den Content-type ver&#228;ndern und auf <code>text/html</code> setzen:</p>
<pre><code>&lt;?php

    function wdm_contenttype($content_type) {
        return 'text/html';
    }

    add_filter('wp_mail_content_type','wdm_contenttype');

?&gt;</code></pre>
<h3>Relevante Links</h3>
<ul>
<li>WordPress Codex: <a href="http://codex.wordpress.org/Function_Reference/wp_mail">wp_mail()</a></li>
<li>PHP Manual: <a href="http://php.net/manual/de/function.mail.php">mail()</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.onlinecasinodemar.com/wordpress/funktionen/wordpress-mail-funktion-wp_mail/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>WordPress post_class() erweitern</title>
		<link>http://www.onlinecasinodemar.com/wordpress/funktionen/wordpress-post-class-erweitern/</link>
		<comments>http://www.onlinecasinodemar.com/wordpress/funktionen/wordpress-post-class-erweitern/#comments</comments>
		<pubDate>Wed, 05 May 2010 07:30:35 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[WordPress Funktionen]]></category>
		<category><![CDATA[post_class]]></category>

		<guid isPermaLink="false">http://www.onlinecasinodemar.com/?p=1753</guid>
		<description><![CDATA[<img width="280" height="210" src="http://www.onlinecasinodemar.com/wp-content/uploads/2010/05/wordpress-post-class.jpg" class="attachment-post-thumbnail wp-post-image" alt="wordpress-post-class" title="wordpress-post-class" />Seit der Version 2.7 steht uns in WordPress bei der Theme-Entwicklung die au&#223;erordentlich praktische und umfangreiche Funktion post_class() zur Verf&#252;gung. In komplexeren WordPress-Themes ist es manchmal n&#246;tig diese noch zu erweitern. Das ist auf verschiedene Arten m&#246;glich. post_class() anwenden Mit der WordPress-Version 2.7 wurde die Funktion post_class() eingef&#252;hrt. Diese wird meist auf einen den Post [...]]]></description>
			<content:encoded><![CDATA[<img width="280" height="210" src="http://www.onlinecasinodemar.com/wp-content/uploads/2010/05/wordpress-post-class.jpg" class="attachment-post-thumbnail wp-post-image" alt="wordpress-post-class" title="wordpress-post-class" /><p>Seit der Version 2.7 steht uns in WordPress bei der Theme-Entwicklung die au&#223;erordentlich praktische und umfangreiche Funktion <code>post_class()</code> zur Verf&#252;gung. In komplexeren WordPress-Themes ist es manchmal n&#246;tig diese noch zu erweitern. Das ist auf verschiedene Arten m&#246;glich.<span id="more-1753"></span></p>
<h3 class="clear">post_class() anwenden</h3>
<p>Mit der WordPress-Version 2.7 wurde die Funktion <a href="http://codex.wordpress.org/Template_Tags/post_class"><code>post_class()</code></a> eingef&#252;hrt. Diese wird meist auf einen den Post im Loop umfassenden <code>div</code>-Container angewendet.</p>
<pre><code>&lt;div &lt;?php post_class(); ?&gt;&gt;
    &lt;!-- hier der post --&gt;
&lt;/div&gt;</code></pre>
<p class="space">Hier gibt die Funktion eine Reihe von CSS-Klassen aus, die f&#252;r diesen Posts spezifisch sind (Post oder Page, Kategorie, Tags, sticky etc.).</p>
<h3 class="clear">post_class() erweitern</h3>
<p>In komplexeren WordPress-Themes kann es nun vorkommen, dass diese Standardklassen nicht ausreichen und man den Post-Klassen weitere hinzuf&#252;gen m&#246;chte.</p>
<p>Am einfachsten geht das wie folgt:</p>
<pre><code>&lt;?php post_class('meine-klasse noch-eine'); ?&gt;</code></pre>
<p class="space">In diesem Fall w&#252;rden die Klassen <code>meine-klasse</code> und <code>noch-eine</code> den Standardpostklassen hinzugef&#252;gt.</p>
<h3 class="clear">post_class() erweitern <small>(functions.php)</small></h3>
<p>Ein anderer Ansatz ist das Steuern der Post-Klassen zentral &#252;ber die <code>functions.php</code>. Daf&#252;r bedienen wir uns dem WordPress-Filter <code>post_class</code>:</p>
<pre><code>&lt;?php

add_filter('post_class','my_post_classes');

function my_post_classes($classes) {
    $classes[] = 'meine-klasse';
    $classes[] = 'noch-eine';
    return $classes;
}

?&gt;</code></pre>
<p class="space">Auch in diesem Fall w&#252;rden die Klassen <code>meine-klasse</code> und <code>noch-eine</code> den Standardpostklassen hinzugef&#252;gt.</p>
<h3 class="clear">post_class() erweitern <small>(functions.php &#038; Conditional Tags)</small></h3>
<p>Spannend wird es nun, wenn man die Post-Klassen mithilfe der <a href="http://codex.wordpress.org/Conditional_Tags">Conditional Tags</a> vom gezeigten Inhalt abh&#228;ngig erweitert.</p>
<pre><code>&lt;?php

add_filter('post_class','my_post_classes');

function my_post_classes($classes) {
    if(is_front_page()) $classes[] = 'frontpage-klasse';
    if(is_singular()) $classes[] = 'singular-klasse';
    return $classes;
}

?&gt;</code></pre>
<p>Dieses macht Sinn, wenn man z. B. auf der Startseite Posts in mehreren Spalten anzeigen m&#246;chte. Dazu k&#246;nnte man die Klassen z. B. um <code>box</code> erweitern.</p>
<p>Auch wenn man mit dem <a href="http://css-tricks.com/snippets/css/clear-fix/">clearfix-Hack</a> arbeitet, kann diese Funktion sehr n&#252;tzlich sein.</p>
<pre class="space"><code>&lt;?php

add_filter('post_class','my_post_classes');

function my_post_classes($classes) {
    if(is_archive()) $classes[] = 'clearfix';
    return $classes;
}

?&gt;</code></pre>
<h3>Relevante Links</h3>
<ul>
<li>WordPress Codex: <a href="http://codex.wordpress.org/Template_Tags/post_class">post_class()</a></li>
<li>WordPress Codex: <a href="http://codex.wordpress.org/Conditional_Tags">Conditional Tags</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.onlinecasinodemar.com/wordpress/funktionen/wordpress-post-class-erweitern/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WordPress Seiten-ID anhand des Titels herausfinden</title>
		<link>http://www.onlinecasinodemar.com/wordpress/funktionen/wordpress-seiten-id-anhand-des-titels-herausfinden/</link>
		<comments>http://www.onlinecasinodemar.com/wordpress/funktionen/wordpress-seiten-id-anhand-des-titels-herausfinden/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 12:35:50 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[WordPress Funktionen]]></category>
		<category><![CDATA[get_page_by_title]]></category>
		<category><![CDATA[get_page_id]]></category>

		<guid isPermaLink="false">http://www.onlinecasinodemar.com/?p=1570</guid>
		<description><![CDATA[<img width="280" height="210" src="http://www.onlinecasinodemar.com/wp-content/uploads/2009/11/page-by-title.jpg" class="attachment-post-thumbnail wp-post-image" alt="page-by-title" title="page-by-title" />Bei der Erstellung von WordPress-Themes kommt es hier und da vor, dass z. B. f&#252;r die Ermittlung eines Permalinks einer Seite die ID herausgefunden werden muss, wenn man nur den Titel zur Verf&#252;gung hat. Mit get_page_by_title() ist das ganz einfach zu l&#246;sen. get_page_by_title() anwenden Die Funktion kann wie folgt angewendet werden: &#60;?php get_page_by_title( $page_title, $output [...]]]></description>
			<content:encoded><![CDATA[<img width="280" height="210" src="http://www.onlinecasinodemar.com/wp-content/uploads/2009/11/page-by-title.jpg" class="attachment-post-thumbnail wp-post-image" alt="page-by-title" title="page-by-title" /><p>Bei der Erstellung von WordPress-Themes kommt es hier und da vor, dass z. B. f&#252;r die Ermittlung eines Permalinks einer Seite die ID herausgefunden werden muss, wenn man <em>nur</em> den Titel zur Verf&#252;gung hat. Mit <code>get_page_by_title()</code> ist das ganz einfach zu l&#246;sen.<span id="more-1570"></span></p>
<h3 style="margin-top:40px" class="clear"><em>get_page_by_title()</em> anwenden</h3>
<p>Die Funktion kann wie folgt angewendet werden:</p>
<pre><code>&lt;?php get_page_by_title( $page_title, $output ) ?&gt;</code></pre>
<p><code>get_page_by_title()</code> l&#228;sst zwei Parameter zu. Der erste dieser Parameter ist auf jeden Fall erforderlich. Dort wird der Titel der Seite als String angegeben, deren ID ich herausfinden m&#246;chte:</p>
<pre><code>&lt;?php get_page_by_title( 'Meine Seite' ) ?&gt;</code></pre>
<p class="space">Optional kann man der Funktion einen zweiten Parameter mit auf den Weg geben. Dort l&#228;sst sich die Ausgabe der Funktion bestimmen. Standardm&#228;&#223;ig liefert das obige Beispiel den Datensatz der Seite mit dem entsprechenden Titel als <em>Objekt</em>.</p>
<h5>Ausgabe als Objekt</h5>
<p>Die ID der Seite mit dem Titel <em>Meine Seite</em> k&#246;nnte also wie folgt ausgegeben werden:</p>
<pre class="space"><code>&lt;?php
    $seite = get_page_by_title( 'Meine Seite' );
    echo $seite-&gt;ID;
?&gt;</code></pre>
<h5>Ausgabe als numerischer Array</h5>
<p>Eine weitere M&#246;glichkeit ist die Ausgabe der Funktion als <em>numerischer Array</em>. Die ID der Seite mit dem Titel <em>Meine Seite</em> k&#246;nnte damit wie folgt ausgegeben werden:</p>
<pre class="space"><code>&lt;?php
    $seite = get_page_by_title( 'Meine Seite', ARRAY_N );
    echo $seite[0];
?&gt;</code></pre>
<h5>Ausgabe als assoziativer Array</h5>
<p>Die letzte M&#246;glichkeit f&#252;r den zweiten Parameter ist der <em>assoziative Array</em>. Die ID der Seite mit dem Titel <em>Meine Seite</em> w&#252;rde dann wie folgt ausgegeben werden:</p>
<pre class="space"><code>&lt;?php
    $seite = get_page_by_title( 'Meine Seite', ARRAY_A );
    echo $seite['ID'];
?&gt;</code></pre>
<h5>Tabelle <em>wp_posts</em></h5>
<p>Nat&#252;rlich lassen sich mit der Funktion <code>get_page_by_title()</code> auch andere Daten ausgeben. Besonders mit der Ausgabe als Objekt oder assoziativem Array ist es relativ leicht, darauf zuzugreifen. Eine &#220;bersicht der zur Verf&#252;gung stehenden Daten kann im <a href="http://codex.wordpress.org/Database_Description#Table:_wp_posts">WordPress-Codex</a> eingesehen werden.</p>
<p>Man k&#246;nnte sich zum Beispiel die Anzahl der Kommentare damit wie folgt ausgeben lassen:</p>
<pre class="space"><code>&lt;?php
    $seite = get_page_by_title( 'Meine Seite' );
    echo $seite-&gt;comment_count;
?&gt;</code></pre>
<h3>Neue Funktion <em>get_page_id()</em></h3>
<p>Wenn man die Funktion h&#228;ufig und nicht den ganzen Datensatz sondern wirklich nur die ID ben&#246;tigt und sich das Ganze noch einfacher machen m&#246;chte, kann man sich optional eine kleine Funktion schreiben und diese in der <em>functions.php</em> des Themes ablegen.</p>
<pre><code>&lt;?php
function get_page_id($page_name){
    $page = get_page_by_title($page_name);
    return $page-&gt;ID;
}
?&gt;</code></pre>
<p>Ich beschr&#228;nke mit mit der Funktion auf einen Parameter (Titel der Seite) und verwende die Standardausgabe <em>Objekt</em>.</p>
<p>Diese Funktion verwende ich h&#228;ufig in Verbindung mit Theme-Optionen, wo der Benutzer z. B. eine Seite aus einem Select-Dropdown ausw&#228;hlen kann, um optional einen Link unter einem Willkommenstext zu setzen. Dabei wird mir der Titel der Seite zur&#252;ckgegeben.</p>
<p>Die ID erhalte ich mit der neuen Funktion <code>get_page_id()</code>:</p>
<pre><code>&lt;?php
    $seiten_id = get_page_id( 'Meine Seite' );
?&gt;</code></pre>
<p>Um zum Beispiel einen Link mit einem Seitentitel zu generieren, kann ich meine neue Funktion in Kombination mit <code>get_permalink()</code> verwenden:</p>
<pre class="space"><code>&lt;a href="&lt;?php echo get_permalink(get_page_id( 'Meine Seite' )); ?&gt;"&gt;
    Meine Seite
&lt;/a&gt;</code></pre>
<h3>Fazit</h3>
<p class="space">Man kann also mit WordPress-Boardmitteln und einer kleinen optionalen Erweiterung die ID einer Seite anhand ihres Titels sehr leicht herausfinden.</p>
<h3>Relevante Links</h3>
<ul class="space">
<li><a href="http://codex.wordpress.org/Function_Reference/get_page_by_title">WordPress Codex</a>: <code>get_page_by_title</code></li>
<li><a href="http://codex.wordpress.org/Database_Description#Table:_wp_posts">WordPress Codex</a>: Table &#8211; wp_posts</li>
<li><a href="http://codex.wordpress.org/Template_Tags/get_permalink">WordPress Codex</a>: <code>get_permalink()</code></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.onlinecasinodemar.com/wordpress/funktionen/wordpress-seiten-id-anhand-des-titels-herausfinden/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Tutorial: Verschachtelte WordPress Widget-Areas</title>
		<link>http://www.onlinecasinodemar.com/tutorials/tutorial-verschachtelte-wordpress-widget-areas/</link>
		<comments>http://www.onlinecasinodemar.com/tutorials/tutorial-verschachtelte-wordpress-widget-areas/#comments</comments>
		<pubDate>Fri, 18 Sep 2009 10:16:48 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[WordPress Funktionen]]></category>
		<category><![CDATA[widget area]]></category>
		<category><![CDATA[widgets]]></category>

		<guid isPermaLink="false">http://www.onlinecasinodemar.com/?p=1298</guid>
		<description><![CDATA[<img width="280" height="210" src="http://www.onlinecasinodemar.com/wp-content/uploads/2009/09/verschachtelte-widgetareas.jpg" class="attachment-post-thumbnail wp-post-image" alt="verschachtelte-widgetareas" title="verschachtelte-widgetareas" />Um mit WordPress einen weiteren Schritt in Richtung CMS zu machen, kann man die Widgets der Sidebar oder jeder anderen Widget-Area in einem WordPress-Theme abh&#228;ngig vom Inhalt anzeigen lassen. Im folgenden Beispiel unterscheide ich zwischen Sidebars f&#252;r Startseite, Seiten, Artikeleinzelansichten und Kategorien. Warum verschachtelte Widget-Areas? Verschachtelte Widget-Areas bieten eine gro&#223;e Flexibilit&#228;t. Man hat damit die [...]]]></description>
			<content:encoded><![CDATA[<img width="280" height="210" src="http://www.onlinecasinodemar.com/wp-content/uploads/2009/09/verschachtelte-widgetareas.jpg" class="attachment-post-thumbnail wp-post-image" alt="verschachtelte-widgetareas" title="verschachtelte-widgetareas" /><p>Um mit WordPress einen weiteren Schritt in Richtung <abbr title="Content Management System">CMS</abbr> zu machen, kann man die Widgets der Sidebar oder jeder anderen Widget-Area in einem WordPress-Theme abh&#228;ngig vom Inhalt anzeigen lassen. Im folgenden Beispiel unterscheide ich zwischen Sidebars f&#252;r Startseite, Seiten, Artikeleinzelansichten und Kategorien.<span id="more-1298"></span></p>
<h3 class="clear">Warum verschachtelte Widget-Areas?</h3>
<p>Verschachtelte Widget-Areas bieten eine gro&#223;e Flexibilit&#228;t. Man hat damit die M&#246;glichkeit bspw. verschiedene Sidebars abh&#228;ngig davon anzuzeigen, wo der Benutzer sich auf der Website befindet.</p>
<p class="space">In meinem Beispiel werde ich abfragen, ob sich der User auf der Startseite, auf einer Seite, in einer Artikeleinzelansicht oder in einer Kategorie befindet. Um nicht obligatorisch f&#252;r alle F&#228;lle eine eigene Sidebar anlegen zu <em>m&#252;ssen</em>, erstelle ich au&#223;erdem eine allgemeine Sidebar, die immer dann angezeigt wird, wenn f&#252;r den jeweiligen Unterbereich keine Widgets definiert wurden.</p>
<h3>Sprungmarken</h3>
<ul style="margin-bottom:40px">
<li><a href="#widgets-1">Erstellen einer Widget-Area</a></li>
<li><a href="#widgets-2">Ausgabe der Widgets im Theme</a></li>
<li><a href="#widgets-3">Erstellen mehrerer Widget-Areas</a></li>
<li><a href="#widgets-4">Verschachteln der Widget-Areas</a></li>
</ul>
<h3 id="widgets-1">Erstellen einer Widget-Area</h3>
<p>Zum Definieren der Widget-Area ben&#246;tige ich die Funktion <code>register_sidebar()</code> (s.a. <a href="http://codex.wordpress.org/Function_Reference/register_sidebar">WordPress Codex</a>). Der Funktionsname ist dabei ein wenig irref&#252;hrend, da man damit nicht nur Widget-Areas in Sidebars, sondern nat&#252;rlich auch im Footer oder sonstwo in den Theme-Dateien erstellen kann.</p>
<p><img class="alignnone size-full wp-image-1331 shadow" title="Allgemeine Widget-Sidebar" src="http://www.onlinecasinodemar.com/wp-content/uploads/2009/09/widgets1.png" alt="Allgemeine Widget-Sidebar" width="300" height="110" /></p>
<p>Folgenden Code trage ich in die <em>functions.php</em> im Theme-Ordner ein, um zun&#228;chst die allgemeine Sidebar namens <em>Sidebar</em> zu erstellen.</p>
<p><strong>Code f&#252;r functions.php</strong></p>
<pre><code>&lt;?php
register_sidebar(array(
'name' =&gt; 'Sidebar',
'before_widget' =&gt; '&lt;div id='%1$s' class='%2$s'&gt;',
'after_widget' =&gt; '&lt;/div&gt;',
'before_title' =&gt; '&lt;h3&gt;',
'after_title' =&gt; '&lt;/h3&gt;'));
?&gt;</code></pre>
<p class="space"><em>Bemerkung:</em><br />
Das Format f&#252;r die Widgets ist somit festgelegt. Die Widget-Sidebar wird nun im WordPress-Admin bereits (wie oben im Bild zu sehen) angezeigt.</p>
<h3 id="widgets-2">Ausgabe der Widgets im Theme</h3>
<p>Jetzt muss dem WordPress-Theme noch gesagt, werden wo diese Widget-Area, wenn sie Widgets enth&#228;lt (aktiv ist), angezeigt werden soll (s.a. <a href="http://automattic.com/code/widgets/themes/">Widgetizing Themes</a> von Automattic).</p>
<p>F&#252;r den Aufruf der Widget-Area im Theme (in meinem Beispiel in der <em>sidebar.php</em>) wird die Funktion <code>dynamic_sidebar()</code> (s.a. <a href="http://codex.wordpress.org/Function_Reference/dynamic_sidebar">WordPress Codex</a>) verwendet.</p>
<p><strong>Code f&#252;r sidebar.php</strong></p>
<pre><code>&lt;div id='sidebar'&gt;

&lt;?php if ( !dynamic_sidebar() ) : ?&gt;

    &lt;!-- hier werden die Widgets angezeigt --&gt;
    &lt;p&gt;Inhalt der Sidebar, wenn keine Widgets aktiv sind.&lt;/p&gt;

&lt;?php endif; // endif dynamic sidebar ?&gt;

&lt;/div&gt;&lt;!-- end sidebar --&gt;</code></pre>
<p class="space"><em>Bemerkung:</em><br />
In diesem Code liegt meine Sidebar in einem <code>div</code> mit der ID <em>sidebar</em>. Wenn mindestens ein Widget aktiv ist, wird dieses innerhalb der if-Abfrage angezeigt.</p>
<h3 id="widgets-3">Erstellen mehrerer Widget-Areas</h3>
<p>In der <em>functions.php</em> lege ich nun auch die &#252;brigen Widget-Areas an, die wir dann sp&#228;ter in der Sidebar verschachteln wollen.</p>
<p><img src="http://www.onlinecasinodemar.com/wp-content/uploads/2009/09/widgets2.png" alt="Allgemeine Sidebar &amp; Unter-Sidebars" title="Allgemeine Sidebar &amp; Unter-Sidebars" width="390" height="260" class="alignnone size-full wp-image-1342 shadow" /></p>
<p>Wie schon angesprochen m&#246;chte ich eine allgemeine Sidebar erstellen, die immer dann angezeigt wird, wenn f&#252;r den jeweiligen Unterbereich kein Widget aktiv ist. Au&#223;erdem definiere ich die extra Widget-Areas f&#252;r Startseite, Seite, Artikeleinzelansicht und Kategorie.</p>
<p><strong>Code f&#252;r functions.php</strong></p>
<pre><code>&lt;?php

// Sidebar Nr. 1 - Allgemein
register_sidebar(array(
'name' =&gt; 'Sidebar',
'before_widget' =&gt; '&lt;div id='%1$s' class='%2$s'&gt;',
'after_widget' =&gt; '&lt;/div&gt;',
'before_title' =&gt; '&lt;h3&gt;',
'after_title' =&gt; '&lt;/h3&gt;'));

// Sidebar Nr. 2 - Startseite
register_sidebar(array(
'name' =&gt; 'Sidebar-Home',
'before_widget' =&gt; '&lt;div id='%1$s' class='%2$s'&gt;',
'after_widget' =&gt; '&lt;/div&gt;',
'before_title' =&gt; '&lt;h3&gt;',
'after_title' =&gt; '&lt;/h3&gt;'));

// Sidebar Nr. 3 - Seite
register_sidebar(array(
'name' =&gt; 'Sidebar-Page',
'before_widget' =&gt; '&lt;div id='%1$s' class='%2$s'&gt;',
'after_widget' =&gt; '&lt;/div&gt;',
'before_title' =&gt; '&lt;h3&gt;',
'after_title' =&gt; '&lt;/h3&gt;'));

// Sidebar Nr. 4 - Artikeleinzelansicht
register_sidebar(array(
'name' =&gt; 'Sidebar-Post',
'before_widget' =&gt; '&lt;div id='%1$s' class='%2$s'&gt;',
'after_widget' =&gt; '&lt;/div&gt;',
'before_title' =&gt; '&lt;h3&gt;',
'after_title' =&gt; '&lt;/h3&gt;'));

// Sidebar Nr. 5 - Kategorie
register_sidebar(array(
'name' =&gt; 'Sidebar-Category',
'before_widget' =&gt; '&lt;div id='%1$s' class='%2$s'&gt;',
'after_widget' =&gt; '&lt;/div&gt;',
'before_title' =&gt; '&lt;h3&gt;',
'after_title' =&gt; '&lt;/h3&gt;'));

?&gt;</code></pre>
<p class="space"><em>Bemerkung:</em><br />
Alle f&#252;r mein Beispiel ben&#246;tigten Widget-Sidebars sind nun angelegt. Um das Ganze &#252;bersichtlich zu halten, habe ich sinnvolle Namen vergeben und die Sidebars zur &#220;bersicht nummeriert (das brauchen wir sp&#228;ter noch).</p>
<h3 id="widgets-4">Verschachteln der Widget-Areas</h3>
<p>Nochmal zur Verdeutlichung: Es soll erreicht werden, dass, wenn wir uns bspw. in einer Artikeleinzelansicht (Post) befinden, abgefragt wird, ob f&#252;r diesen Unterbereich Widgets aktiv sind. Wenn das der Fall ist, werden diese in der Sidebar ausgegeben, wenn nicht, wird die allgemeine Startseite angezeigt. Die gleiche Abfrage soll f&#252;r die Unterbereiche Startseite, Seite und Kategorie gemacht werden.</p>
<p>Wo sich der Benutzer auf der Website befindet, kann ich mit folgenden Conditional Tags (s. a. <a href="http://codex.wordpress.org/Conditional_Tags">WordPress Codex</a>) abfragen:</p>
<ul>
<li><code>is_front_page()</code></li>
<li><code>is_page()</code></li>
<li><code>is_single()</code></li>
<li><code>is_archive()</code></li>
</ul>
<p>Parallel dazu muss ich herausfinden, ob eine bestimmte Widget-Area aktiv ist, d. h. ob ihr Widgets zugewiesen wurden. Das mache ich mit dem Conditional Tag <code>is_active_sidebar()</code>.</p>
<p>Die verschiedenen Sidebars werden durch den Namen, die ID oder der Nummer identifiziert. Ich habe mir f&#252;r die eindeutige Zuordnung durch die Nummer (Reihenfolge) entschieden.</p>
<ul>
<li>Nr. 1 = Sidebar Allgemein</li>
<li>Nr. 2 = Sidebar Startseite</li>
<li>Nr. 3 = Sidebar Seite</li>
<li>Nr. 4 = Sidebar Artikeleinzelansicht</li>
<li>Nr. 5 = Sidebar Kategorie</li>
</ul>
<p><strong>Code f&#252;r sidebar.php</strong></p>
<pre><code>&lt;div id='sidebar'&gt;

&lt;?php
    if(is_front_page() &amp;amp;&amp;amp; is_active_sidebar(2)) : dynamic_sidebar(2);
    elseif(is_page() &amp;amp;&amp;amp; is_active_sidebar(3)) : dynamic_sidebar(3);
    elseif(is_single() &amp;amp;&amp;amp; is_active_sidebar(4)) : dynamic_sidebar(4);
    elseif(is_archive() &amp;amp;&amp;amp; is_active_sidebar(5)) : dynamic_sidebar(5);

    else : 

        if (!dynamic_sidebar(1)) : ?&gt;

    	&lt;!-- hier werden die Widgets angezeigt --&gt;
    	&lt;p&gt;Inhalt der Sidebar, wenn keine Widgets aktiv sind.&lt;/p&gt;

        &lt;?php endif; // endif dynamic sidebar ?&gt;

&lt;?php endif; // endif active sidebars ?&gt;

&lt;/div&gt;&lt;!-- end sidebar --&gt;</code></pre>
<p><em>In Worten bedeutet dieser Code:</em></p>
<p>Wenn der User auf der Startseite ist und die Sidebar Nr. 2 aktiv ist, dann zeige diese an. Wenn sich der User auf einer Seite bewegt und die Sidebar Nr. 3 aktiv ist, dann zeige diese an. Wenn sich der User in einer Artikeleinzelansicht bewegt und die Sidebar Nr. 4 aktiv ist, dann zeige diese an. Wenn eine Kategorie angezeigt wird und die Sidebar Nr. 5 aktiv ist, dann zeige diese an.</p>
<p class="space">Wenn all das nicht der Fall ist, wird abgefragt, ob die allgemeine Sidebar Nr. 1 aktiv ist. Wenn auch das nicht der Fall ist, dann wird der Text <em>Inhalt der Sidebar, wenn keine Widgets aktiv sind.</em> angezeigt.</p>
<h3>Verbesserungsvorschl&#228;ge?</h3>
<p class="space">Da es sich meines Erachtens um ein interessantes Feature f&#252;r WordPress-Themes handelt, w&#252;rde ich mich &#252;ber Verbesserungsvorchl&#228;ge freuen, sollte jemand eine einfachere oder bessere L&#246;sung haben. Da ich kein PHP-Experte bin, kann es sein, dass dieser Code evtl. noch effektiver gestaltet werden kann.</p>
<h3>Fazit</h3>
<p class="space">Mit verschachtelten Widget-Areas kann man schon ein gutes St&#252;ck an Flexibilit&#228;t in einem WordPress-Theme gewinnen und sich somit weiter in Richtung CMS bewegen. Das Beispiel ist nat&#252;rlich beliebig erweiterbar, da man alle m&#246;glichen Abfragen f&#252;r die Anzeige verschiedener Widget-Areas verwenden kann. Hier ist Kreativit&#228;t gefragt.</p>
<h3>Relevante Links</h3>
<ul class="space">
<li>register_sidebar() &#8211; <a href="http://codex.wordpress.org/Function_Reference/register_sidebar">WordPress Codex</a></li>
<li>dynamic_sidebar() &#8211; <a href="http://codex.wordpress.org/Function_Reference/dynamic_sidebar">WordPress Codex</a></li>
<li>Conditional Tags &#8211; <a href="http://codex.wordpress.org/Conditional_Tags">WordPress Codex</a></li>
<li><a href="http://automattic.com/code/widgets/themes/">Widgetizing Themes</a> von Automattic</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.onlinecasinodemar.com/tutorials/tutorial-verschachtelte-wordpress-widget-areas/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Neue Funktion body_class() in WordPress 2.8</title>
		<link>http://www.onlinecasinodemar.com/wordpress/funktionen/neue-funktion-body_class-in-wordpress-28/</link>
		<comments>http://www.onlinecasinodemar.com/wordpress/funktionen/neue-funktion-body_class-in-wordpress-28/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 07:39:24 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[WordPress Funktionen]]></category>
		<category><![CDATA[body_class]]></category>
		<category><![CDATA[WordPress 2.8]]></category>

		<guid isPermaLink="false">http://www.onlinecasinodemar.com/?p=978</guid>
		<description><![CDATA[<img width="280" height="210" src="http://www.onlinecasinodemar.com/wp-content/uploads/2009/11/wordpress.jpg" class="attachment-post-thumbnail wp-post-image" alt="wordpress" title="wordpress" />Ab der WordPress-Version 2.8 haben wir die M&#246;glichkeit, die Funktion body_class zu nutzen. Diese gibt dem Body-Tag eine Reihe von CSS-Klassen mit, die ziemlich genau bestimmen, wer sich wo und wie auf einer Website befindet. Damit &#246;ffnet sich der inhaltsabh&#228;nigen CSS-Formatierung T&#252;r und Tor. &#196;hnlich der Funktion post_class(), die in WordPress 2.7 hinzugekommen ist, bestimmt [...]]]></description>
			<content:encoded><![CDATA[<img width="280" height="210" src="http://www.onlinecasinodemar.com/wp-content/uploads/2009/11/wordpress.jpg" class="attachment-post-thumbnail wp-post-image" alt="wordpress" title="wordpress" /><p>Ab der WordPress-Version 2.8 haben wir die M&#246;glichkeit, die Funktion <em>body_class</em> zu nutzen. Diese gibt dem Body-Tag eine Reihe von CSS-Klassen mit, die ziemlich genau bestimmen, wer sich wo und wie auf einer Website befindet. Damit &#246;ffnet sich der inhaltsabh&#228;nigen CSS-Formatierung T&#252;r und Tor.<span id="more-978"></span></p>
<p>&#196;hnlich der Funktion <em><a href="http://codex.wordpress.org/Migrating_Plugins_and_Themes_to_2.7#Post_Classes">post_class()</a></em>, die in WordPress 2.7 hinzugekommen ist, bestimmt die Funktion <em>body_class()</em>, ob man sich gerade in einer Kategorie und wenn in welcher befindet, ob es sich um eine Post-Einzelansicht handelt, ob ein User eingeloggt ist oder auf welcher Seitennummer man sich bewegt und vieles mehr.</p>
<h3><em>body_class()</em> anwenden</h3>
<p>Der Einsatz der Funktion ist denkbar einfach. Wir m&#252;ssen diese lediglich dem Body-Tag hinzuf&#252;gen, der sich bei den meisten Themes in der header.php befindet:</p>
<pre><code>&lt;body &lt;?php body_class(); ?&gt;&gt;</code></pre>
<p>M&#246;chten wir die Kompatibilit&#228;t unseres Themes auch auf Installationen unter WordPress 2.8 sichern, m&#252;ssen wir zun&#228;chst abfragen, ob die Funktion &#252;berhaupt existiert. Wenn ja, kann diese zum Einsatz kommen:</p>
<pre><code>&lt;body &lt;?php if(function_exists('body_class')) body_class(); ?&gt;&gt;</code></pre>
<p>Haben wir unser Theme auf diese Art erweitert, sind wir auch schon fertig und k&#246;nnen uns an die Formatierung mit CSS machen.</p>
<h3>Ausgabe von <em>body_class()</em></h3>
<p>Wie schon angeprochen, generiert diese Funktion <em>body_class()</em> eine Reihe von CSS-Klassen, die uns m&#246;glichst viele Informationen dar&#252;ber liefert, wo man sich auf einer Website befindet.</p>
<p><strong>Beispiele:</strong></p>
<p>Wir befinden uns auf der Startseite, die auch gleichzeitig unsere Blog-Startseite ist.</p>
<pre><code>&lt;body class='home blog'&gt;</code></pre>
<p>Wir befinden uns auf einer Kategorie-Archivseite der Kategorie &#8216;Uncategorized&#8217;.</p>
<pre><code>&lt;body class='archive category category-uncategorized'&gt;</code></pre>
<p>Wie befinden uns auf der Seite mit der ID 2.</p>
<pre><code>&lt;body class='page page-id-2'&gt;</code></pre>
<p>Wir befinden uns in der Post-Einzelansicht des Posts mit der ID 11.</p>
<pre><code>&lt;body class='single postid-11'&gt;</code></pre>
<p>Wir befinden uns im Autorenarchiv des Autors &#8216;Admin&#8217;.</p>
<pre><code>&lt;body class='archive author author-admin'&gt;</code></pre>
<p>Eine komplette Liste der m&#246;glichen Klassen hat das Team von <a href="http://wpengineer.com/wordpress-28-body_class-automatic_feed_links/">WP Engineer</a> zusammengestellt:</p>
<ul>
<li>rtl</li>
<li>home</li>
<li>blog</li>
<li>archive</li>
<li>date</li>
<li>search</li>
<li>paged</li>
<li>attachment</li>
<li>error404</li>
<li>single postid-(id)</li>
<li>attachmentid-(id)</li>
<li>attachment-(mime-type)</li>
<li>author</li>
<li>author-(user_nicename)</li>
<li>category</li>
<li>category-(slug)</li>
<li>tag</li>
<li>tag-(slug)</li>
<li>page-parent</li>
<li>page-child parent-pageid-(id)</li>
<li>page-template page-template-(template file name)</li>
<li>search-results</li>
<li>search-no-results</li>
<li>logged-in</li>
<li>paged-(page number)</li>
<li>single-paged-(page number)</li>
<li>page-paged-(page number)</li>
<li>category-paged-(page number)</li>
<li>tag-paged-(page number)</li>
<li>date-paged-(page number)</li>
<li>author-paged-(page number)</li>
<li>search-paged-(page number)</li>
</ul>
<h3>Formatierung der Body-Klassen in CSS</h3>
<p>Im HTML-Ger&#252;st einer jeden Website umschlie&#223;t der Body-Tag immer alle Elemente unseres Layouts. Vor ihm findet keine Ausgabe im Quelltext f&#252;r das Frontend statt. Das hei&#223;t, dass wir mit verschachtelten CSS-Klassen jedes Element auf unserer Website ansprechen und mit den Body-Klassen formatieren k&#246;nnen.</p>
<p><strong>Beispiele:</strong></p>
<p>Wir m&#246;chten NUR auf der Startseite eine andere Hintergrundfarbe.</p>
<pre><code>body {
        color: #fff;
}
body.home {
        color: #eee;
}</code></pre>
<p>Wir m&#246;chten die &#220;berschriften der Kategorie &#8216;Uncategorized&#8217; nicht in Schwarz sondern in Rot anzeigen.</p>
<pre><code>h2.post-title {
        color: #101010;
}
body.category-uncategorized h2.post-title {
        color: #ff0000;
}</code></pre>
<p>Ich habe hier jetzt relativ einfache Beispiele gew&#228;hlt. Die M&#246;glichkeiten, die wir mit der body_class-Funktion bekommen, sind jedoch sehr vielf&#228;ltig. So k&#246;nnen wir mit CSS das Layout beeinflussen und bspw. f&#252;r eine bestimmte Kategorie den Inhaltsbereich gr&#246;&#223;er darstellen und die Sidebar verschwinden lassen. Oder man kann it der Klasse <em>logged-in</em> einem eingeloggten Benutzer eine andere Formatierung anzeigen lassen als nicht eingeloggten. U.v.m.</p>
<p>Ihr seht, mit etwas Kreativit&#228;t kann man einen sehr umfangreichen Gebrauch dieser Funktion machen.</p>
<h3>Fazit</h3>
<p>Diese unscheinbare Funktion <em>body_class()</em> hat es also faustdick hinter den Ohren und macht einen weiteren wichtigen Schritt von WordPress in Richtung vollwertiges <abbr title="Content Management System">CMS</abbr>. WordPress Theme-Entwickler und -Nutzer haben nun auf einfache Weise weitaus mehr M&#246;glichkeiten, verschiedene Bereiche individuell zu formatieren und gestalten.</p>
<h3>Relevante Links</h3>
<ul>
<li><a href="http://wpengineer.com/wordpress-28-body_class-automatic_feed_links/">WP Engineer</a> &#252;ber die body_class()</li>
<li><a href="http://www.nathanrice.net/blog/wordpress-2-8-and-the-body_class-function/">Nathan Rice</a> &#252;ber die body_class()</li>
<li><a href="http://webdemar.com/wordpress/releases/wordpress-28-was-gibts-neues/">WordPress 2.8 &#8211; Was gibt’s Neues?</a></li>
<li><a href="http://webdemar.com/wordpress/tipps/wordpress-code/neue-funktion-the_author_meta-in-wordpress-28/">Neue Funktion the_author_meta() in WordPress 2.8</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.onlinecasinodemar.com/wordpress/funktionen/neue-funktion-body_class-in-wordpress-28/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Neue Funktion the_author_meta() in WordPress 2.8</title>
		<link>http://www.onlinecasinodemar.com/wordpress/funktionen/neue-funktion-the_author_meta-in-wordpress-28/</link>
		<comments>http://www.onlinecasinodemar.com/wordpress/funktionen/neue-funktion-the_author_meta-in-wordpress-28/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 09:17:22 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[WordPress Funktionen]]></category>
		<category><![CDATA[the_author_meta]]></category>
		<category><![CDATA[WordPress 2.8]]></category>

		<guid isPermaLink="false">http://www.onlinecasinodemar.com/?p=961</guid>
		<description><![CDATA[<img width="280" height="210" src="http://www.onlinecasinodemar.com/wp-content/uploads/2009/11/wordpress.jpg" class="attachment-post-thumbnail wp-post-image" alt="wordpress" title="wordpress" />WordPress 2.8 ist da. Es gibt viele Neuerungen, die f&#252;r viele spannend sind und auch unter der Haube hat sich einiges getan. Die neue Funktion the_author_meta() bringt endlich Ordnung in den Wust der Autorfunktionen. Autorinformation Eine weit verbreitete Praxis bei der Verwendung von WordPress ist das Schreiben mehrerer Autoren an einem Blog. Besonders bei den [...]]]></description>
			<content:encoded><![CDATA[<img width="280" height="210" src="http://www.onlinecasinodemar.com/wp-content/uploads/2009/11/wordpress.jpg" class="attachment-post-thumbnail wp-post-image" alt="wordpress" title="wordpress" /><p>WordPress 2.8 ist da. Es gibt viele <a href="http://webdemar.com/wordpress/releases/wordpress-28-was-gibts-neues/">Neuerungen</a>, die f&#252;r viele spannend sind und auch unter der Haube hat sich einiges getan. Die neue Funktion the_author_meta() bringt endlich Ordnung in den Wust der Autorfunktionen.<span id="more-961"></span></p>
<h3 class="clear">Autorinformation</h3>
<p>Eine weit verbreitete Praxis bei der Verwendung von WordPress ist das Schreiben mehrerer Autoren an einem Blog. Besonders bei den gro&#223;en Magazinen, bei denen man &#8211; sei es aus Gutherzigkeit oder aus Gr&#252;nden der Traffic-Maximierung &#8211; Gastbeitr&#228;ge schreiben kann, findet man in jedem Post auch eine kurze Info (Beschreibung, Website etc.) &#252;ber den Autor.</p>
<p>Diese Autorinformation kann bequem im User-Profil im Backend verwaltet und dann dementsprechend im Theme verwendet werden. Bisher waren daf&#252;r viele verschiedene Funktionen verantwortlich, die nun stillgelegt wurden:</p>
<p><em>the_author_ID, the_author_login, the_author_firstname, the_author_lastname, the_author_nickname, the_author_email, the_author_url, the_author_aim, the_author_yim, the_author_mns, the_author_description</em> (+ alle zugeh&#246;rigen <em>get_</em>-Funktionen)</p>
<h3>Funktion the_author_meta()</h3>
<p>Die genannten Funktionen wurden schlie&#223;lich zu der Funktion <em>the_author_meta()</em> und <em>get_the_author_meta()</em>, bei der man &#252;ber Parameter die einzelnen Profilfelder ansprechen kann, zusammengefasst.</p>
<pre><code>&lt;p&gt;&lt;?php the_author_meta('display_name'); ?&gt;:&lt;/p&gt;
&lt;p&gt;&lt;?php the_author_meta('description'); ?&gt;&lt;/p&gt;</code></pre>
<p><em>Bemerkung:</em><br />
Dieser Code liefert uns bspw. den Anzeigename gefolgt von der Beschreibung des Autors, die man unter Profil > Pers&#246;nliche Informationen eingeben und ver&#228;ndern kann.</p>
<p>M&#246;gliche <strong>Parameter</strong> sind folgende: </p>
<ul>
<li>user_login</li>
<li>user_pass</li>
<li>user_nicename</li>
<li>user_email</li>
<li>user_url</li>
<li>user_registered</li>
<li>user_activation_key</li>
<li>user_status</li>
<li>display_name</li>
<li>nickname</li>
<li>first_name</li>
<li>last_name</li>
<li>description</li>
<li>jabber</li>
<li>aim</li>
<li>yim</li>
<li>user_level</li>
<li>user_firstname</li>
<li>user_lastname</li>
<li>user_description</li>
<li>rich_editing</li>
<li>comment_shortcuts</li>
<li>admin_color</li>
<li>plugins_per_page</li>
<li>plugins_last_view</li>
<li>ID</li>
</ul>
<h3>Informationen eines bestimmten Users</h3>
<pre><code>&lt;?php the_author_meta('first_name',23); ?&gt;</code></pre>
<p>Die Funktion <em>the_author_meta()</em> l&#228;sst noch einen weiteren Parameter zu. Wir k&#246;nnen zus&#228;tzlich zum Profilfeld noch eine UserID bestimmen. Der Vorname von User 23 w&#252;rde wie oben angezeigt angesprochen. Dieser lie&#223;e sich in der fortgeschrittenen Theme-Entwicklung nat&#252;rlich dynamisch ersetzen.</p>
<h3>Twitter-Namen ohne Plugin oder Theme-Optionen ausgeben</h3>
<p>F&#252;r manche Theme-Entwickler ist vielleicht interessant, dass die Anzeige der Profilfelder AIM, Yahoo und Jabber &#8211; die ich pers&#246;nlich noch nie verwendet habe &#8211; nun <a href="http://core.trac.wordpress.org/ticket/9357">filterbar</a> sind. Wir k&#246;nnten im User-Profil also statt <em>AIM</em> das Label <em>Twitter</em> anzeigen lassen und so den Twitter-Namen dann mit der Funktion <em>the_author_meta()</em> und dem Parameter f&#252;r das AIM-Profilfeld im Theme (zweckentfremded) ausgeben.</p>
<p>Die Anzeige (Label) von <em>AIM</em> k&#246;nnten wir in der functions.php mit einem Filter ver&#228;ndern:</p>
<pre><code>&lt;?php
function aim_twitter() {
    $twitter = 'Twitter Username';
    return $twitter;
}
add_filter('user_aim_label','aim_twitter');
?&gt;</code></pre>
<p>Neben dem Label f&#252;r AIM k&#246;nnen wir noch die Anzeige von Yahoo (<em>user_label_yahoo</em>) und Jabber (<em>user_label_jabber</em>) filtern.</p>
<p>Auf diese Weise k&#246;nnen wir im Theme ohne ein Plugin oder Theme-Optionen den Twitter-Namen des Users ausgeben:</p>
<pre><code>&lt;?php the_author_meta('aim'); ?&gt;</code></pre>
<h3>Fazit</h3>
<p>Die neue Funktion <em>the_author_meta()</em> bringt nicht unbedingt was bahnbrechend neues mit sich, schafft jedoch, meiner Meinung nach, Ordnung und mehr &#220;bersicht.</p>
<h3>Relevante Links</h3>
<ul>
<li>WordPress Codex: <a href="http://codex.wordpress.org/Version_2.8">Version 2.8</a></li>
<li>WordPress Codex: <a href="http://codex.wordpress.org/Function_Reference/get_the_author_meta">the_author_meta()</a></li>
<li>WordPress Codex: <a href="http://codex.wordpress.org/Users_Your_Profile_SubPanel">User-Profil</a></li>
<li>WordPress Trac: <a href="http://core.trac.wordpress.org/ticket/9357">Filter f&#252;r Profilfelder</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.onlinecasinodemar.com/wordpress/funktionen/neue-funktion-the_author_meta-in-wordpress-28/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress Datumsanzeige</title>
		<link>http://www.onlinecasinodemar.com/wordpress/funktionen/wordpress-datumsanzeige/</link>
		<comments>http://www.onlinecasinodemar.com/wordpress/funktionen/wordpress-datumsanzeige/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 18:15:09 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[WordPress Funktionen]]></category>
		<category><![CDATA[Datumsanzeige]]></category>
		<category><![CDATA[the_date]]></category>
		<category><![CDATA[the_time]]></category>

		<guid isPermaLink="false">http://www.onlinecasinodemar.com/?p=723</guid>
		<description><![CDATA[<img width="280" height="210" src="http://www.onlinecasinodemar.com/wp-content/uploads/2009/11/wordpress.jpg" class="attachment-post-thumbnail wp-post-image" alt="wordpress" title="wordpress" />Zur Ausgabe des Datums eines Posts wird innerhalb des Loops die WordPress-Funktion the_date() aufgerufen. In den Archiv-Seiten (Index, Kategorien, Suche) jedoch wird das Datum nicht richtig angezeigt, wenn Posts am selben Tag ver&#246;ffentlicht wurden. Es wird dann nur einmal ausgegeben. Es gibt jedoch eine sichere L&#246;sung dieses Problems. Datumsanzeige mit the_time() Die L&#246;sung ist das [...]]]></description>
			<content:encoded><![CDATA[<img width="280" height="210" src="http://www.onlinecasinodemar.com/wp-content/uploads/2009/11/wordpress.jpg" class="attachment-post-thumbnail wp-post-image" alt="wordpress" title="wordpress" /><p>Zur Ausgabe des Datums eines Posts wird innerhalb des Loops die WordPress-Funktion the_date() aufgerufen. In den Archiv-Seiten (Index, Kategorien, Suche) jedoch wird das Datum nicht richtig angezeigt, wenn Posts am selben Tag ver&#246;ffentlicht wurden. Es wird dann nur einmal ausgegeben. Es gibt jedoch eine sichere L&#246;sung dieses Problems.<span id="more-723"></span></p>
<h3 class="clear">Datumsanzeige mit the_time()</h3>
<p>Die L&#246;sung ist das Verwenden der anderen Zeit-Funktion <a href="http://codex.wordpress.org/Template_Tags/the_time">the_time()</a>, bei der man wie bei <a href="http://codex.wordpress.org/Template_Tags/the_date">the_date()</a> auch das Datumsformat mit Parametern bestimmen kann.</p>
<pre><code>&lt;?php the_time('j. F Y'); ?&gt;</code></pre>
<p><em>Bemerkung:</em><br />
Mit dieser Angabe wird das Datum in Form von <em>27. Oktober 2009</em> ausgegeben. Der <strong>Nachteil</strong> dieser L&#246;sung ist allerdings, dass das Datumsformat dann fest im Theme steht und das Format, das man in den WordPress-Einstellungen angegeben hat, ignoriert wird. Das ist nat&#252;rlich besonders bei einem Theme, das mehrsprachig sein soll, gar nicht gut.</p>
<h3>Abfrage des Datumsformats</h3>
<p>Um das Format des Datums dynamisch ausgeben zu lassen, kann man die Funktion the_time() mit der Abrage des Datumsformats aus den WordPress-Einstellungen kombinieren.</p>
<pre><code>&lt;?php the_time(get_option('date_format')); ?&gt;</code></pre>
<h3>Fazit</h3>
<p>Mit der gezeigten L&#246;sung wird f&#252;r jeden Post das richtige Datum angezeigt, auch wenn mehrere Posts dasselbe Datum haben. Das Datumsformat bleibt au&#223;erdem &#252;ber die Einstellungen ver&#228;nderbar.</p>
<h3>Relevante Links</h3>
<ul>
<li><a href="http://codex.wordpress.org/Template_Tags/the_date">WordPress-Codex the_date()</a></li>
<li><a href="http://codex.wordpress.org/Template_Tags/the_time">WordPress-Codex the_time()</a></li>
<li><a href="http://codex.wordpress.org/Formatting_Date_and_Time">WordPress-Codex Formatting Date and Time</a></li>
<li><a href="http://codex.wordpress.org/Function_Reference/get_option">WordPress-Codex get_option()</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.onlinecasinodemar.com/wordpress/funktionen/wordpress-datumsanzeige/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Tutorial: jQuery Dropdown Men&#252; f&#252;r WordPress</title>
		<link>http://www.onlinecasinodemar.com/wordpress/tutorial-jquery-dropdown-menue-fuer-wordpress/</link>
		<comments>http://www.onlinecasinodemar.com/wordpress/tutorial-jquery-dropdown-menue-fuer-wordpress/#comments</comments>
		<pubDate>Fri, 20 Feb 2009 11:50:17 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress Funktionen]]></category>
		<category><![CDATA[dropdown menu]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[WordPress Themes]]></category>

		<guid isPermaLink="false">http://www.onlinecasinodemar.com/?p=698</guid>
		<description><![CDATA[<img width="280" height="210" src="http://www.onlinecasinodemar.com/wp-content/uploads/2009/02/superfish-jquery-dropdown.jpg" class="attachment-post-thumbnail wp-post-image" alt="superfish-jquery-dropdown" title="superfish-jquery-dropdown" />Inhalte von WordPress-Seiten werden immer komplexer und damit nat&#252;rlich ihre Navigation. Eine schicke Sache f&#252;r ein komplexes Navigationsmen&#252; ist ein Dropdown-Men&#252;. Eine L&#246;sung, die ich gern verwende, ist das Superfish jQuery-Plugin von Joel Birch. Die Implementierung in WordPress ist nicht schwer. Vor drei Wochen habe ich bereits ein Tutorial geschrieben, welches das Einf&#252;gen eines Superfish-Dropdown [...]]]></description>
			<content:encoded><![CDATA[<img width="280" height="210" src="http://www.onlinecasinodemar.com/wp-content/uploads/2009/02/superfish-jquery-dropdown.jpg" class="attachment-post-thumbnail wp-post-image" alt="superfish-jquery-dropdown" title="superfish-jquery-dropdown" /><p>Inhalte von WordPress-Seiten werden immer komplexer und damit nat&#252;rlich ihre Navigation. Eine schicke Sache f&#252;r ein komplexes Navigationsmen&#252; ist ein Dropdown-Men&#252;. Eine L&#246;sung, die ich gern verwende, ist das Superfish jQuery-Plugin von Joel Birch. Die Implementierung in WordPress ist nicht schwer.<span id="more-698"></span></p>
<p>Vor drei Wochen habe ich bereits ein <a href="http://webdemar.com/webdesign/tutorial-jquery-dropdown-menue-mit-superfish/">Tutorial</a> geschrieben, welches das Einf&#252;gen eines <a href="http://users.tpg.com.au/j_birch/plugins/superfish/">Superfish-Dropdown</a> in eine normale Website erkl&#228;rt. Wer also noch keine Erfahrung mit dem jQuery-Plugin hat, sollte dort mal einen Blick drauf werfen.</p>
<p class="info"><strong>Grundlage f&#252;r dieses Tutorial</strong><br />
<a href="http://webdemar.com/webdesign/tutorial-jquery-dropdown-menue-mit-superfish/" title="jQuery Dropdown Men&#252; mit Superfish">Tutorial: jQuery Dropdown Men&#252; mit Superfish</a></p>
<h3>Einbindung des Superfish-Skriptes</h3>
<p>Wie in dem vorherigen <a href="http://webdemar.com/webdesign/tutorial-jquery-dropdown-menue-mit-superfish/">Tutorial</a>, m&#252;ssen wir zun&#228;chst das <a href="http://users.tpg.com.au/j_birch/plugins/superfish/">Skript</a> des jQuery-Plugins im Head-Bereich der Website einbinden und aufrufen.</p>
<p>In einem WordPress-Theme bearbeiten wir daf&#252;r die Datei <em>header.php</em>. Wir setzen weiterhin voraus, dass sowohl die jQuery-Library (jquery-1.2.6.min.js), das Superfish-Skript (superfish.js) und das Superfish-Stylesheet (superfish.css) im Theme-Ordner im Unterordner /sf/ liegen.</p>
<pre><code>&lt;link rel='stylesheet' type='text/css' media='screen' href='&lt;?php bloginfo('template_url'); ?&gt;/sf/superfish.css' /&gt;
&lt;script type='text/javascript' src='&lt;?php bloginfo('template_url'); ?&gt;/sf/superfish.js'&gt;&lt;/script&gt;</code></pre>
<p><em>Bemerkung:</em><br />
Hiermit binden wir also sowohl das Stylesheet des Dropdown also auch das Javascript mit den richtigen Pfaden (/wp-content/themes/dein-theme/sf/) in den Head-Bereich ein.</p>
<p>Somit ist das Plugin f&#252;r uns nun aufruf- und einsetzbar.</p>
<pre><code>&lt;script type='text/javascript'&gt;
    $(document).ready(function() {
        $('ul.sf-menu').superfish();
    });
&lt;/script&gt;</code></pre>
<p><em>Bemerkung:</em><br />
Mit diesem Aufrunf wird das Superfish-Plugin nun auf alle ungeordneten Listen mit der CSS-Klasse .sf-menu angewendet. Weitere Anpassungen des Plugins entnehmt bitte dem vorherigen <a href="http://webdemar.com/webdesign/tutorial-jquery-dropdown-menue-mit-superfish/">Tutorial</a>.</p>
<h3>Superfish-Dropdown und wp_list_categories()</h3>
<p>F&#252;r die Anzeige eines Dropdown-Men&#252;s f&#252;r Kategorien brauchen wir eine ungeordnete Liste (ul) aller Kategorien. Unterkategorien werden in verschachtelten Listen dargestellt (ul > li > ul etc.). WordPress stellt uns daf&#252;r die Funktion <a href="http://codex.wordpress.org/Template_Tags/wp_list_categories">wp_list_categories()</a> bereit.</p>
<p>Ein Aufruf k&#246;nnte also wie folgt aussehen:</p>
<pre><code>&lt;ul id='cat-menu' class='sf-menu'&gt;
    &lt;?php wp_list_categories('title_li='); ?&gt;
&lt;/ul&gt;</code></pre>
<p>Dieses Konstrukt w&#252;rde nun schon ein ansehnliches Dropdown-Men&#252; erzeugen. Um das Ganze zu verfeinern, kann man dem Men&#252; noch einen Link zur Startseite hinzuf&#252;gen.</p>
<pre><code>&lt;ul id='cat-menu' class='sf-menu'&gt;
    &lt;li class='cat_item&lt;?php if(is_home()) echo ' current-cat'; ?&gt;'&gt;&lt;a href='&lt;?php bloginfo('url'); ?&gt;'&gt;Startseite&lt;/a&gt;&lt;/li&gt;
    &lt;?php wp_list_categories('title_li='); ?&gt;
&lt;/ul&gt;</code></pre>
<p><em>Bemerkung:</em><br />
Wir haben auch hier alle Einflussm&#246;glichkeiten, die uns die Funktion <a href="http://codex.wordpress.org/Template_Tags/wp_list_categories">wp_list_categories()</a> bietet.</p>
<h3>Superfish-Dropdown und wp_list_pages()</h3>
<p>Ein Men&#252; f&#252;r WordPress-Seiten mit dem Dropdown darzustellen, ist nun relativ einfach. Mit der Funktion <a href="http://codex.wordpress.org/Template_Tags/wp_list_pages">wp_list_pages()</a> erhalten wir die erforderliche Listenstruktur f&#252;r alle Seiten und Unterseiten.</p>
<pre><code>&lt;ul id='page-menu' class='sf-menu'&gt;
    &lt;?php wp_list_pages('title_li='); ?&gt;
&lt;/ul&gt;</code></pre>
<p><em>Bemerkung:</em><br />
Auch hier k&#246;nnen wir nat&#252;rlich den Startseiten-Men&#252;punkt einf&#252;gen (s.o.) und das Men&#252; mit den Parametern der Funktion <a href="http://codex.wordpress.org/Template_Tags/wp_list_pages">wp_list_pages()</a> an unsere Anforderungen anpassen.</p>
<h3>Superfish-Dropdown und wp_page_menu()</h3>
<p>Mit der Version 2.7 haben uns die WordPress-Entwickler eine neue Funktion zum Aufruf eines Seitenmen&#252;s gegeben &#8211; <a href="http://webdemar.com/wordpress/neue-funktion-wp-page-menu-in-wordpress-27/">wp_page_menu()</a>.</p>
<p>Wie oben erw&#228;hnt, ist es f&#252;r die Darstellung eines Superfish-Men&#252;s n&#246;tig, der ungeordneten Liste (ul) des Seitenemen&#252;s die CSS-Klasse .sf-menu zu geben. Die neue Funktion <a href="http://webdemar.com/wordpress/neue-funktion-wp-page-menu-in-wordpress-27/">wp_page_menu()</a> bietet uns zwar einige neue M&#246;glichkeiten (z. B. Startseiten-Link einf&#252;gen), &#8220;verw&#228;hrt&#8221; uns jedoch den direkten Zugriff auf den ul-Tag der Liste.</p>
<p>Der Aufruf sieht bspw. wie folgt aus:</p>
<pre><code>&lt;?php wp_page_menu('show_home=1&amp;include=1,2,4,7&amp;menu_class=page-navi&amp;title_li='); ?&gt;</code></pre>
<p><em>Bemerkung:</em><br />
Wir k&#246;nnen u.a. eine CSS-Klasse vergeben (menu_class). Jedoch wird diese Klasse auf den um die Liste (ul) erzeugten div-Container angewendet.</p>
<p>Der Output der Funktion w&#252;rde etwa wie folgt aussehen:</p>
<pre><code>&lt;div class='page-navi'&gt;
	&lt;ul&gt;
		&lt;li class='current_page_item'&gt;&lt;a href='#'&gt;Home&lt;/a&gt;&lt;/li&gt;
		&lt;li class='page_item page-item-1'&gt;&lt;a href='#' title='Seite1'&gt;Seite1&lt;/a&gt;&lt;/li&gt;
		&lt;li class='page_item page-item-2'&gt;&lt;a href='#' title='Seite2'&gt;Seite2&lt;/a&gt;&lt;/li&gt;
		&lt;li class='page_item page-item-3'&gt;&lt;a href='#' title='Seite4'&gt;Seite4&lt;/a&gt;&lt;/li&gt;
		&lt;li class='page_item page-item-3'&gt;&lt;a href='#' title='Seite7'&gt;Seite7&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;
&lt;/div&gt;</code></pre>
<p><em>Bemerkung:</em><br />
Nun haben wir zwar eine Liste innerhalb eines div-Containers und f&#252;r CSS-Formatierungen ist diese Verschachtelung nat&#252;rlich kein Problem. F&#252;r unser Dropdown brauchen wir aber auf jeden Fall die Klasse .sf-menu auf dem ul-Tag.</p>
<h3>Der Liste in wp_page_menu() eine Klasse zuteilen</h3>
<p>Mit einer kleinen Erweiterung in der <em>functions.php</em> unseres WordPress-Themes k&#246;nnen wir die Funktion <a href="http://webdemar.com/wordpress/neue-funktion-wp-page-menu-in-wordpress-27/">wp_page_menu()</a> durch einen <a href="http://codex.wordpress.org/Function_Reference/add_filter">WordPress-Filter</a> schicken. Mit der PHP-Funktion <a href="http://de.php.net/preg_replace">preg_replace</a> suchen wir uns den ersten(!) ul-Tag im Output unseres Seitenmen&#252;s und erweitern diesen um eine ID und eine Klasse. Ian Steward von <a href="http://themeshaper.com/adding-class-wordpress-page-menu/">ThemeShaper</a> hat diese L&#246;sung vorgestellt.</p>
<pre><code>// Add ID and CLASS attributes to the first &lt;ul&gt; occurence in wp_page_menu
function add_menuclass($ulclass) {
return preg_replace('/&lt;ul&gt;/', '&lt;ul id='nav' class='something-classy'&gt;', $ulclass, 1);
}
add_filter('wp_page_menu','add_menuclass');</code></pre>
<p>Bemerkung:<br />
Mit diesem kleinen Code-Schnipsel in der <em>functions.php</em> ist es nun ohne Probleme m&#246;glich, auch in der neuen wp_page_menu-Funktion unsere Klasse .sf-menu an die ungeordnete Liste (ul) weiterzugeben.</p>
<h3>Fazit</h3>
<p>Wir sehen also, es ist nicht weiter schwierig, ein Superfish-Dropdown-Men&#252; in einer WordPress-Navigation zu nutzen, da wir lediglich eine Klasse vergeben m&#252;ssen. Was etwas mehr Arbeit bereitet, ist die Anpassung des Stylesheets an das Layout der Seite. Aber auch das ist mit Geduld und Spucke ohne Weiteres zu schaffen <img src='http://www.onlinecasinodemar.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  </p>
<h3>Relevante Links</h3>
<ul>
<li><a href="http://users.tpg.com.au/j_birch/plugins/superfish">Superfish &#8211; Suckerfish on ‘roids</a></li>
<li><a href="http://webdemar.com/webdesign/tutorial-jquery-dropdown-menue-mit-superfish/">Tutorial: jQuery Dropdown Men&#252; mit Superfish</a></li>
<li><a href="http://webdemar.com/wordpress/neue-funktion-wp-page-menu-in-wordpress-27/">Funktion wp_page_menu()</a></li>
<li><a href="http://themeshaper.com/adding-class-wordpress-page-menu/">Adding Class To The WordPress Page Menu</a></li>
<li><a href="http://de.php.net/preg_replace">PHP-Funktion preg_replace()</a></li>
<li><a href="http://webdemar.com/webdesign/superfish-jquery-menu-ie-z-index-bug/">Superfish jQuery Menu IE z-index Bug</a> (English)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.onlinecasinodemar.com/wordpress/tutorial-jquery-dropdown-menue-fuer-wordpress/feed/</wfw:commentRss>
		<slash:comments>42</slash:comments>
		</item>
		<item>
		<title>Tutorial: WordPress-Themes lokalisieren</title>
		<link>http://www.onlinecasinodemar.com/wordpress/tutorial-wordpress-themes-lokalisieren/</link>
		<comments>http://www.onlinecasinodemar.com/wordpress/tutorial-wordpress-themes-lokalisieren/#comments</comments>
		<pubDate>Thu, 05 Feb 2009 11:47:33 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress Funktionen]]></category>
		<category><![CDATA[Übersetzung]]></category>
		<category><![CDATA[Lokalisierung]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[WordPress Themes]]></category>

		<guid isPermaLink="false">http://www.onlinecasinodemar.com/?p=666</guid>
		<description><![CDATA[<img width="280" height="210" src="http://www.onlinecasinodemar.com/wp-content/uploads/2009/11/wordpress.jpg" class="attachment-post-thumbnail wp-post-image" alt="wordpress" title="wordpress" />Die Lokalisierung / &#220;bersetzung von WordPress-Themes ist eine von mir bisher str&#228;flich wenig beachtete Funktion von WordPress. Dabei kann man mit einem relativ geringen Mehraufwand einen geh&#246;rigen Mehrwert in Sachen Interantionalisierung von Themes schaffen. Warum lokalisieren? Die Vorteile, den kleinen Mehraufwand bei der Erstellung eines WordPress-Themes in Kauf zu nehmen und dieses zu lokalisieren, liegen [...]]]></description>
			<content:encoded><![CDATA[<img width="280" height="210" src="http://www.onlinecasinodemar.com/wp-content/uploads/2009/11/wordpress.jpg" class="attachment-post-thumbnail wp-post-image" alt="wordpress" title="wordpress" /><p>Die Lokalisierung / &#220;bersetzung von WordPress-Themes ist eine von mir bisher str&#228;flich wenig beachtete Funktion von WordPress. Dabei kann man mit einem relativ geringen Mehraufwand einen geh&#246;rigen Mehrwert in Sachen Interantionalisierung von Themes schaffen.<span id="more-666"></span></p>
<h3 class="clear">Warum lokalisieren?</h3>
<p>Die Vorteile, den kleinen Mehraufwand bei der Erstellung eines WordPress-Themes in Kauf zu nehmen und dieses zu lokalisieren, liegen auf der Hand. Mit gesonderten Sprachdateien l&#228;sst sich das Theme unabh&#228;ngig vom Quellcode, den man daf&#252;r dann nicht mehr anr&#252;hren muss, in beliebig viele Sprachen &#252;bersetzen.</p>
<p>Die WordPress-Installation selbst ist in Sachen Intarnationalisierung und &#220;bersetzung schon weit gediehen und es gibt bereits <a href="http://codex.wordpress.org/WordPress_in_Your_Language">unz&#228;hlige &#220;bersetzungen</a> f&#252;r den WordPress-Admin. Dann sollten wir beim Theme nicht aufh&#246;ren.</p>
<h3>WordPress verwendet GetText:</h3>
<p>Um WordPress-Themes zu lokalisieren verwendet WordPress eine &#220;bersetzungsanwendung namens GetText. Mit dieser Anwendung ist es relativ einfach, WordPress zusagen, was wo und womit &#252;bersetzt werden soll. Mehr dazu im Detail.</p>
<h3>HTML-Strings &#252;bersetzbar machen:</h3>
<p>Nehmen wir an, wir wollen in userem Theme einen Titel der Sidebar &#252;bersetzen. Dort steht im Quellcode folgendes:</p>
<pre><code>&lt;h4&gt;Recent Articles&lt;/h4&gt;</code></pre>
<p>Um diesen HTML-String nun per GetText &#252;bersetzbar zu machen, m&#252;ssen wir ihn in einen GetText-Call packen, den viele Theme-Designer von Euch sicherlich schon gesehen haben und der wie folgt aussieht:</p>
<pre><code>&lt;h4&gt;&lt;?php _e('Recent Articles', my_theme_name); ?&gt;&lt;/h4&gt;</code></pre>
<p>Bemerkung:<br />
Hiermit rufen wir die GetText-Funktion _e() auf und sagen ihr, was womit &#252;bersetzt werden soll und dass die &#220;bersetzung an dieser Stelle ausgegeben werden soll (PHP: echo). Der erste Parameter in der Klammer sagt, was &#252;bersetzt werden soll und der zweite (my_theme_name) sagt WordPress, wo die &#220;bersetzung zu finden ist (dazu sp&#228;ter mehr),</p>
<h3>GetText in WordPress-Funktionen:</h3>
<p>Sicherlich sind Euch auch schon WordPress-Funktionen bekannt, in denen verschiedene Strings verarbeitet werden. Ein Beispiel ist der Aufruf der Anzahl der Kommentare:</p>
<pre><code>&lt;?php comments_number(__('No comments',my_theme_name), __('One comment',my_theme_name), __( '% comments',my_theme_name) );?&gt;</code></pre>
<p>Bemerkung:<br />
In der Funktion comments_number() k&#246;nnen wir drei Strings f&#252;r drei m&#246;gliche F&#228;lle &#252;bergeben (kein, 1 und x Kommentare). Wie ihr vielleicht seht, rufen wir jedoch jetzt die GetText-Funktion __() auf. Auch diese sagt WordPress was womit &#252;bersetzt werden soll, doch nun wird die &#220;bersetzung an dieser Stelle nicht ausgegeben (PHP: kein echo), sondern kann als String von PHP weiterverarbeitet werden.</p>
<h3>Text-Domains:</h3>
<p>Der Name ist ein wenig irref&#252;hrend. Es geht um den zweiten Parameter in den GetText-Calls (my_theme_name). Dieser ist optional und hilft WordPress die richtige &#220;bersetzung zu finden. Es kann n&#228;mlich vorkommen, dass z. B. in einem Plugin, das wir verwenden, der gleiche String &#252;bersetzt werden soll. Mit unserer eindeutigen Text-Domain k&#246;nnen wir klar bestimmen, welche &#220;bersetzung gew&#228;hlt werden soll. Die Text-Domain kann der Theme-Name sein, mit dem man auch den Theme-Ordner benannt hat (z. B. &#8216;decoder&#8217; oder &#8216;my_theme_name&#8217;).</p>
<h3>Vorbereiten und Erstellen der Sprachdatei:</h3>
<p>Angenommen wir haben jetzt &#252;berall in unseren Theme diese zu &#252;bersetzenden Strings verteilt. Als n&#228;chstes wollen wir diese in einer Liste ausgeben, um sie weiterverarbeiten zu k&#246;nnen.</p>
<div id="attachment_676" class="wp-caption aligncenter" style="width: 560px"><img src="http://www.onlinecasinodemar.com/wp-content/uploads/2009/02/php-to-po.jpg" alt="PHP to .po extractor" title="PHP to .po extractor" width="550" height="200" class="size-full wp-image-676" /><p class="wp-caption-text">PHP to .po extractor</p></div>
<p>Diese Liste, mit der wir auch die &#220;bersetzung machen ist eine .po-Datei (Portable Object). Um nun aus den php-Dateien unseres Themes die Liste in der .po-Datei zu erstellen, gibt es <em><a href="http://www.icanlocalize.com/tools/php_scanner">PHP to .po extractor</a></em>, mit denen wir einzelne Dateien aber auch Zip-Archive verarbeiten k&#246;nnen. Dieser sucht alle Strings, die in _e() und __() Funktionen gepackt sind und gibt uns die .po-Datei zur&#252;ck.</p>
<h3>&#220;bersetzen aller Strings in der .po-Datei:</h3>
<p>Um .po-Dateien verarbeiten zu k&#246;nnen, solltet Ihr Euch das Programm <a href="http://www.poedit.net/">Poedit</a> herunterladen. Mit diesem Programm lassen sich die &#220;bersetzungen einfach und &#252;bersichtlich anfertigen. Beim Abspeichern unserer .po-Datei wird automatisch eine .mo-Datei erstellt, die letztlich die Sprachdatei ist, die WordPress ben&#246;tigt. Die .po-Datei ist sozusagen nur die Bearabeitungsdatei.</p>
<div id="attachment_677" class="wp-caption aligncenter" style="width: 560px"><img src="http://www.onlinecasinodemar.com/wp-content/uploads/2009/02/poedit.jpg" alt="Sprachdateien bearbeiten mit Poedit" title="Sprachdateien bearbeiten mit Poedit" width="550" height="200" class="size-full wp-image-677" /><p class="wp-caption-text">Sprachdateien bearbeiten mit Poedit</p></div>
<p>Wichtig beim Erstellen der Sprachdateien sind noch die <a href="http://www.gnu.org/software/autoconf/manual/gettext/Locale-Names.html">Sprach- und L&#228;ndercodes</a>, mit denen wir die Sprachfiles benennen. Eine Sprachdatei f&#252;r Deutsch aus Deutschland m&#252;sste also de_DE.po / de_DE.mo hei&#223;en. F&#252;r Schweizer Deutsch dementsprechend de_CH.po / de_CH.mo.</p>
<h3>Laden der Text-Domain:</h3>
<p>Wenn wir die .po/.mo-Dateien in unserem Theme-Ordner platziert haben, sagen wir WordPress, dass in unserem Theme eine &#220;bersetzung geladen werden soll. </p>
<pre><code>&lt;?php load_theme_textdomain(my_theme_name); ?&gt;</code></pre>
<p>Bemerkung:<br />
Diesen Aufruf platzieren wir am besten in der header.php, da diese bei jedem Seitenaufruf angesprochen wird.</p>
<p>Wenn WordPress nun das Sprachfile f&#252;r die Sprache findet, die in der wp-config.php angegeben ist, wird das Theme mit allen &#220;bersetzungen richtig angezeigt.</p>
<pre><code>define ('WPLANG', 'de_DE');</code></pre>
<p><em>// edit:</em></p>
<h3>Alternative per Plugin:</h3>
<p>Wenn einem das Installieren von Poedit und das externe Scannen der PHP-Dateien zum umst&#228;ndlich ist, kann man das Ganze auch WordPress-intern l&#246;sen. Das WordPress-Plugin <a href="http://www.code-styling.de/deutsch/entwicklungen/wordpress-plugin-codestyling-localization">Codestyling Localization</a> scheint mir daf&#252;r eine starke Alternative zu sein. Ich habe es selbst noch nicht getestet, werde das aber auf jeden Fall nachholen.</p>
<p>Danke an <a href="#comment-1728">sokai</a> f&#252;r den Tipp!</p>
<p><em>// end edit;</em></p>
<h3>Fazit:</h3>
<p>Die Lokalisierung von WordPress-Themes sollte f&#252;r Theme-Autoren zum Standard geh&#246;ren. Wenn man diese Routine einmal durchlaufen ist, h&#228;lt sich der Mehraufwand tats&#228;chlich in Grenzen und das Theme wird dem internationalen Charakter von WordPress gerecht.</p>
<h3>Relevante Links:</h3>
<ul>
<li><a href="http://codex.wordpress.org/Translating_WordPress">WordPress Codex Translating WordPress</a></li>
<li><a href="http://codex.wordpress.org/WordPress_in_Your_Language">WordPress Codex WordPress in You Language</a></li>
<li><a href="http://www.poedit.net/">Poedit</a> zum Verarbeiten von .po-Dateien</li>
<li><a href="http://www.icanlocalize.com/tools/php_scanner">PHP Text-Scanner</a> zum Erstellen der .po-Dateien</li>
<li><a href="http://blog-en.icanlocalize.com/installing-wordpress-for-multiple-language-blogs/how-to-localize-wordpress-themes-and-plugins-with-gettext/">How to localize WordPress themes and plugins with GetText</a></li>
<li><a href="http://www.zyblog.de/2006/01/06/wordpress-themes-lokalisieren/">WordPress Themes lokalisieren /// ZyBlog</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.onlinecasinodemar.com/wordpress/tutorial-wordpress-themes-lokalisieren/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Kommentare formatieren in WordPress 2.7</title>
		<link>http://www.onlinecasinodemar.com/wordpress/kommentare-formatieren-in-wordpress-27/</link>
		<comments>http://www.onlinecasinodemar.com/wordpress/kommentare-formatieren-in-wordpress-27/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 17:58:06 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress Funktionen]]></category>
		<category><![CDATA[WordPress 2.7]]></category>
		<category><![CDATA[WordPress Themes]]></category>
		<category><![CDATA[wp_list_comments]]></category>

		<guid isPermaLink="false">http://www.onlinecasinodemar.com/?p=601</guid>
		<description><![CDATA[<img width="280" height="210" src="http://www.onlinecasinodemar.com/wp-content/uploads/2009/01/kommentare-formatieren.jpg" class="attachment-post-thumbnail wp-post-image" alt="kommentare-formatieren" title="kommentare-formatieren" />Die Formatierung der Kommentare &#8211; ein beliebter Sport unter Theme-Designern. Wer Kommentare in WordPress 2.7 anpassen m&#246;chte, findet in der comments.php jedoch lediglich den Aufruf der Funktion wp_list_comments. Was aber, wenn ich einen v&#246;llig anderen Aufbau ben&#246;tige? Aufruf der Kommentare: Wer einmal in die comments.php eines Themes f&#252;r WordPress 2.7 schaut, findet nicht mehr das [...]]]></description>
			<content:encoded><![CDATA[<img width="280" height="210" src="http://www.onlinecasinodemar.com/wp-content/uploads/2009/01/kommentare-formatieren.jpg" class="attachment-post-thumbnail wp-post-image" alt="kommentare-formatieren" title="kommentare-formatieren" /><p>Die Formatierung der Kommentare &#8211; ein beliebter Sport unter Theme-Designern. Wer Kommentare in WordPress 2.7 anpassen m&#246;chte, findet in der comments.php jedoch lediglich den Aufruf der Funktion wp_list_comments. Was aber, wenn ich einen v&#246;llig anderen Aufbau ben&#246;tige?<span id="more-601"></span></p>
<h3 class="clear">Aufruf der Kommentare:</h3>
<p>Wer einmal in die comments.php eines Themes f&#252;r WordPress 2.7 schaut, findet nicht mehr das gesamte Ger&#252;st eines Kommentars, um dieses nach Belieben anzupassen. Die Liste aller Kommentare wird nur noch mit einer einzigen Funktion aufgerufen.</p>
<pre><code>&lt;div class='commentlist'&gt;
    &lt;?php wp_list_comments(); ?&gt;
&lt;/div&gt;</code></pre>
<p><em>Bemerkung:</em><br />
&#220;ber das Stylesheet k&#246;nnen wir nat&#252;rlich mit CSS einen Gro&#223;teil der Formatierung &#252;bernehmen und bekommen daf&#252;r auch zahlreiche Klassen an die Hand. Wenn wir jedoch z. B. ein div hinzuf&#252;gen oder ver&#228;ndern m&#246;chten, wird es schon schwierig.</p>
<h3>Eigenes Kommentar-Template aufrufen:</h3>
<p>Um hier absolute Kontrolle zu bekommen, k&#246;nnen wir beim Aufruf dieser Liste ebenfalls angeben, dass ein individuelles Kommentar-Template verwendet werden soll.</p>
<pre><code>&lt;ul class='commentlist'&gt;
    &lt;?php wp_list_comments('callback=mytheme_comment'); ?&gt;
&lt;/ul&gt;</code></pre>
<p><em>Bemerkung:</em><br />
WordPress pr&#252;ft nun, ob in der functions.php eine Funktion mit dem Namen &#8216;mytheme_comment&#8217; vorhanden ist.</p>
<h3>Eigenes Kommentar-Template verfassen:</h3>
<p>In der functions.php k&#246;nnen wir nun diese Callback-Funktion erstellen und den Aufbau der Kommentarliste nach Belieben anpassen.</p>
<pre><code>function mytheme_comment($comment, $args, $depth) {
   $GLOBALS['comment'] = $comment; ?&gt;
   &lt;li &lt;?php comment_class(); ?&gt; id='li-comment-&lt;?php comment_ID() ?&gt;'&gt;
     &lt;div id='comment-&lt;?php comment_ID(); ?&gt;'&gt;
      &lt;div class='comment-author vcard'&gt;
         &lt;?php echo get_avatar($comment,$size='48',$default='&lt;path_to_url&gt;' ); ?&gt;

         &lt;?php printf(__('&lt;cite class='fn'&gt;%s&lt;/cite&gt; &lt;span class='says'&gt;says:&lt;/span&gt;'), get_comment_author_link()) ?&gt;
      &lt;/div&gt;
      &lt;?php if ($comment-&gt;comment_approved == '0') : ?&gt;
         &lt;em&gt;&lt;?php _e('Your comment is awaiting moderation.') ?&gt;&lt;/em&gt;
         &lt;br /&gt;
      &lt;?php endif; ?&gt;

      &lt;div class='comment-meta commentmetadata'&gt;&lt;a href='&lt;?php echo htmlspecialchars( get_comment_link( $comment-&gt;comment_ID ) ) ?&gt;'&gt;&lt;?php printf(__('%1$s at %2$s'), get_comment_date(),  get_comment_time()) ?&gt;&lt;/a&gt;&lt;?php edit_comment_link(__('(Edit)'),'  ','') ?&gt;&lt;/div&gt;

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

      &lt;div class='reply'&gt;
         &lt;?php comment_reply_link(array_merge( $args, array('depth' =&gt; $depth, 'max_depth' =&gt; $args['max_depth']))) ?&gt;
      &lt;/div&gt;
     &lt;/div&gt;
&lt;?php
        }</code></pre>
<h3>Fazit:</h3>
<p>Wir behalten also auch in WordPress 2.7 die volle Kontrolle &#252;ber die Ausgabe der Kommentare. Da wird es in Zukunft, wie auch bisher, sicherlich viel Interessantes und Kreatives zu sehen geben.</p>
<h3>Relevante Links:</h3>
<ul>
<li><a href="http://codex.wordpress.org/Template_Tags/wp_list_comments" title="Template_Tags/wp_list_comments">WordPress-Codex Template Tags/wp_list_comments</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.onlinecasinodemar.com/wordpress/kommentare-formatieren-in-wordpress-27/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

