<?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>Schweizer WordPress Magazin &#187; PHP</title>
	<atom:link href="http://wp-magazin.ch/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://wp-magazin.ch</link>
	<description>WordPress verstehen und anwenden</description>
	<lastBuildDate>Mon, 02 Apr 2012 11:45:40 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>How-To: Video Thumbnails automatisch laden mit oEmbed</title>
		<link>http://wp-magazin.ch/blog/video-thumbnails-automatisch-laden-oembed-4740/</link>
		<comments>http://wp-magazin.ch/blog/video-thumbnails-automatisch-laden-oembed-4740/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 16:19:43 +0000</pubDate>
		<dc:creator>Pascal Birchler</dc:creator>
				<category><![CDATA[Anleitungen]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[oEmbed]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Thumbnails]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://wp-magazin.ch/?p=4740</guid>
		<description><![CDATA[Mit WordPress 2.9 wurde die Möglichkeit eingeführt, Videos einer Vielzahl von Websites ohne grossen Aufwand einzubinden. Das Ganze funktioniert mit der sogenannten oEmbed Technik. Diese habe ich mir für die folgende Aufgabe zu Nutzen gemacht.]]></description>
			<content:encoded><![CDATA[<p>Mit WordPress 2.9 wurde die Möglichkeit eingeführt, Videos einer Vielzahl von Websites ohne grossen Aufwand einzubinden. Dazu muss man lediglich die URL eines Videos auf einer einzelnen Zeile einfügen, danach kann man ganz normal mit dem Schreiben fortfahren. Das Ganze funktioniert mit der sogenannten <a title="oEmbed" href="http://oembed.com/" target="_blank">oEmbed Technik</a>. Diese habe ich mir für die folgende Herausforderung zu Nutzen gemacht.</p>
<div id="attachment_4807" class="wp-caption alignright" style="width: 160px"><a href="http://wp-magazin.ch/blog/video-thumbnails-automatisch-laden-oembed-4740/vimeo/" rel="attachment wp-att-4807"><img src="http://wp-magazin.ch/wp-content/uploads/vimeo-150x150.jpg" alt="Vimeo" title="Vimeo" width="150" height="150" class="size-thumbnail wp-image-4807" /></a><p class="wp-caption-text">Vimeo</p></div>
<h3>Anforderung</h3>
<p>Für eine aktuelle Aufgabe suchte ich einen Weg, um einfach Vimeo Videos auf einem Blog zu veröffentlichen. Die Umsetzung erforderte einige Details, sodass rasch Custom Post Types eingesetzt wurden. Bei diesem Post Type gibt es dann eine Meta Box, bei welchem einfach die URL zum Video angegeben werden kann. Diese wird dann verwendet, um einerseits das Video auszugeben und andererseits auch direkt das Standbild des Videos als Post Thumbnail zu speichern.</p>
<h4>oEmbed</h4>
<p>oEmbed ist ein Format für die eingebettete Darstellung einer URL auf anderen Websites. Mit seiner simplen API können Websites eingebettete Inhalte wie Fotos und Videos einfügen, indem ein User bloss den Link dazu einfügen muss. Dazu definiert der Anbieter ein Muster, wie seine URLs aufgebaut sind, auf welches dann WordPress die URL untersuchen kann. Wird festgestellt, dass es eine gültige URL zu einem Vimeo Video ist, wird deren API aufgerufen.</p>
<p>Weitere Informationen zum Einfügen von Videos in WordPress gibt es im <a title="WordPress Codex - Embeds" href="http://codex.wordpress.org/Embeds" target="_blank">WordPress Codex</a>. Es gibt auch eine Dokumentation der <a title="Vimeo - oEmbed API" href="http://vimeo.com/api/docs/oembed" target="_blank">Vimeo oEmbed API</a>.</p>
<h3>Umsetzung</h3>
<p>Bei der Umsetzung war ich darüber erstaunt, wie viele Zeilen Code es schlussendlich benötigte, um das Ganze zum Laufen zu bringen. Doch fangen wir einmal von vorne an. Zu Beginn habe ich ein neues Must-Use Plugin (PHP-Datei im mu-plugins Ordner) erstellt und dort folgenden Code eingefügt:</p>
<pre><code>&lt;?php
add_action( 'publish_video', 'wpm_publish_video' ); // 'publish_post' bei normalen Posts

/**
 * Diese Funktion wird beim Publizieren eines Posts aufgerufen,
 * damit wir ein das Post Thumbnail hinzufügen können
 *
 * @param int $post_id Die ID des Posts
 */
function wpm_publish_video( $post_id ) {
	global $wpdb; // Datenbank-Objekt laden

	// Reine Vorsichtsmassnahme
	if ( 'video' !== get_post_type( $post_id ) )
		return false;

	// Nur fortfahren, wenn eine URL angegeben wurde und es noch kein Post Thumbnail gibt
	if ( '' === get_post_meta( $post_id, '_thumbnail_id', true ) || '' === $video = get_post_meta( $post_id, '_vimeo_url', true ) )
		return false;

}
?&gt;</code></pre>
<p>Mit dieser Funktion klinken wir uns erst in den Publizierungs-Vorgang des Beitrags (in diesem Fall vom Post Type <code>video</code>) ein und laden das WordPress Datenbank-Objekt. Mit der zweiten If-Abfrage stellen wir sicher, dass noch kein Post Thumbnail gesetzt wurde und dass eine Video URL angegeben wurde.</p>
<p>Als nächsten Schritt kann man dann die Informationen zum Video von Vimeo laden. Mir reicht daher eine einfache Abfrage einer einzigen URL. Möchte man aber beispielsweise automatisch auch andere Provider wie YouTube unterstützen, sollte man sich die <code>WP_oEmbed</code> Klasse in der Datei <code>wp-includes/class-oembed.php</code> etwas genauer ansehen, da dort die regulären Ausdrücke und die nötigen Methoden beschrieben sind.</p>
<pre><code>$url = "http://vimeo.com/api/oembed.json?url=$video";
// Video Infos laden
if ( ! $response = wp_remote_retrieve_body( wp_remote_get( $url ) ) )
	return false;

$json = json_decode( $response );
// JSON parsen
if ( null === $json )
	return false;</code></pre>
<p>Dieser Abschnitt, der direkt nach der Prüfung des Post Thumbnails eingefügt wird, holt nun also die Informationen zu einem Video, mit <code>wp_remote_body</code> laden wir auch nur den Body und nicht noch die HTTP Header. Falls diese Funktion einen Fehler zurückgibt, beenden wir auch unsere Funktion, denn ohne Inhalt können wir ja nichts anfangen. Danach wandeln wir nur noch den JSON String in ein PHP Objekt um und fahren nur im Erfolgsfall fort.</p>
<p>Die Rückgabe der API sieht übrigens wie folgt aus (bei XML). Uns interessiert dabei das Feld <code>thumbnail_url</code>, wenn man möchte kann man aber auch noch über <code>thumbnail_width</code> und <code>thumbnail_height</code> die Bildmasse auslesen.</p>
<div id="attachment_4802" class="wp-caption aligncenter" style="width: 610px"><a href="http://wp-magazin.ch/blog/video-thumbnails-automatisch-laden-oembed-4740/vimeo-oembed-api-xml/" rel="attachment wp-att-4802"><img src="http://wp-magazin.ch/wp-content/uploads/vimeo-oembed-api-xml-600x364.png" alt="Vimeo oEmbed API Resultat (XML)" title="Vimeo oEmbed API Resultat (XML)" width="600" height="364" class="size-large wp-image-4802" /></a><p class="wp-caption-text">Das kriegen wir von Vimeo zurück</p></div>
<p>Jetzt muss man ja eigentlich nur noch das Bild laden und als Post Thumbnail speichern. Klingt zwar einfach, aber es war doch umfangreicher als ich zuerst gedacht habe. Ich habe das deshalb in eine zweite Funktion ausgelagert.</p>
<pre><code>// Standbild URL und Titel des Videos auslesen
$thumbnail_url = $json->thumbnail_url;
$title = $json->title;
// *Magic*
$wp_thumb_id = wpm_generate_post_thumbnail( $post_id, $thumbnail_url, $title );
if ( ! $wp_thumb_id )
	return false;

// Thumbnail ID setzen
update_post_meta( $post_id, '_thumbnail_id', $wp_thumb_id );</code></pre>
<p>In der neuen Funktion <code>wpm_generate_post_thumbnail</code> müssen wir nun das Bild aufrufen und unter dem richtigen Dateinamen in WordPress hochladen, wofür es praktischerweise die Hilfsfunktion <code>wp_upload_bits</code> gibt. Danach muss dann das Standbild als Attachment eingetragen werden, was jedoch auch ein paar Kniffe benötigt.</p>
<pre><code>/**
 * Post Thumbnail hinzufügen von einer bestimmten URL
 */
function wpm_generate_post_thumbnail( $post_id, $url, $title = '' ) {
	if ( ! $response = wp_remote_retrieve_body( wp_remote_get( $url ) ) )
		return false;

	// Dateinamen herausfiltern
	$filename = substr( $url, ( strrpos( $url, '/' ) ) +1 );

	// Datei in WordPress hochladen
	$upload = wp_upload_bits( $filename, null, $response );
	if ( false !== $upload['error'] )
		return false;

	// MIME Type überprüfen, zurückgeben
	$filetype = wp_check_filetype( $filename );

	// Informationen zum Attachment
	$attachment = array(
		'post_mime_type' => $filetype['type'],
		'guid' => $upload['url'],
		'post_title' => $title,
		'post_content' => '', // z.B. Video Beschreibung
	);
	// Attachment einfügen
	$thumb_id = wp_insert_attachment( $attachment, $upload['file'], $post_id );
	if ( is_wp_error( $thumb_id ) )
		return false;

	// Für die Verknüpfung mit dem Beitrag müssen wir diese Klasse laden
	require_once(ABSPATH . '/wp-admin/includes/image.php');
	// Attachment mit Post verknüpfen
	wp_update_attachment_metadata( $thumb_id, wp_generate_attachment_metadata( $thumb_id, $upload['file'] ) );
	return $thumb_id;
}</code></pre>
<p>Mit diesen zwei Funktionen kann man nun ein Custom Field auslesen, die nötigen Informationen zum Video laden und das Standbild schliesslich als Post Thumbnail verwenden. Dies alles mit nur einem Mausklick beim Veröffentlichen des Artikels. Und das Beste daran: Funktioniert es einmal nicht oder das Standbild wurde geändert, kann man das vorhandene Thumbnail entfernen und einfach den Beitrag nochmals speichern.</p>
<p>Ich habe den Code einfach so aus dem Plugin kopiert, falls es also nicht funktioniert, einfach sagen. Bestimmt kann man das Ganze auch vereinfachen, bin also für jeden Ratschlag dankbar.</p>
<p>Nachtrag: Selbstverständlich dürft ihr auch noch sehen, wie das Ganze dann im Backend aussieht. Nichts Spezielles, ich habe zum Testen mal ein <a href="http://vimeo.com/31440895" title="Vimeo - Neue Website für Dominique Gisin" target="_blank">Video</a> von Marcel Widmer genommen.</p>
<div id="attachment_4816" class="wp-caption aligncenter" style="width: 610px"><a href="http://wp-magazin.ch/blog/video-thumbnails-automatisch-laden-oembed-4740/vimeo-oembed-resultat/" rel="attachment wp-att-4816"><img src="http://wp-magazin.ch/wp-content/uploads/vimeo-oembed-resultat-600x400.png" alt="Thumbnail via oEmbed Thumbnail" title="Thumbnail via oEmbed Thumbnail" width="600" height="400" class="size-large wp-image-4816" /></a><p class="wp-caption-text">Thumbnail via oEmbed Thumbnail</p></div>
]]></content:encoded>
			<wfw:commentRss>http://wp-magazin.ch/blog/video-thumbnails-automatisch-laden-oembed-4740/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>WordPress Template Hierarchie 2.0</title>
		<link>http://wp-magazin.ch/blog/wordpress-template-hierarchie-update-4700/</link>
		<comments>http://wp-magazin.ch/blog/wordpress-template-hierarchie-update-4700/#comments</comments>
		<pubDate>Sat, 29 Oct 2011 10:42:30 +0000</pubDate>
		<dc:creator>Pascal Birchler</dc:creator>
				<category><![CDATA[Kurznachrichten]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Themes]]></category>

		<guid isPermaLink="false">http://wp-magazin.ch/?p=4700</guid>
		<description><![CDATA[Zur Template Hierarchie in WordPress gibt es zwar eine Grafik, die das Prozedere veranschaulicht, doch Chip Bennet fand diese viel zu schlecht. Deshalb hat er seine eigene Idee aufgezeichnet - und die ist gar nicht mal schlecht.]]></description>
			<content:encoded><![CDATA[<p>Wer sich über die Funktionsweise der einzelnen Theme-Dateien schlau machen will, der landet früher oder später beim Codex-Artikel über die <a title="WordPress Codex - Template Hierarchy" href="http://codex.wordpress.org/Template_Hierarchy" target="_blank">Template Hierarchie</a> in WordPress. Dort findet sich auch eine Grafik, anhand derer man schnell erkennen kann, welche Datei für welche Darstellung verwendet wird.</p>
<p>Beispielsweise wird die Datei front-page.php immer für die Startseite verwendet und index.php wird immer am Schluss geladen, falls keine andere Datei passt. Im Laufe der Versionen gab es immer wieder Anpassungen an der Hierarchie, welche (meistens) auch in der Grafik reflektiert wurden, doch so richtig nützlich ist das Ganze noch nicht.</p>
<p>Chip Bennet hat deshalb auf eigene Faust die Grafik <a title="Chip Bennet - Template Hierarchy" href="http://www.chipbennett.net/themes/template-hierarchy/" target="_blank">nach seinen Vorstellungen erweitert</a>, fügt Fehlendes ein und Nützliches hinzu. Bei seiner Revision, wie er das Vorhaben nennt, gibt es beispielsweise jeweils noch eine Info, welche Body-Klasse (ausgegeben durch die body_class() Funktion) bei welcher Darstellung vorkommen.</p>
<p>Aktuell ist Bennets Grafik bei Revision 4 angelangt, man sollte aber die Seite regelmässig besuchen, falls es neue Änderungen gibt. Wer weiss, vielleicht hält diese verbesserte Version bald im Codex Einzug?</p>
<div id="attachment_4705" class="wp-caption aligncenter" style="width: 610px"><a href="http://wp-magazin.ch/wp-content/uploads/chip-template-hierarchy-rev-4.png"><img class="size-large wp-image-4705" title="Chip Bennets Template Hierarchie" src="http://wp-magazin.ch/wp-content/uploads/chip-template-hierarchy-rev-4-600x309.png" alt="Chip Bennets Template Hierarchie" width="600" height="309" /></a><p class="wp-caption-text">WordPress Template Hierarchie 2.0</p></div>
]]></content:encoded>
			<wfw:commentRss>http://wp-magazin.ch/blog/wordpress-template-hierarchie-update-4700/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Sicherheitslücke in TimThumb PHP Script</title>
		<link>http://wp-magazin.ch/blog/sicherheitsluecke-timthumb-php-script-4627/</link>
		<comments>http://wp-magazin.ch/blog/sicherheitsluecke-timthumb-php-script-4627/#comments</comments>
		<pubDate>Tue, 02 Aug 2011 06:26:23 +0000</pubDate>
		<dc:creator>Pascal Birchler</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Bilder]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Sicherheit]]></category>

		<guid isPermaLink="false">http://wp-magazin.ch/?p=4627</guid>
		<description><![CDATA[Das freie PHP Script TimThumb kann Bilder auf beliebige Grössen zuschneiden und wählt dabei den bestmöglichsten Ausschnitt wählt. TimThumb wird in Hunderten von Plugins und Themes verwendet - und weist dabei eine gravierende Sicherheitslücke auf!]]></description>
			<content:encoded><![CDATA[<p>Bereits seit über drei Jahren gibt es das freie <strong>PHP Script</strong> <a title="Google Code - TimThumb" href="http://code.google.com/p/timthumb/" target="_blank">TimThumb</a>, welches Bilder auf beliebige Grössen zuschneiden kann und dabei den bestmöglichen Ausschnitt wählt. Es wurde ursprünglich von Tim McDaniels entwickelt und daraufhin von <a title="Ben Gillbanks - Binary Moon" href="http://www.binarymoon.co.uk/" target="_blank">Ben Gillbanks</a> erweitert und nun weitergeführt. <strong>TimThumb</strong> wird in Hunderten von Plugins und Themes (auch kostenpflichtige) verwendet, da es für die Entwickler einen geringeren Arbeitsaufwand bedeutet und sie die Thumbnails von WordPress nicht so schick finden.</p>
<h3>Gravierende Sicherheitslücke erlaubt Ausführung von Schadcode</h3>
<p>In eben diesem TimThumb Script exisitiert nun eine <strong>Sicherheitslücke</strong>, mit der man <strong>beliebige PHP Dateien</strong> in dessen Cache-Verzeichnis einschleusen und <strong>ausführen</strong> kann. Das bedeutet praktisch <strong>ungehinderten Zugriff</strong> auf alle WordPress-Dateien, die Datenbank, FTP und sogar die Kommandozeile!</p>
<div id="attachment_4629" class="wp-caption alignright" style="width: 199px"><a href="http://wp-magazin.ch/wp-content/uploads/alucar-shell.png"><img class="size-medium wp-image-4629" title="Alucar Shell" src="http://wp-magazin.ch/wp-content/uploads/alucar-shell-189x300.png" alt="Alucar Shell" width="189" height="300" /></a><p class="wp-caption-text">Alucar Shell</p></div>
<p>TimThumb führt nur eine mässige Kontrolle der erlaubten Bild-URLs durch, weshalb das Script eine leichte Beute für Hacker darstellt. Das musste auch <a title="Mark Maunder - Zero Day Vulnerability in many WordPress Themes" href="http://markmaunder.com/2011/zero-day-vulnerability-in-many-wordpress-themes/" target="_blank">Mark Maunder</a> feststellen, als plötzlich Werbung in seinem Blog auftauchte. Beim Nachforschen stiess er auf weitere Ungereimtheiten. So hat der Hacker eine Alucar Shell hochgeladen, um den Server per Mausklick zu durchforsten.</p>
<h3>So behebt man die Lücke</h3>
<p>Mark hat in seinem Blog eine <strong>Anleitung</strong> gepostet, wie man die Lücke vorerst schliessen kann. Am besten ist es, <strong>TimThumb</strong> iunklusive des Cache-Verzeichnisses komplett zu <strong>löschen</strong>. Wer dies nicht will, sollte etwa auf Zeile 27 des Scripts das Array <code>$allowedSites</code> aufspüren und ersetzen mit <code>$allowedSites = array();</code>.</p>
<p>Desweiteren sollte man nach <code>base64_decode(...)</code> Ausschau halten, am besten via SSH mit dem <code>grep</code>-Kommando. Laut Mark gibt es auch verdächtige .txt-Dateien im <code>/tmp/</code>-Verzeichnis des Servers.</p>
]]></content:encoded>
			<wfw:commentRss>http://wp-magazin.ch/blog/sicherheitsluecke-timthumb-php-script-4627/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Etwas an die Community zurückgeben</title>
		<link>http://wp-magazin.ch/blog/etwas-an-community-zurueckgeben-4609/</link>
		<comments>http://wp-magazin.ch/blog/etwas-an-community-zurueckgeben-4609/#comments</comments>
		<pubDate>Fri, 29 Jul 2011 08:46:38 +0000</pubDate>
		<dc:creator>Pascal Birchler</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://wp-magazin.ch/?p=4609</guid>
		<description><![CDATA[WordPress ist eine tolle Software, mit der ich seit Jahren gerne arbeite. Ich erstelle Plugins, Themes, richte Websites ein und schreibe seit drei Jahren in diesem Blog über WordPress. Damit mache ich etwas, was eigentlich viel mehr Leute tun sollten und auch wirklich gut ist: Ich gebe etwas an die Community zurück.]]></description>
			<content:encoded><![CDATA[<p><strong>WordPress</strong> ist eine tolle Software, mit der ich seit Jahren gerne arbeite. Anfangs noch purer <strong>Anwender</strong>, bin ich heute schon als <strong>Entwickler</strong> unterwegs. Ich erstelle Plugins, Themes, richte Websites ein und schreibe seit drei Jahren in diesem Blog über WordPress. Damit mache ich etwas, was eigentlich viel mehr Leute tun sollten und auch wirklich gut ist: Ich gebe etwas an die Community zurück.</p>
<h3>Aller Anfang ist klein</h3>
<p>Klar, Core Contributors wie <a title="Dominik Schilling" href="http://dominikschilling.de/" target="_blank">Dominik</a> oder Autoren zig bekannter Plugins wie <a title="bueltge.de - Frank Bültge" href="http://bueltge.de/" target="_blank">Frank</a> kann ich kaum das Wasser reichen. Doch meiner Meinung nach kann man schon mit <strong>kleinen Beiträgen</strong> etwas zu Open Source Software beitragen. Abgesehen von diesem Blog, wo ich ja immerhin viele Tipps &amp; Tricks für Beginner, Fortgeschrittene und machmal auch Profis verfasse, bin ich beispielsweise laufend an einigen Projekten dran. Etwa ein Plugin, dass ich veröffentlichen möchte, oder auch ein Theme.<br />
Ich bin dann jeweils ein wenig baff, wenn <a title="Elmastudio - Webdesign &amp; WordPress" href="http://www.elmastudio.de/" target="_blank">Ellen und Manuel</a> ein Theme nach dem anderen veröffentlichen. «Woher bloss die Zeit nehmen?», frage ich mich. Bereits jetzt bin jetzt schon täglich mehrere Stunden vor dem Computer, um dann abends nochmals die kostbare Freizeit in diesen Blog und das <a title="WordPress Magazin" href="http://wp-magazin.ch/magazin/">PDF Magazin</a> zu investieren. Eigentlich ist es aber gar nicht so schwer, etwas an die Community zurückzugeben. Es gibt, wie bereits erwähnt, mehrere Wege dazu.</p>
<p>Plugins sind vielleicht nicht jedermanns Sache, Tutorials vielleicht schon eher. Wer jedoch etwas direkter seinen Beitrag leisten möchte, kann im <a title="WordPress Trac" href="http://core.trac.wordpress.org/" target="_blank">WordPress Trac</a> aktiv werden oder sich für den Beginn einer etwas einfachere Aufgabe annehmen. Ein Tweet der WordPress für Windows Phone 7 Entwickler brachte mich diese Woche dann auf eine Idee:</p>
<p><!-- tweet id : 96127198062317568 --><br />
<style type='text/css'>#bbpBox_96127198062317568 a { text-decoration:none; color:#21749b; }#bbpBox_96127198062317568 a:hover { text-decoration:underline; }</style>
<div id='bbpBox_96127198062317568' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#21749b; background-image:url(http://a0.twimg.com/images/themes/theme1/bg.png); background-repeat:no-repeat'>
<div style='background:#fff; padding:10px; margin:0; min-height:48px; color:#464646; -moz-border-radius:5px; -webkit-border-radius:5px;'><span style='width:100%; font-size:18px; line-height:22px;'>We're looking for a few more strings in the app to be translated to German, can you help out? <a href="http://cot.ag/pYLv4L" rel="nofollow">http://cot.ag/pYLv4L</a></span>
<div class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img align='middle' src='http://wp-magazin.ch/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a title='tweeted on 27. July 2011 09:58' href='http://twitter.com/#!/WPWindowsPhone/status/96127198062317568' target='_blank'>27. July 2011 09:58</a> via <a href="http://cotweet.com/?utm_source=sp1" rel="nofollow" target="blank">CoTweet</a><a href='https://twitter.com/intent/tweet?in_reply_to=96127198062317568&#038;related=swissspidy' class='bbp-action bbp-reply-action' title='Reply'><span><em style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a href='https://twitter.com/intent/retweet?tweet_id=96127198062317568&#038;related=swissspidy' class='bbp-action bbp-retweet-action' title='Retweet'><span><em style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a href='https://twitter.com/intent/favorite?tweet_id=96127198062317568&#038;related=swissspidy' class='bbp-action bbp-favorite-action' title='Favorite'><span><em style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div>
<div style='float:left; padding:0; margin:0'><a href='http://twitter.com/intent/user?screen_name=WPWindowsPhone'><img style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a3.twimg.com/profile_images/1190481703/wp-tile-small_normal.png' /></a></div>
<div style='float:left; padding:0; margin:0'><a style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=WPWindowsPhone'>@WPWindowsPhone</a>
<div style='margin:0; padding-top:2px'>for Windows Phone 7</div>
</div>
<div style='clear:both'></div>
</div>
</div>
<p><!-- end of tweet --></p>
<p>Warum nicht dabei helfen, eine solche App ins Deutsche zu <strong>übersetzen</strong>? WordPress selbst wird ja bereits von einem <a title="WordPress Deutschland" href="http://wordpress-deutschland.org/" target="_blank">tollen Team</a> übersetzt. Doch bei den Apps und anderen Projekten sind es eine lose Zahl an Freiwilligen. Vieles war bei der App bereits übersetzt, ich habe also nur noch den Feinschliff gemacht dank <a title="GlotPress" href="http://blog.glotpress.org/" target="_blank">GlotPress</a> alles kein Problem. Nun ist die App komplett übersetzt und wird wohl demnächst so zum Download angeboten. Was ich dafür erhalten habe? Ein nettes Dankeschön.</p>
<p><!-- tweet id : 96217953611169792 --><br />
<style type='text/css'>#bbpBox_96217953611169792 a { text-decoration:none; color:#0084B4; }#bbpBox_96217953611169792 a:hover { text-decoration:underline; }</style>
<div id='bbpBox_96217953611169792' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#022330; background-image:url(http://a0.twimg.com/images/themes/theme15/bg.png); background-repeat:no-repeat'>
<div style='background:#fff; padding:10px; margin:0; min-height:48px; color:#333333; -moz-border-radius:5px; -webkit-border-radius:5px;'><span style='width:100%; font-size:18px; line-height:22px;'>@<a href="http://twitter.com/intent/user?screen_name=swissspidy" class="twitter-action">swissspidy</a> thanks for translating the WP7 app, could you make sure this one is correct please? <a href="http://t.co/cdl3IVZ" rel="nofollow">http://t.co/cdl3IVZ</a></span>
<div class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img align='middle' src='http://wp-magazin.ch/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a title='tweeted on 27. July 2011 15:58' href='http://twitter.com/#!/danroundhill/status/96217953611169792' target='_blank'>27. July 2011 15:58</a> via web<a href='https://twitter.com/intent/tweet?in_reply_to=96217953611169792&#038;related=swissspidy' class='bbp-action bbp-reply-action' title='Reply'><span><em style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a href='https://twitter.com/intent/retweet?tweet_id=96217953611169792&#038;related=swissspidy' class='bbp-action bbp-retweet-action' title='Retweet'><span><em style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a href='https://twitter.com/intent/favorite?tweet_id=96217953611169792&#038;related=swissspidy' class='bbp-action bbp-favorite-action' title='Favorite'><span><em style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div>
<div style='float:left; padding:0; margin:0'><a href='http://twitter.com/intent/user?screen_name=danroundhill'><img style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a1.twimg.com/profile_images/25557682/n636390643_5327_normal.jpg' /></a></div>
<div style='float:left; padding:0; margin:0'><a style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=danroundhill'>@danroundhill</a>
<div style='margin:0; padding-top:2px'>Dan Roundhill</div>
</div>
<div style='clear:both'></div>
</div>
</div>
<p><!-- end of tweet --></p>
<p>Doch damit zeigte ich mich noch nicht zufrieden. Unter <a title="Translate WordPress" href="http://translate.wordpress.org/" target="_blank">translate.wordpress.org</a> habe ich deshalb versucht, weitere Übersetzungen für die WordPress Mobile Apps zu liefern. Und wenn man schon dabei ist, warum nicht auch rasch beim neuen <a title="WordPress Magazin - bbPress Plugin – Beta-Version verfügbar" href="http://wp-magazin.ch/blog/bbpress-plugin-beta-version-4429/">bbPress Plugin</a> vorbeischauen? Da gibt es noch genügend Nachholbedarf.</p>
<p>Diese Übersetzungen kosten wenig Zeit und doch helfen sie der Community. WordPress kann so in vielen weiteren Sprachen und somit einer weitaus grösseren Anzahl Menschen angeboten werden. <strong>Warum gibst du also nicht auch etwas an die Community zurück?</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://wp-magazin.ch/blog/etwas-an-community-zurueckgeben-4609/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>WordPress 3.2 &#8220;Gershwin&#8221; erschienen</title>
		<link>http://wp-magazin.ch/blog/wordpress-3-2-gershwin-erschienen-4587/</link>
		<comments>http://wp-magazin.ch/blog/wordpress-3-2-gershwin-erschienen-4587/#comments</comments>
		<pubDate>Mon, 04 Jul 2011 21:11:16 +0000</pubDate>
		<dc:creator>Pascal Birchler</dc:creator>
				<category><![CDATA[Kurznachrichten]]></category>
		<category><![CDATA[3.2]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Release]]></category>

		<guid isPermaLink="false">http://wp-magazin.ch/?p=4587</guid>
		<description><![CDATA[Am 3. Juli hat man erneut darauf aufmerksam gemacht, dass WordPress 3.2 vor der Tür steht. Nun ist es offenbar soweit und WordPress 3.2 ist heute, am Nationalfeiertag der USA, erschienen. Der offizielle Blog Post ist gerade eben erschienen, und das automatische Update sowie die Download-Seite bei WordPress.org sind ebenfalls eindeutig: WordPress 3.2 ist da!]]></description>
			<content:encoded><![CDATA[<p>Am 3. Juli hat man erneut darauf aufmerksam gemacht, dass WordPress 3.2 vor der Tür steht. Nun ist es offenbar soweit und WordPress 3.2 ist heute, am Nationalfeiertag der USA, erschienen. Der <a title="WordPress.org - WordPress 3.2 now available" href="http://wordpress.org/news/2011/07/gershwin/" target="_blank">offizielle Blog Post</a> ist gerade eben erschienen, und das automatische Update sowie die <a title="WordPress.org - Download" href="http://wordpress.org/download/" target="_blank">Download-Seite</a> bei WordPress.org sind ebenfalls eindeutig: WordPress 3.2 ist da!</p>
<p>Weitere Details zur neuen Version gibt es spätestens im kommenden WordPress Magazin. Dran bleiben ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://wp-magazin.ch/blog/wordpress-3-2-gershwin-erschienen-4587/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>WordPress 3.0.5 und 3.1 Release Candidate 4 erschienen</title>
		<link>http://wp-magazin.ch/blog/wordpress-3-0-5-3-1-release-candidate-4-4194/</link>
		<comments>http://wp-magazin.ch/blog/wordpress-3-0-5-3-1-release-candidate-4-4194/#comments</comments>
		<pubDate>Tue, 08 Feb 2011 08:05:03 +0000</pubDate>
		<dc:creator>Pascal Birchler</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[3.0.5]]></category>
		<category><![CDATA[3.1]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Release Candidate]]></category>
		<category><![CDATA[Sicherheit]]></category>

		<guid isPermaLink="false">http://wp-magazin.ch/?p=4194</guid>
		<description><![CDATA[Gestern Nacht wurden mit WordPress 3.0.5 sowie dem vierten Release Candidate der Version 3.1 fünf sicherheitsrelevante Fehler behoben. Ein Update wird wie immer dringend empfohlen, das deutsche Sprachpaket sollte bald verfügbar sein, wie Olaf berichtet.]]></description>
			<content:encoded><![CDATA[<p>Gestern Nacht wurden mit <a title="WordPress Codex - Version 3.0.5" href="http://codex.wordpress.org/Version_3.0.5">WordPress 3.0.5</a> sowie dem vierten Release Candidate der Version 3.1 fünf sicherheitsrelevante Fehler <a title="WordPress.org - WordPress 3.0.5 (and 3.1 Release Candidate 4)" href="http://wordpress.org/news/2011/02/wordpress-3-0-5/">behoben</a>. Ein Update wird wie immer dringend empfohlen, das deutsche Sprachpaket sollte bald verfügbar sein, <a title="WordPress Deutschland Blog - WordPress 3.0.5 &amp; 3.1 RC 4 veröffentlicht" href="http://blog.wordpress-deutschland.org/2011/02/08/wordpress-3-0-5-3-1-rc-4-veroeffentlicht.html">wie Olaf berichtet</a>. Core-Entwickler Andrew Nacin hat wie üblich ein <a title="Wikipedia - Haiku" href="http://de.wikipedia.org/wiki/Haiku">Haiku</a> verfasst:</p>
<blockquote><p>Three point oh point five<br />
Enhances security<br />
Three point one comes soon</p></blockquote>
<p>Die Security-Fehler erlaubten es Benutzern mit der Rolle Autor und Editor, erweiterten Zugriff zum Blog zu erhalten und beispielsweise Beiträge anzusehen, die sie eigentlich nicht dürften. Zudem gab es weitere Vorsichtsmassnahmen bei der Schadcode-Filterung von Kommentaren.</p>
<p>WordPress 3.1 RC4 stopft nicht nur die Sicherheitslöcher, sondern enthält auch einige Bug Fixes und sollte nun wieder vollständig PHP4-kompatibel sein. In WordPress 3.2 wird dann die Mindestvoraussetzung PHP5 sein. <strong>Der endgültige Release von WordPress 3.1 steht nun kurz bevor.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://wp-magazin.ch/blog/wordpress-3-0-5-3-1-release-candidate-4-4194/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>WordPress Lizenz geklärt</title>
		<link>http://wp-magazin.ch/blog/wordpress-lizenz-geklaert-4087/</link>
		<comments>http://wp-magazin.ch/blog/wordpress-lizenz-geklaert-4087/#comments</comments>
		<pubDate>Wed, 19 Jan 2011 09:00:53 +0000</pubDate>
		<dc:creator>Pascal Birchler</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://wp-magazin.ch/?p=4087</guid>
		<description><![CDATA[WordPress war schon immer unter GNU GPL lizenziert. Und obwohl nie eine Version (es gibt deren drei) genannt wurde, legte man Version 2 der beliebten Open Source Lizenz dem Download bei. Die WordPress-Entwickler haben nun ausdrücklich gesagt, dass WordPress unter der GPL 2 oder höher lizenziert ist.]]></description>
			<content:encoded><![CDATA[<p><strong></p>
<div id="attachment_4094" class="wp-caption alignright" style="width: 160px"><strong><a href="http://wp-magazin.ch/wp-content/uploads/gnu-logo.png"><img class="size-thumbnail wp-image-4094" title="Logo des GNU-Projekts" src="http://wp-magazin.ch/wp-content/uploads/gnu-logo-150x150.png" alt="Logo des GNU-Projekts" width="150" height="150" /></a></strong><p class="wp-caption-text">Logo des GNU-Projekts</p></div>
<p>WordPress </strong>war schon immer unter <a title="GNU General Public License" href="http://www.gnu.org/licenses/gpl.html">GNU GPL</a> lizenziert. Und obwohl nie eine Version (es gibt deren drei) genannt wurde, legte man Version 2 der beliebten Open Source Lizenz dem Download bei. Die GPL sagt dabei aus, dass wenn keine genaue Versionsnummer angegeben wurde, die Software unter den Bedingungen einer beliebigen Version der <strong>GPL </strong>verbreitet werden können.</p>
<p>Allerdings enthält WordPress <strong>Bibliotheken</strong>, welche unter der GPL 2 oder höher lizenziert sind. In Wirklichkeit wurde Version 1 noch nie gross verwendet, da sie früher schon bald abgelöst wurde. Deshalb haben die WordPress-Entwickler nun <a title="WordPress Development Updates - Clarification in Licensing Language" href="http://wpdevel.wordpress.com/2011/01/14/clarification-in-licensing-language/">ausdrücklich gesagt</a>, dass WordPress unter der <strong>GPL 2 oder höher</strong> lizenziert ist.</p>
]]></content:encoded>
			<wfw:commentRss>http://wp-magazin.ch/blog/wordpress-lizenz-geklaert-4087/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Magazin #2</title>
		<link>http://wp-magazin.ch/blog/wordpress-magazin-022010-3789/</link>
		<comments>http://wp-magazin.ch/blog/wordpress-magazin-022010-3789/#comments</comments>
		<pubDate>Tue, 02 Nov 2010 10:30:10 +0000</pubDate>
		<dc:creator>Pascal Birchler</dc:creator>
				<category><![CDATA[In eigener Sache]]></category>
		<category><![CDATA[BuddyPress]]></category>
		<category><![CDATA[Magazin]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://wp-magazin.ch/?p=3789</guid>
		<description><![CDATA[Unser erstes WordPress Magazin war ein voller Erfolg — rund 1000 Downloads konnten wir bisher verzeichnen. Nun möchten wir daran anknüpfen, weshalb wir euch heute das WordPress Magazin #2 präsentieren.]]></description>
			<content:encoded><![CDATA[<p><strong>Unser erstes WordPress Magazin war ein voller Erfolg — rund 1000 Downloads konnten wir bisher verzeichnen. Nun möchten wir daran anknüpfen, weshalb wir euch heute die zweite Ausgabe des WordPress Magazins präsentieren.</strong></p>
<p>Wir haben erneut eine Menge <strong>exklusiver Artikel</strong> für euch geschrieben und warten unter anderem mit Gastbeiträgen von <a title="Pixelfreund - Ralph Hutter" href="http://pixelfreund.ch/">Ralph Hutter</a> (Namics) und <a title="Xeit - Simon Künzler" href="http://www.xeit.ch/">Simon Künzler</a> (Xeit) auf. Insgesamt wurde diese Ausgabe nicht nur um einige Seiten grösser, wir haben auch in den Farbeimer gegriffen und das Magazin komplett neu angemalt - für ein noch besseres<strong> Lese-Erlebenis</strong>!</p>
<p>Auch wenn wir es natürlich bedauern, dass wir das Magazin erst im November und nicht wie vorgesehen im Oktober veröffentlichen, hoffen wir, dass euch das Magazin gut gefällt.<br />
Das Magazin könnt ihr entweder in diesem Beitrag  lesen oder auf unserer <a title="Schweizer WordPress Magazin - Magazin" href="http://wp-magazin.ch/magazin/">Magazin-Seite</a> direkt <a title="WordPress Magazin - WordPress Magazin #2" href="http://wp-magazin.ch/download/wpmagazin-022010.pdf">herunterladen</a>. Dadurch könnt ihr es nicht nur auf dem Computer, sondern auch auf dem iPhone oder etwa dem iPad lesen.</p>
<p><object style="width: 600px; height: 425px;" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100" height="100" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="menu" value="false" /><param name="src" value="http://static.issuu.com/webembed/viewers/style1/v1/IssuuViewer.swf?mode=embed&amp;layout=http%3A%2F%2Fskin.issuu.com%2Fv%2Flight%2Flayout.xml&amp;showFlipBtn=true&amp;documentId=101102100506-83f84336e72b4c0ab16365fe9f89377b&amp;docName=wpmagazin-022010&amp;username=wpmagazin&amp;loadingInfoText=WordPress%20Magazin%20%232&amp;et=1288693267291&amp;er=19" /><param name="flashvars" value="mode=embed&amp;layout=http%3A%2F%2Fskin.issuu.com%2Fv%2Flight%2Flayout.xml&amp;showFlipBtn=true&amp;documentId=101102100506-83f84336e72b4c0ab16365fe9f89377b&amp;docName=wpmagazin-022010&amp;username=wpmagazin&amp;loadingInfoText=WordPress%20Magazin%20%232&amp;et=1288693267291&amp;er=19" /><embed style="width: 600px; height: 425px;" type="application/x-shockwave-flash" width="100" height="100" src="http://static.issuu.com/webembed/viewers/style1/v1/IssuuViewer.swf?mode=embed&amp;layout=http%3A%2F%2Fskin.issuu.com%2Fv%2Flight%2Flayout.xml&amp;showFlipBtn=true&amp;documentId=101102100506-83f84336e72b4c0ab16365fe9f89377b&amp;docName=wpmagazin-022010&amp;username=wpmagazin&amp;loadingInfoText=WordPress%20Magazin%20%232&amp;et=1288693267291&amp;er=19" flashvars="mode=embed&amp;layout=http%3A%2F%2Fskin.issuu.com%2Fv%2Flight%2Flayout.xml&amp;showFlipBtn=true&amp;documentId=101102100506-83f84336e72b4c0ab16365fe9f89377b&amp;docName=wpmagazin-022010&amp;username=wpmagazin&amp;loadingInfoText=WordPress%20Magazin%20%232&amp;et=1288693267291&amp;er=19" menu="false" allowfullscreen="true"></embed></object></p>
<p>Falls euch diese Ausgabe gefällt, würden wir uns freuen, wenn ihr das WordPress Magazin <strong>weiterempfiehlt</strong>. Egal ob es ein Tweet, ein Blog-Kommentar oder ein „Gefällt mir“ auf Facebook ist — es hilft uns, das WordPress Magazin noch bekannter zu machen.</p>
]]></content:encoded>
			<wfw:commentRss>http://wp-magazin.ch/blog/wordpress-magazin-022010-3789/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>How-To: Post Thumbnail Format abwechseln</title>
		<link>http://wp-magazin.ch/blog/post-thumbnail-format-abwechseln-3215/</link>
		<comments>http://wp-magazin.ch/blog/post-thumbnail-format-abwechseln-3215/#comments</comments>
		<pubDate>Mon, 17 May 2010 13:29:18 +0000</pubDate>
		<dc:creator>Pascal Birchler</dc:creator>
				<category><![CDATA[Nützliches]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Themes]]></category>
		<category><![CDATA[Thumbnails]]></category>

		<guid isPermaLink="false">http://wp-magazin.ch/?p=3215</guid>
		<description><![CDATA[Die in WordPress 2.9 eingeführte Post Thumbnail Funktion ist für die meisten WordPress-Anwender noch relativ neu und deshalb findet man kaum gute Beispiele und Tutorials im Web. Heute möchten wir mit unseren Lesern ein nützliches Code Snippet teilen, mit welchem man bei jedem Beitrag manuell das Thumbnail Format festlegen kann.]]></description>
			<content:encoded><![CDATA[<div id="attachment_3225" class="wp-caption alignright" style="width: 160px"><a href="http://wp-magazin.ch/wp-content/uploads/post-thumbnail-format-abwechseln.png"><img class="size-thumbnail wp-image-3225    " title="Abwechselndes Post Thumbnail Format" src="http://wp-magazin.ch/wp-content/uploads/post-thumbnail-format-abwechseln-150x150.png" alt="Abwechselndes Post Thumbnail Format" width="150" height="150" /></a><p class="wp-caption-text">Post Thumbnails</p></div>
<p><strong>Die in WordPress 2.9 eingeführte Post Thumbnail Funktion ist für die meisten WordPress-Anwender noch relativ neu und deshalb findet man kaum gute Beispiele und Tutorials im Web. Heute möchten wir mit unseren Lesern ein nützliches Code Snippet teilen, mit welchem man bei jedem Beitrag manuell das Thumbnail Format festlegen kann.</strong></p>
<p>Um die Post Thumbnails überhaupt erst nutzen zu können, müsst ihr in der functions.php eures Themes folgende Zeile hinzufügen: <code>&lt;?php add_theme_support( 'post-thumbnails' ); ?&gt;</code>.</p>
<p>Danach könnt ihr eure jeweiligen Bildgrössen definieren. Uns reichen für das Beispiel eine rechteckige und eine quadratische Form.</p>
<pre><code>&lt;?php
add_image_size( 'wpm_rectangular_thumbnail', 250, 75 ); // Rechteckiges Format
add_image_size( 'wpm_square_thumbnail', 75, 75 ); // Quadratisches Format
?&gt;
</code></pre>
<div id="attachment_3226" class="wp-caption alignleft" style="width: 160px"><a href="http://wp-magazin.ch/wp-content/uploads/post-thumbnail-selector-meta-box.png"><img class="size-thumbnail wp-image-3226" title="Post Thumbnail Meta Box" src="http://wp-magazin.ch/wp-content/uploads/post-thumbnail-selector-meta-box-150x150.png" alt="Post Thumbnail Meta Box" width="150" height="150" /></a><p class="wp-caption-text">Post Thumbnail Meta Box</p></div>
<p>Um dann die Post Thumbnails anzuzeigen, kann man dann innerhalb der Loop entweder <code>&lt;?php the_post_thumbnail('wpm_rectangular_thumbnail'); ?&gt;</code> oder<code> &lt;?php the_post_thumbnail 'wpm_square_thumbnail'); ?&gt;</code> verwenden.</p>
<h3>Thumbnail Format auswählen</h3>
<p>Da wir nicht genauer ins Detail gehen wollen, verweisen wir lieber auf die sehr ausführliche <a title="Mark Jaquith - New in WordPress 2.9: Post Thumbnail Images" href="http://markjaquith.wordpress.com/2009/12/23/new-in-wordpress-2-9-post-thumbnail-images/">Anleitung von Mark Jaquith</a>. Wir möchten euch ja zeigen, wie man die Bildgrössen <strong>manuell abwechseln</strong> kann. Dazu werden wir eine neue Meta-Box im Beitrags-Editor hinzufügen, wo man das gewünschte Format auswählen kann. Im Hintergrund werden diese Daten in einem versteckten Custom Field gespeichert.<br />
Ihr müsst bloss folgenden Code in der <code>functions.php</code> eures Themes hinzufügen, evtl. müsst ihr auch die PHP-Tags am Anfang und am Ende entfernen.</p>
<pre><code>&lt;?php
/*
 * Fügt eine Meta Box im Beitrags-Editor hinzu,
 * mit der man wählen kann, ob das Thumbnail quadratisch oder rechteckig erscheinen soll.
 *
 * Autor: Schweizer WordPress Magazin
 *
 */

/* Hier haken wir uns in die admin_menu Action ein, um die Meta Box hinzuzufügen */
add_action('admin_menu', 'wpm_add_custom_box');

/* Hier haken wir uns in die save_post Action ein, um die eingegebenen Daten zu verarbeitena */
add_action('save_post', 'wpm_save_postdata');

/* Fügt die Meta Box im Beitrags-Editor hinzu */
function wpm_add_custom_box() {
	add_meta_box(
		'wpm_sectionid',
		__( 'Miniaturbild Format', 'wpm_textdomain' ),
		'wpm_inner_custom_box',
		'post',
		'advanced'
	);
}

/* Schreibt den Inhalt in die Meta Box */
function wpm_inner_custom_box() {

	// Nonce für die Verfikation benutzen

	echo '&lt;input type="hidden" name="wpm_noncename" id="wpm_noncename" value="' .
    	wp_create_nonce( plugin_basename(__FILE__) ) . '" /&gt;';

	// Überprüfen, ob das Custom Field bereits existiert.

	$thumb = get_post_meta($post-&gt;ID, 'wpm_thumb_format', true);
	$square = "";
	$small = "";
	if(isset($thumb)) {
		if($thumb = 'wpm_square_thumbnail') {
			$square = 'checked="checked" ';
		}
		if($thumb = 'wpm_rectangular_thumbnail') {
	  		$small = 'checked="checked" ';
		}
	} else {
	  $small = 'checked="checked" ';
	}

	// Formular-Felder inklusive Beschreibung hinzufügen

	echo '&lt;p&gt;' . __("Soll das Thumbnail quadratisch oder rechteckig sein?", 'wpm_textdomain' ) . '&lt;/p&gt;';
	echo '&lt;p&gt;&lt;input type="radio" name="wpm_thumb" value="wpm_square_thumbnail"
	id="wpm_square_thumbnail" size="25" ' . $square . '/&gt;';
	echo '&lt;label for="wpm_square_thumbnail"&gt;quadratisch&lt;/label&gt;';
	echo '&lt;input type="radio" name="wpm_thumb" value="wpm_rectangular_thumbnail"
	id="wpm_rectangular_thumbnail" size="25" ' . $small . '/&gt;';
	echo '&lt;label for="wpm_rectangular_thumbnail"&gt;rechteckig&lt;/label&gt;&lt;/p&gt;';
}

// Wenn der Beitrag gespeichert wird, wird auch das Thumbnail Format gespeichert
function wpm_save_postdata( $post_id ) {

	// Sicherstellen, dass die Daten wirklich von unserem Beitrag stammen

	if ( !wp_verify_nonce( $_POST['wpm_noncename'], plugin_basename(__FILE__) )) {
		return $post_id;
	}

	// Überprüfen, ob dies eine automatische Sicherung des Beitrags ist.
	// Wenn ja, dann tun wir hier nichts.
	if ( defined('DOING_AUTOSAVE') &amp;&amp; DOING_AUTOSAVE )
		return $post_id;

	// Berechtigung des Nutzers überprüfen
	if ( 'page' == $_POST['post_type'] ) {
		if ( !current_user_can( 'edit_page', $post_id ) ) return $post_id;
	} else {
		if ( !current_user_can( 'edit_post', $post_id ) ) return $post_id;
	}

	// Wir sind authentifiziert: Jetzt können wir die Daten speichern

	$mydata = $_POST['wpm_thumb'];
	$thumb = get_post_meta($post-&gt;ID, '_wpm_thumb_format', true);
	if(isset($thumb)) {
		update_post_meta($post_id, '_wpm_thumb_format', $mydata);
	} else {
		add_post_meta($post_id, '_wpm_thumb_format', $mydata, true);
	}
}
?&gt;</code></pre>
<p>Das ist allerdings erst die halbe Miete, denn jetzt kommt noch die Ausgabe im Frontend. Dazu müsst ihr die Theme-Datei öffnen, welche für die Darstellung auf der Startseite zuständig ist (meist <code>home.php</code>). Dort fügt ihr dann an passender Stelle innerhalb des Loops folgende Zeilen ein:</p>
<pre><code>&lt;?php if ( function_exists('has_post_thumbnail') &amp;&amp; has_post_thumbnail() ) {
	$thumb = get_post_meta($post-&gt;ID, "_wpm_thumb_format, true); ?&gt;
	&lt;div class="thumbnail"&gt;
		&lt;a href="&lt;?php the_permalink(); ?&gt;" title="&lt;?php the_title(); ?&gt;"&gt;
			&lt;?php if($thumb == "wpm_square_thumbnail") {
				the_post_thumbnail('wpm_square_thumbnail');
			} else {
				the_post_thumbnail('wpm_rectangular_thumbnail');
			} ?&gt;
		&lt;/a&gt;
	&lt;/div&gt;
&lt;?php }	?&gt;</code></pre>
<p>An dieser Stelle sei angemerkt, dass dieser Code vielleicht nicht zu 100% funktioniert, denn er wurde in nur wenigen Minuten geschrieben und war auch für persönliche Zwecke gedacht. Ihr könnt den Code zudem <a title="Schweizer WordPress Magazin - Post Thumbnail Selector Plugin" href="http://wp-magazin.ch/wp-content/uploads/post-thumbnail-selector.txt">herunterladen</a> und als Plugin installieren. Die Theme-Anpassung ist allerdings weiterhin erforderlich.</p>
<p>Wir freuen uns auf eure Anregungen, Fragen und Verbesserungsvorschläge!</p>
]]></content:encoded>
			<wfw:commentRss>http://wp-magazin.ch/blog/post-thumbnail-format-abwechseln-3215/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>BackPress &#8211; Die PHP Bibliothek hinter WordPress &amp; Co.</title>
		<link>http://wp-magazin.ch/blog/backpress-die-php-bibliothek-hinter-wordpress-co-3157/</link>
		<comments>http://wp-magazin.ch/blog/backpress-die-php-bibliothek-hinter-wordpress-co-3157/#comments</comments>
		<pubDate>Thu, 06 May 2010 06:05:03 +0000</pubDate>
		<dc:creator>Pascal Birchler</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[BackPress]]></category>
		<category><![CDATA[bbPress]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://wp-magazin.ch/?p=3157</guid>
		<description><![CDATA[Um das Zusammenspiel zwischen WordPress, bbPress und weiteren Produkten von Automattic zu vereinfachen, hat man versucht, die Kern-Funktionalität von WordPress in eine separate Code Bibliothek zu verlagern. Diese Library ist unter dem Namen BackPress bekannt und seit längerer Zeit in der Version 1.0.2 verfügbar.]]></description>
			<content:encoded><![CDATA[<p><strong>Um das Zusammenspiel zwischen WordPress, bbPress und weiteren Produkten von Automattic zu vereinfachen, hat man versucht, die Kern-Funktionalität von WordPress in eine separate Code Bibliothek zu verlagern. Diese Library ist unter dem Namen BackPress bekannt und seit längerer Zeit in der Version 1.0.2 verfügbar.</strong></p>
<p>Im Folgenden möchten wir euch <a title="BackPress" href="http://backpress.org/">BackPress</a> kurz vorstellen und die Bibliothek ein wenig unter die Lupe nehmen.</p>
<h3>Was kann BackPress?</h3>
<div id="attachment_3188" class="wp-caption alignright" style="width: 310px"><a href="http://wp-magazin.ch/wp-content/uploads/backpress-trac.jpg"><img class="size-medium wp-image-3188" title="BackPress" src="http://wp-magazin.ch/wp-content/uploads/backpress-trac-300x202.jpg" alt="BackPress" width="300" height="202" /></a><p class="wp-caption-text">BackPress</p></div>
<p>Zwar ist BackPress kein «<em>WordPress Lite</em>», aber wer die Bibliothek genauer anschaut, erkennt Gemeinsamkeiten in der Code-Schreibweise oder der Namensgebung diverser Funktionen. Diese trifft man, wie bereits in der Einleitung erwähnt, auch in bbPress (und GlotPress) an. Dadurch soll es z.B. auch einfacher sein, ein bbPress Plugin auf WordPress zu portieren.</p>
<p>BackPress besitzt ein umfassendes Benutzermanagement mit verschiedenen Benutzerrollen, bietet eine XML-RPC sowie eine Plugin-Schnittstelle und viele weitere <a title="BackPress - Features" href="http://backpress.org/features/">Features</a>.</p>
<p>Bei der Bibliothek hapert es leider ein wenig an der Dokumentation, weshalb es bestimmt nichts für Einsteiger ist, sondern eher für Entwickler, die eigene und vor allem grössere Web-Projekte umsetzen möchten. Die wichtigsten Informationen findet man bei <a title="BackPress - Dokumentation" href="http://backpress.org/documentation/">BackPress.org</a> und der BackPress<a title="BackPress - Mailing List" href="http://lists.wordpress.org/mailman/listinfo/backpress-dev"> Mailing List</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://wp-magazin.ch/blog/backpress-die-php-bibliothek-hinter-wordpress-co-3157/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

