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

<channel>
	<title>bueltge.de [by:ltge.de]</title>
	<atom:link href="http://bueltge.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://bueltge.de</link>
	<description>Frank Bültge schreibt auf bueltge.de zu den Themen Webentwicklung &#38; design, WordPress, Literatur und andere Themen bezüglich Internet und Development</description>
	<lastBuildDate>Tue, 22 May 2012 20:02:25 +0000</lastBuildDate>
	<language>de-DE</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Daten aus WordPress an JavaScript übergeben #2</title>
		<link>http://bueltge.de/daten-aus-wordpress-an-javascript-uebergeben-2/1334/</link>
		<comments>http://bueltge.de/daten-aus-wordpress-an-javascript-uebergeben-2/1334/#comments</comments>
		<pubDate>Fri, 04 May 2012 08:24:04 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1334</guid>
		<description><![CDATA[Mittels PHP Werte an JavaScript übergeben ist ein wichtiger Teil, sei es für Optionen oder für Inhalte - es wird gebraucht. Hier möchte ich eine von 2 Lösungen vorstellen, die Funktionen aus dem Core nutzt.]]></description>
			<content:encoded><![CDATA[<p>Im <a href="http://bueltge.de/optionen-aus-wordpress-an-javascripts-uebergeben/1329/" title="Artikel: Optionen aus WordPress an JavaScripts übergeben #1">ersten Artikel</a> dieser kleinen Serie habe ich aufgezeigt, wie man von PHP an JS mittels <a href="http://de.wikipedia.org/wiki/JavaScript_Object_Notation" title="Was ist JSON?">JSON</a> übergibt. Alternativ kann man dies auch mittels der WordPress-Funktion <code>wp_localize_script()</code> tun, die einige Fallstricke bereit hält. Dazu dieses kleine Tutorial und ihr solltet euch mit diesen beiden Lösungen den Weg mi Vorfeld gut überlegen.<br />
<span id="more-1334"></span><br />
Die Funktion dient der Übergabe von Strings, in erster Linie zum Lokalisieren; also dem Übersetzungsthema mittels Javascript. Daher kann man aber bequem Werte übergeben und in Javascript abfragen. Der wichtigste Punkt ist wohl, dass die Funktion HTML Entities decodiert. Wichtig ist ebenso, dass das Script im Vorfeld bekannt ist; also mittels <code>wp_enqueue_script()</code> einbinden.</p>
<p>Ein Beispiel soll es verdeutlichen.</p>
<pre><code class="php">
// im Admin Bereich die Scripte einbinden; Verwaltung, Reihenfolge übernimmt WP
add_action( 'admin_enqueue_scripts', 'fb_admin_enqueue_scripts' );
function fb_admin_enqueue_scripts( $where ) {
	// trennung dev und live version des scriptes
	$suffix = defined('SCRIPT_DEBUG') &#038;& SCRIPT_DEBUG ? '.dev' : '';
	
	// Script einbinden, Identifiziert an dem id-String
	wp_enqueue_script(
		'example_script_id', 
		plugins_url( '/js/my-example-script' . $suffix. '.js', __FILE__ ), 	
		array( 'jquery' ),
		'',
		TRUE
	);
	
	// Daten innerhalb eines Array
	// array with data; also possible via get_option( 'my_option_string' )
	$data = array( 
		'some_string' => __( 'Some string to translate' ),
		'a_value' => '10'
	);
	// lokalisiere die Daten für das bekannte Script
	wp_localize_script( 'example_script_id', 'js_object_name', $data );
}
</code></pre>
<p>Mit diesem kleinen Beispiel ist PHP-seitig alles erledigt; die Inhalt des Array werden nun als Objekt <code>js_object_name</code> bekannt und können über den name-String <code>js_object_name</code> in JS genutzt werden.</p>
<p>Nun aber einige Hinweise, die helfen sollen, wenn es zu Problemen kommt oder die direkt zur <a href="http://bueltge.de/optionen-aus-wordpress-an-javascripts-uebergeben/1329/">Lösung mittels JSON</a> verweisen.<br />
Die Funktion <code>wp_localize_script()</code> dekodiert HTML Entities, was inhaltlich wichtig ist, aber nicht immer die ideale Lösung darstellt. Die Funktion nutzen <code>json_encode()</code>, was bei mehrdimensionalen Arrays im Zusammenhang mit dem Dekodieren von Entities zu Problemen führt. Sobald das Array mehr als eine Dimension hat, ist meine Empfehlung <a href="http://bueltge.de/optionen-aus-wordpress-an-javascripts-uebergeben/1329/">JSON ohne die WP Core Lösung</a> mittels <code>wp_localize_script()</code>.</p>
<p>Mit WordPress 3.4 soll sich dies bessern und die Funktion in diese Richtung nutzbarer sein - lassen wir uns überraschen, aktuell nutze ich bei mehreren Dimensionen lieber direkt JSON.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/daten-aus-wordpress-an-javascript-uebergeben-2/1334/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/daten-aus-wordpress-an-javascript-uebergeben-2/1334/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Projekt Five Speed</title>
		<link>http://bueltge.de/projekt-five-speed/1365/</link>
		<comments>http://bueltge.de/projekt-five-speed/1365/#comments</comments>
		<pubDate>Mon, 30 Apr 2012 07:59:08 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Bike]]></category>
		<category><![CDATA[Fahrrad]]></category>
		<category><![CDATA[FiveSpeed]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1365</guid>
		<description><![CDATA[Projekt Five Speed ist der Versuch ein Bike für den täglichen Weg zur Arbeit zu erstellen, welches ebenso Spaß und Leidenschaft bündelt. Diverse Ideen, Ziele und Kompromisse finden sich in einem kleinen Objekt wieder und ein wenig möchte ich dazu hier verlieren.]]></description>
			<content:encoded><![CDATA[<p>Leidenschaft ist ein Motor – für mich als Person nehme ich dies in Anspruch. Ich glaube, dass vieles nur halb so schön wäre, wenn ich es immer mit gewisser Vernunft angehen würde. Ich reise nicht selten spontan, muss weg. Ähnlich geht es mir mit Projekten der verschiedensten Formen. In diesem Zusammenhang ist auch mein aktuelles neues Rad entstanden – Projekt <em>Five Speed</em>.</p>
<p>Einige Hintergründe und Hinweise, mit dem gewissen Augenzwinkern bei einem Projekt der Unvernunft, für die, die Interesse haben und nicht nur auf meiner Artikel mit Source Code schauen.<br />
<span id="more-1365"></span><br />
Das Resultat nach vielen Überlegungen und noch mehr Recherche nach den entsprechenden Parts sieht aktuell so aus – das Foto entstand nach der ersten Fertigstellung und der Probefahrt – eine glückliche Taufe.<br />
<a href="http://bueltge.de/wp-content/images/projekt-fivespeed-endet.jpeg"><img class="aligncenter size-large wp-image-1377" title="Projekt-FiveSpeed-endet" src="http://bueltge.de/wp-content/images/projekt-fivespeed-endet-614x1024.jpg" alt="Das Bike ist fertig; glücklich" width="614" height="1024" /></a></p>
<h3>Warum</h3>
<p>Seit gut zwei Jahren trage ich mich mit dem Gedanken auf ein 28er umzusteigen. Mein Weg zur Arbeit strampel ich bisher via 26er, meinem liebsten Gefährt der letzten rund 60.000km. Dabei habe ich einige Umrüstungen vorgenommen um dem Weg, vorrangig auf Asphalt, entgegen zu kommen. Trotzdem sind die kleinen Rennen am Morgen mit einem 26er nur mit viel Arbeit in den Beinen zu bestreiten <img src='http://bueltge.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Der Kampf wird härter; ich werder älter und die Alten kämpfen mit unlauteren Mitteln – E-Bikes sind im Trend und machen uns Puristen das Leben schwer – ich muss sie am Morgen oder auf dem Weg nach der Arbeit überholen.<br />
Natürlich sollte man diese Worte mit einem gewissen Abstand lesen, aber ich mag das kleine Rennen der Hobbytreter und sehe dabei nur den Spaß, nicht die Verbissenheit.</p>
<h3>Single - oder Five Speed</h3>
<p>Bei der Suche nach einem neuen Rad war daher der Weg zum Single Speed nicht weit. Einfachheit, Reduzierung auf das Wesentliche ist wohl ein Teil von mir und nirgends kann man dies besser ausleben als beim Rad. Single Speed bringt diese Idee auf den Punkt, wenn auch aus einem anderen Gesichtspunkt bei der Historie dieser Idee. Nun wohne ich nicht in ebene Terrain, sondern muss den einen oder anderen Berg bewältigen und liebe dies auch. Darum war die Überlegung schnell geboren - eine Schaltung muss sein, den Charakter des Single Speed wollte ich trotzdem waren. Die Auswahl bei Nabenschaltung lässt geschmacklich und gewichtstechnisch nicht viel Spielraum; die Auswahl wird schnell klein. Im Endresultat habe ich mich für eine 5-Gang Nabe von <a href="http://www.sturmey-archer.com/">Sturmery Archer</a> entschieden, meiner Ansicht nach perfekt für die Ziele.</p>
<h3>Der Rahmen</h3>
<p>Doch das größte Problem war der Rahmen. Natürlich gibt es heute ausreichend Auswahl. Der Händler des Vertrauens kann bestellen, was man will. Das Netz ist geflutet von Individualbikes und Kopien der besten Vertreter. Aber ich wollte es nicht zu einfach, nicht ohne Leidenschaft und der Suche nach meinem Kompromiss. Ein Kompromiss ist es fast immer, denn der perfekte Rahmen ist schwer zu bekommen, wenn man sich gewissen Eckdaten setzt. So war mein Favorit immer ein Colgano Master. Die Form und der Mythos machen es für zu einem der schönsten Rahmen der Welt. Der Preis drückt dies aus und ein Rest Vernunft siegte. So begab ich mich weiter auf die Suche – etwas bezahlbares, möglichst italienischer Natur, Stahl muss es sein und insbesondere: ein gemuffter Rahmen war unabdingbar. So wurden die verschiedenen Quellen abgesucht, das Social Network strapaziert und über einen Zeitraum von rund 1,5 Jahren blieb die Suche erfolglos. Aber dann, ich fand ihn und ich fand auf Anhieb wunderbar. So kam dann das Rad auch wenige Tage später zu mir und erste Runden wurden gedreht. Prüfen, was geht, wie sich ein Rad dieser Art fährt und was ich verändern muss, um mich wohl zu fühlen. Die Tipps der Freunde beachten und der immer wieder gelobte Rennlenker muss getestet werden.<br />
<a href="http://bueltge.de/wp-content/images/img_20120421_173612.jpg"><img src="http://bueltge.de/wp-content/images/img_20120421_173612-450x337.jpg" alt="Fast fertig - Five Speed mittels Cicli B" title="IMG_20120421_173612" width="450" height="337" class="aligncenter size-medium wp-image-1367" /></a></p>
<h3>Inspiration und Resultat</h3>
<p>Ideen und Bilder zu dem Thema gibt es genug. Das Netz wird geflutet, Single Speeds sind im Trend und stellen eine erstklassige Methode dar um sich als Rad-Schrauber in Punkto Optik und Design zu beweisen. Diese Form der Räder haben wenig Technik, wenig Ablenkung und wenige Ansatzpunkte, die die Optik zerstören. Daher eignen sie sich besonders gut für die Darstellung von gutem Design in Verbindung mit dem geliebten Rad. Mein <a href="http://zootool.com/user/bueltge/tag:bike">Zoo</a> kann das sicher beweisen, ist er doch klein.</p>
<p>Nun denn, am Ende muss man sich selber finden und erstellen, was man mag. So gab es auch für mich bestimmte Eckdaten zwischen Vernunft, Enthusiasmus und Möglichkeiten des eigenen Geschicks. Vieles ist toll, ab und an nutzlos oder auch nicht realisierbar für das eigene Können oder die Preisklasse. So sammelten sich diverse Ideen in meinem Kopf die immer wieder diesen schlanken Rahmen mit Holz kombinieren und erstrahlen lassen.</p>
<p>Die Abbildung von Holz soll sich in den ”Schutzblechen“ und im Lenker wieder spiegeln. Aktuell versuche ich mich noch daran, eigene Objekte zu erstellen und via Leimholz einen Lenker zu kreieren. Der Schutz vor Dreck übernimmt nur die Holzoptik, Kunstharz ist resistent gegen Feuchtigkeit, leicht zu pflegen und optisch flexibel. Sie sind nun verbaut und nützlich. Am Ende will ich es fahren, nutzen und km strampeln. Dafür muss es in erster Linie robust sein und wenig Pflege benötigen – so weicht dann doch des öfteren die Leidenschaft der Vernunft.</p>
<p>Aktuell ist der Lenker mein Favorit beim Fahren. Ein gekürzter Rennlenker, der mich in langer Position Ruhen lässt und das Ziehen am Berg ebenso ermöglicht. Die Bremsen sind schnell erreicht und griffig und waren für mich nie anders denkbar. Die Erfahrung aus dem alltäglichen Mountainbike fahren fordern bei mir diese Art der Bremsgriffe. Ich will nicht an einem Rennlenker ziehen und bremsen.</p>
<p>Bei der Beschaffung der einzelnen kleinen Teile wird man nach erster Euphorie schnell an dem Punkt kommen, dass es nicht so einfach ist, wie gedacht. Entweder man greift tief in den Geldbeutel oder bringt eine gewisse Geduld und Entspanntheit mit. Die Bilder im Netz zeigen viele Möglichkeiten auf, sind jedoch unter einem anderen Ziel erreicht und die resultierenden Preis bilden dies auch ab. Insofern gut schauen, wo will man hin, was soll erreicht werden.</p>
<p>Ich für meinen Teil habe gut Kompromisse gefunden. Wichtig war mir der schlanke gemuffte Rahmen und der Erhalt diverser Parts, die die Optik unterstreichen. Daher ist weiterhin so viel wie möglich und nötig an Campagnolo Teilen verbaut, bis hinzu Schrauben für den Verschluss von Öffnungen. Ebenso der klassische Sattel seiner Zeit und dessen glasklarem Kunststoffunterbau.</p>
<p>Entscheidend ist, das eigene Glück beim Fliegen über den Asphalt. Die vielen Stunden am Bauen und dann der erste Ritt können wohl nicht verglichen werden mit dem Erweb eines fertigen Bikes. Die Leidenschaft ist eine andere, die Zusammenkunft jedes einzelnen Teiles mit dem Fahren ebenso. Ich liebe es, mit all seinen Rundungen.</p>
<h3>Die Parts</h3>
<ul>
<li>Rahmen: Cicli B</li>
<li>Laufräder: Halo Aera + Schwalbe Reifen</li>
<li>Nabenschaltung: Sturmey Archer SRF 5</li>
<li>Kurbeln, Kettenblatt und div. Kleinteile: Campagnolo</li>
<li>Bremsen: Suntour Superbe Pro</li>
<li>Pedalen: Shimano XTR</li>
<li>Fender: <a href="http://www.chrisdiamond.ch/fender_chris_diamond_bicycles.html">Chris Diamond</a></li>
</ul>
<p>
<a href='http://bueltge.de/projekt-five-speed/1365/img_20120421_135353/' title='IMG_20120421_135353'><img width="200" height="200" src="http://bueltge.de/wp-content/images/img_20120421_135353-200x200.jpg" class="attachment-thumbnail" alt="IMG_20120421_135353" title="IMG_20120421_135353" /></a>
<a href='http://bueltge.de/projekt-five-speed/1365/img_20120421_173612/' title='IMG_20120421_173612'><img width="200" height="200" src="http://bueltge.de/wp-content/images/img_20120421_173612-200x200.jpg" class="attachment-thumbnail" alt="Fast fertig - Five Speed mittels Cicli B" title="IMG_20120421_173612" /></a>
<a href='http://bueltge.de/projekt-five-speed/1365/img_20120421_173619/' title='IMG_20120421_173619'><img width="200" height="200" src="http://bueltge.de/wp-content/images/img_20120421_173619-200x200.jpg" class="attachment-thumbnail" alt="IMG_20120421_173619" title="IMG_20120421_173619" /></a>
<a href='http://bueltge.de/projekt-five-speed/1365/img_20120421_173627/' title='IMG_20120421_173627'><img width="200" height="200" src="http://bueltge.de/wp-content/images/img_20120421_173627-200x200.jpg" class="attachment-thumbnail" alt="IMG_20120421_173627" title="IMG_20120421_173627" /></a>
<a href='http://bueltge.de/projekt-five-speed/1365/img_20120421_173638/' title='IMG_20120421_173638'><img width="200" height="200" src="http://bueltge.de/wp-content/images/img_20120421_173638-200x200.jpg" class="attachment-thumbnail" alt="IMG_20120421_173638" title="IMG_20120421_173638" /></a>
<a href='http://bueltge.de/projekt-five-speed/1365/img_20120421_173651/' title='IMG_20120421_173651'><img width="200" height="200" src="http://bueltge.de/wp-content/images/img_20120421_173651-200x200.jpg" class="attachment-thumbnail" alt="IMG_20120421_173651" title="IMG_20120421_173651" /></a>
<a href='http://bueltge.de/projekt-five-speed/1365/img_20120421_173707/' title='IMG_20120421_173707'><img width="200" height="200" src="http://bueltge.de/wp-content/images/img_20120421_173707-200x200.jpg" class="attachment-thumbnail" alt="IMG_20120421_173707" title="IMG_20120421_173707" /></a>
<a href='http://bueltge.de/projekt-five-speed/1365/img_20120421_173722/' title='IMG_20120421_173722'><img width="200" height="200" src="http://bueltge.de/wp-content/images/img_20120421_173722-200x200.jpg" class="attachment-thumbnail" alt="IMG_20120421_173722" title="IMG_20120421_173722" /></a>
<a href='http://bueltge.de/projekt-five-speed/1365/img_20120421_173731/' title='IMG_20120421_173731'><img width="200" height="200" src="http://bueltge.de/wp-content/images/img_20120421_173731-200x200.jpg" class="attachment-thumbnail" alt="IMG_20120421_173731" title="IMG_20120421_173731" /></a>
<a href='http://bueltge.de/projekt-five-speed/1365/img_20120421_173751/' title='IMG_20120421_173751'><img width="200" height="200" src="http://bueltge.de/wp-content/images/img_20120421_173751-200x200.jpg" class="attachment-thumbnail" alt="IMG_20120421_173751" title="IMG_20120421_173751" /></a>
<a href='http://bueltge.de/projekt-five-speed/1365/projekt-fivespeed-endet/' title='Projekt-FiveSpeed-endet'><img width="200" height="200" src="http://bueltge.de/wp-content/images/projekt-fivespeed-endet-200x200.jpg" class="attachment-thumbnail" alt="Das Bike ist fertig; glücklich" title="Projekt-FiveSpeed-endet" /></a>
<a href='http://bueltge.de/projekt-five-speed/1365/camerazoom-20120423195519804/' title='CameraZOOM-20120423195519804'><img width="200" height="200" src="http://bueltge.de/wp-content/images/camerazoom-20120423195519804-200x200.jpg" class="attachment-thumbnail" alt="CameraZOOM-20120423195519804" title="CameraZOOM-20120423195519804" /></a>
<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/projekt-five-speed/1365/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/projekt-five-speed/1365/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/projekt-fivespeed-endet-200x200.jpg" />
		<media:content url="http://bueltge.de/wp-content/images/projekt-fivespeed-endet.jpeg" medium="image">
			<media:title type="html">Projekt-FiveSpeed-endet</media:title>
			<media:thumbnail url="http://bueltge.de/wp-content/images/projekt-fivespeed-endet-200x200.jpg" />
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/img_20120421_173612.jpg" medium="image">
			<media:title type="html">IMG_20120421_173612</media:title>
			<media:thumbnail url="http://bueltge.de/wp-content/images/img_20120421_173612-200x200.jpg" />
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/img_20120421_135353.jpg" medium="image">
			<media:title type="html">IMG_20120421_135353</media:title>
			<media:thumbnail url="http://bueltge.de/wp-content/images/img_20120421_135353-200x200.jpg" />
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/img_20120421_173612.jpg" medium="image">
			<media:title type="html">IMG_20120421_173612</media:title>
			<media:thumbnail url="http://bueltge.de/wp-content/images/img_20120421_173612-200x200.jpg" />
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/img_20120421_173619.jpg" medium="image">
			<media:title type="html">IMG_20120421_173619</media:title>
			<media:thumbnail url="http://bueltge.de/wp-content/images/img_20120421_173619-200x200.jpg" />
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/img_20120421_173627.jpg" medium="image">
			<media:title type="html">IMG_20120421_173627</media:title>
			<media:thumbnail url="http://bueltge.de/wp-content/images/img_20120421_173627-200x200.jpg" />
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/img_20120421_173638.jpg" medium="image">
			<media:title type="html">IMG_20120421_173638</media:title>
			<media:thumbnail url="http://bueltge.de/wp-content/images/img_20120421_173638-200x200.jpg" />
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/img_20120421_173651.jpg" medium="image">
			<media:title type="html">IMG_20120421_173651</media:title>
			<media:thumbnail url="http://bueltge.de/wp-content/images/img_20120421_173651-200x200.jpg" />
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/img_20120421_173707.jpg" medium="image">
			<media:title type="html">IMG_20120421_173707</media:title>
			<media:thumbnail url="http://bueltge.de/wp-content/images/img_20120421_173707-200x200.jpg" />
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/img_20120421_173722.jpg" medium="image">
			<media:title type="html">IMG_20120421_173722</media:title>
			<media:thumbnail url="http://bueltge.de/wp-content/images/img_20120421_173722-200x200.jpg" />
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/img_20120421_173731.jpg" medium="image">
			<media:title type="html">IMG_20120421_173731</media:title>
			<media:thumbnail url="http://bueltge.de/wp-content/images/img_20120421_173731-200x200.jpg" />
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/img_20120421_173751.jpg" medium="image">
			<media:title type="html">IMG_20120421_173751</media:title>
			<media:thumbnail url="http://bueltge.de/wp-content/images/img_20120421_173751-200x200.jpg" />
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/projekt-fivespeed-endet.jpeg" medium="image">
			<media:title type="html">Projekt-FiveSpeed-endet</media:title>
			<media:thumbnail url="http://bueltge.de/wp-content/images/projekt-fivespeed-endet-200x200.jpg" />
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/camerazoom-20120423195519804.jpg" medium="image">
			<media:title type="html">CameraZOOM-20120423195519804</media:title>
			<media:thumbnail url="http://bueltge.de/wp-content/images/camerazoom-20120423195519804-200x200.jpg" />
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WordPress Nutzer Daten in Übersichten der Artikel und Usern verwenden</title>
		<link>http://bueltge.de/wordpress-nutzer-daten-in-uebersichten-der-artikel-und-usern-verwenden/1357/</link>
		<comments>http://bueltge.de/wordpress-nutzer-daten-in-uebersichten-der-artikel-und-usern-verwenden/1357/#comments</comments>
		<pubDate>Thu, 19 Apr 2012 11:00:57 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1357</guid>
		<description><![CDATA[Ein kleines Plugin um die Möglichkeiten der Erweiterung in den Tabellen der verschiedenen Sichten von WordPress zu verstehen und zu erkennen welche Möglichkeite es gibt.]]></description>
			<content:encoded><![CDATA[<p>Die Spalten im Backend von WordPress lassen sich erweitern und Filtern, ebenso die Daten der User-Profile. Ein kleines Plugin soll dies demonstrieren und vielleicht hilft es dem einem oder anderen es zu verstehen und seine eigenen Anforderungen umzusetzen.</p>
<p>Die Einfachheit des Plugins spricht für sich, daher wollte ich es veröffentlichen und denke, dass wer mit Code arbeitet, die Hooks erkennt und versteht, woher was kommt und wo wirkt. In vielen Beispielen sind komplexe Anwendungen ersichtlich, die aber dem Lerneffekt im Wege stehen und die Einfachheit verdecken. Ich hoffe, dass das kleine Plugin genau diesen Wert abbildet und einen Ansatz für eigene Möglichkeiten aufzeigt.</p>
<p><a href="http://bueltge.de/wp-content/images/user-meta-table.png"><img src="http://bueltge.de/wp-content/images/user-meta-table-450x194.png" alt="" title="user-meta-table" width="450" height="194" class="aligncenter size-medium wp-image-1363" /></a></p>
<p>Das kleine Plugin ist auf Anforderung entstanden, da diverse Autoren schreiben und der Link des Autors jeweils geprüft werden muss. Daher war es nahe liegend, dass die URL am Artikel des jeweiligen Autors und am Profil schnell ersichtlich ist.<br />
<span id="more-1357"></span><br />
Die Inhalte können beliebig angepasst werden, deutlich wird aber, wie einfach man die Daten des Users an verschiedenen Stellen nutzen kann. Die Hooks für die Erweiterung der Spalten in den verschiedenen Sichten sollten deutlich machen, wie es funktioniert und wo man ansetzen muss, wenn das Know How bisher nicht vorhanden war.</p>
<p><a href="http://bueltge.de/wp-content/images/user-meta-table-post.png"><img src="http://bueltge.de/wp-content/images/user-meta-table-post-450x232.png" alt="" title="user-meta-table-post" width="450" height="232" class="aligncenter size-medium wp-image-1364" /></a></p>
<pre><code class="php">
&lt;?php
/**
 * Plugin Name: Add User Meta Website to different Tables
 * Plugin URI:  
 * Text Domain: add-user-meta-to-table
 * Domain Path: /languages
 * Description: Add the Website data of user profile to users.php table and table of edit posts
 * Version:	1.0.0
 * Author:      Frank Bültge
 * Author URI:  http://bueltge.de
 * License:     GPLv3
 */

/**
License:
==============================================================================
Copyright 2011 Frank Bültge  (email : frank@bueltge.de)

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

Requirements:
==============================================================================
This plugin requires WordPress &gt;= 3.3 and tested with PHP Interpreter &gt;= 5.3
*/

if ( ! function_exists( 'add_action' ) ) {
	echo "Hi there! I'm just a part of plugin, not much I can do when called directly.";
	exit;
}

add_action( 'admin_init', array( 'Fb_Add_User_Website', 'init' ) );

class Fb_Add_User_Website {
	
	public function init() {
		// add to user table
		add_filter( 'manage_users_columns', array( __CLASS__, 'add_user_columns' ) );
		add_action( 'manage_users_custom_column', array( __CLASS__, 'add_custom_user_columns' ), 10, 3 );
		// add to the edit posts table
		add_filter( 'manage_posts_columns', array( __CLASS__, 'add_user_columns' ) );
		add_action( 'manage_posts_custom_column', array( __CLASS__, 'add_custom_post_columns' ), 10, 2 );
	}
	
	/**
	 * Add String to table head
	 * 
	 * @param  $columns  Array
	 * @return $columns  Array
	 */
	public function add_user_columns( $columns ) {
		
		$columns['user_url'] = __( 'Website' );
		
		return $columns;
	}
	
	/**
	 * Add value to the custom field
	 * 
	 * @param  $value
	 * @param  $column_name var for column
	 */
	public function add_custom_user_columns( $value, $column_name, $id ) {
		
		if ( 'user_url' === $column_name &amp;&amp; is_integer( $id ) ) {
			$user_url = esc_attr( get_the_author_meta( 'user_url', (int) $id ) );
			if ( ! empty( $user_url ) )
				return '&lt;a href=&quot;' . $user_url . '&quot;&gt;' . str_replace( 'http://', '', $user_url ) . '&lt;/a&gt;';
		}
	}
	
	public function add_custom_post_columns( $column_name, $post_id ) {
		
		if ( 'user_url' === $column_name ) {
			$user_id  = get_the_author_meta( 'ID' );
			$user_url = esc_attr( get_the_author_meta( 'user_url', (int) $user_id ) );
			if ( ! empty( $user_url ) )
				echo '&lt;a href=&quot;' . $user_url . '&quot;&gt;' . str_replace( 'http://', '', $user_url ) . '&lt;/a&gt;';
		}
	}
	
} // end class
</code></pre>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wordpress-nutzer-daten-in-uebersichten-der-artikel-und-usern-verwenden/1357/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-nutzer-daten-in-uebersichten-der-artikel-und-usern-verwenden/1357/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/user-meta-table-200x200.png" />
		<media:content url="http://bueltge.de/wp-content/images/user-meta-table.png" medium="image">
			<media:title type="html">user-meta-table</media:title>
			<media:thumbnail url="http://bueltge.de/wp-content/images/user-meta-table-200x200.png" />
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/user-meta-table-post.png" medium="image">
			<media:title type="html">user-meta-table-post</media:title>
			<media:thumbnail url="http://bueltge.de/wp-content/images/user-meta-table-post-200x200.png" />
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Minimum WordPress als Framework</title>
		<link>http://bueltge.de/minimum-wordpress-als-framework/1360/</link>
		<comments>http://bueltge.de/minimum-wordpress-als-framework/1360/#comments</comments>
		<pubDate>Thu, 05 Apr 2012 12:20:26 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1360</guid>
		<description><![CDATA[Schlanker, schneller, einfacher - via Konstanten den WordPress Core entschlacken.]]></description>
			<content:encoded><![CDATA[<p>Ein kleiner Beitrag, für all diejenigen, die WordPress als Backend, Framework oder ähnliches einsetzen. Die Anwendungen, gerade im B2B Bereich, werden immer mehr, ebenso die Fragen dazu.</p>
<p>Bisher habe ich immer gern <a href="http://backpress.org/">BackPress</a> empfohlen, darauf verwiesen. Aber auch ein gepflegter Standard mit all seinen Vorteilen im Rahmen der Update-Philosophie ist machbar. WordPress reduziert das Initialisieren auf einem Minimum, wenn eine die Konstante <code>SHORTINIT</code> gesetzt ist.<br />
<span id="more-1360"></span><br />
Die <code>wp-settings.php</code> von WordPress ist der Schlüssel.</p>
<pre><code class="php">
// Stop most of WordPress from being loaded if we just want the basics.
if ( SHORTINIT )
	return false;
</code></pre>
<p>Damit ist der Ladeprozess um einiges schlanker und Dateien, die danach geladen werden, müssen via Plugin oder Theme integriert werden, sollte Funktionen daraus gebraucht werden. Die Möglichkeit lohnt. Nicht selten ist der Anteil WordPress in einigen Projekten so klein gegenüber den eigenen Entwicklungen, dass diese Überlegung und der Test die Zeit wert ist.</p>
<p>Die Aktivierung in der <code>wp-config.php</code> via <code>define( 'SHORTINIT', TRUE );</code> ist schnell erledigt und der Test kann starten.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/minimum-wordpress-als-framework/1360/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/minimum-wordpress-als-framework/1360/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Back of a Webpage: bueltge.de</title>
		<link>http://bueltge.de/back-of-a-webpage-bueltge-de/1358/</link>
		<comments>http://bueltge.de/back-of-a-webpage-bueltge-de/1358/#comments</comments>
		<pubDate>Thu, 05 Apr 2012 09:56:18 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Linktipp]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1358</guid>
		<description><![CDATA[Hinter einer Website steckt mehr als pure Technik; trotzdem lässt sie sich in meinem Fall gut symbolisieren.]]></description>
			<content:encoded><![CDATA[<p>Hinter einer Website steckt mehr als pure Technik; trotzdem lässt sie sich in meinem Fall gut symbolisieren.</p>
<p><img src="http://bueltge.de/wp-content/images/bueltge_de-backside.jpg" alt="bueltge.de - was dahinter steckt" width="640" height="450" /></p>
<p><cite>inspiriert via <a href="http://backofawebpage.tumblr.com/">Back of a Webpage</a></cite><br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/back-of-a-webpage-bueltge-de/1358/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/back-of-a-webpage-bueltge-de/1358/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/bueltge_de-backside.jpg" />
		<media:content url="http://bueltge.de/wp-content/images/bueltge_de-backside.jpg" medium="image">
			<media:title type="html">bueltge.de - was dahinter steckt</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Ausgewählte Font Type Kombinationen</title>
		<link>http://bueltge.de/ausgewaehlte-font-type-kombinationen/1354/</link>
		<comments>http://bueltge.de/ausgewaehlte-font-type-kombinationen/1354/#comments</comments>
		<pubDate>Tue, 27 Mar 2012 21:42:28 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Webküche]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Font]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1354</guid>
		<description><![CDATA[Die Fülle der freien Fonts macht es nicht einfach, eine kleine Übersicht lohnender Kombinationen von Fonts soll helfen.]]></description>
			<content:encoded><![CDATA[<p>Fonts sind weiterhin große Lieblinge der Kunden geworden, mit relativ wenig Aufwand kann man viel erreichen - zumindest wenn man sich der Typographie ein wenig versteht und Lösungen nutzt, die einfach zu implementieren sind. In diesem Zusammenhang musste ich Erfahrungen mit eigenen Fonts von Designern sammeln und der Aufwand und die rechtliche Form stehen in keinen Verhältnis zur Nutzung der freien Fonts inkl. Webservice. Insbesondere <a title="Google Web Font" href="http://www.google.com/webfonts#ChoosePlace:select">Google</a> liefert hier eine Fülle an Lösungen und macht die Integration, den Nutzen einfach.</p>
<p>Die Fülle stellt aber auch das Problem dar und so ist es nicht einfach die richtigen Fonts in der Kombination zu finden. In der Vergangenheit sind mir dabei einige Lösungen unter gekommen, die ich in einer <a href="http://bueltge.de/free-web-font-combinations/" title="Beautiful Web Type Combinations">einfachen Seite</a> gesammelt habe und nun einen recht schönen Umfang haben. Die Auswahl stammt nicht von mir, sondern in der Regel von den Designern oder Vorgaben aus dem Netz.<br />
<span id="more-1354"></span></p>
<p><a style="padding: 0 !important;" title="free-web-font-combinations" href="http://bueltge.de/free-web-font-combinations/"><img class="centered aligncenter" src="http://wpengineer.com/wp-content/uploads/free-web-fonts-414x1024.png" alt="Screenshot Beautiful Web Type Combinations" /></a></p>
<p>Die Inspiration des Aussehen habe ich von <a href="http://hellohappy.org/beautiful-web-type/">Beautiful Web Type</a> entnommen und ebenso die Idee der Zitate. Ein wunderbarer One-pager, der es lohnt zu lesen, denn die Zitate stehen in irgendeiner Form zu mir als Person; die eine oder andere Begründung findet man auch im Source.</p>
<p>Das Projekt selbst liegt auf <a title="Git Repo: Beautiful web type combinations" href="https://github.com/bueltge/Free-Web-Font-Combinations">Github</a> und soll, darf und muss erweitert werden - also bitte forken. Wer dies nicht mag, trotzdem etwas beitragen will; die bekannten Wege via Mail oder ein <a href="https://github.com/bueltge/Free-Web-Font-Combinations/issues">Issue zum Projekt</a> im Repo gehen natürlich auch.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/ausgewaehlte-font-type-kombinationen/1354/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/ausgewaehlte-font-type-kombinationen/1354/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:thumbnail url="http://wpengineer.com/wp-content/uploads/free-web-fonts-414x1024.png" />
		<media:content url="http://wpengineer.com/wp-content/uploads/free-web-fonts-414x1024.png" medium="image">
			<media:title type="html">Screenshot Beautiful Web Type Combinations</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Erste und letzte Seite in Seiten-Strukturen von WordPress erkennen</title>
		<link>http://bueltge.de/erste-und-letzte-seite-in-seiten-strukturen-von-wordpress-erkennen/1349/</link>
		<comments>http://bueltge.de/erste-und-letzte-seite-in-seiten-strukturen-von-wordpress-erkennen/1349/#comments</comments>
		<pubDate>Tue, 27 Mar 2012 09:02:29 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1349</guid>
		<description><![CDATA[Die erste und die letzte Seite in einer Struktur von Seiten kann nützlich sein, die kleinen Schnipsel tun genau dies; ausbauen und nutzen.]]></description>
			<content:encoded><![CDATA[<p>Ab und an sind kleines Schnipsel nützlich, sie sind einfach und trotzdem ist ein Denkanstoß hilfreich. Die folgenden kleinen Snippets sind solcher Natur.<br />
Für einen Fix in einem Premium-Theme der besonderen <img src='http://bueltge.de/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  Art brauchte ich eine Auswertung, wo ich mich in der Seitenstruktur befinde und mit wenig Aufwand konnte ich so die Klassen erweitern und mittels CSS reagieren.</p>
<p>Der folgenden Code zeigt die Grundlage dafür und <code>get_pages()</code> ist der Schlüssel aus dem Core von WordPress um diese Resultate zu herzielen. Diese Funktion bringt das nötige Resultat mittels Parameter und die Ausgabe über den Parameter <code>sort_order</code> sorgt für die Reihenfolge und Identifizierung der jeweils ersten page, die dann entweder die erste oder die letzte Seite in dieser Struktur ist.<br />
<span id="more-1349"></span><br />
Vielleicht braucht es jemand, ansonsten dient es mir - wie immer - als öffentliche Ablage.</p>
<pre><code>
// First post in structure
// simple, but usefull <img src='http://bueltge.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> 
global $post;

$page_childs = get_pages( 'child_of=' . $post-&gt;post_parent . '&amp;sort_order=ASC' );
$first_child = $page_childs[0];

if ( get_the_ID() === (int) $first_child-&gt;ID )
 echo 'First Child';
</code></pre>
<pre><code>
// Last post in structure
global $post;

$page_childs = get_pages( 'child_of=' . $post-&gt;post_parent . '&amp;sort_order=DESC' );
$last_child  = $page_childs[0];

if ( get_the_ID() === (int) $last_child-&gt;ID )
 echo 'Last Child';
</code></pre>
<p>Vielleicht gelingt es mir auch wieder mehr Zeit für neue Beiträge zu finden und die Frequenz zu erhöhen, diverse Artikel zu publizieren und Freude dabei zu haben; nicht nur in Arbeit unter zu gehen.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/erste-und-letzte-seite-in-seiten-strukturen-von-wordpress-erkennen/1349/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/erste-und-letzte-seite-in-seiten-strukturen-von-wordpress-erkennen/1349/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Abschied</title>
		<link>http://bueltge.de/abschied-2/1352/</link>
		<comments>http://bueltge.de/abschied-2/1352/#comments</comments>
		<pubDate>Mon, 19 Mar 2012 23:06:13 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[trauer]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1352</guid>
		<description><![CDATA[Abschied von einem Freund nehmen ist schwer, vielleicht helfen einige Worte in der Welt, die ich kenne und mag.]]></description>
			<content:encoded><![CDATA[<p>Das Leben ist kurz, bei manchen Menschen viel zu kurz und noch immer fühle ich mich betroffen, nehme es nicht richtig war und jeder Anlass des Denkens in <a href="http://dynamicinternet.eu/blog/2012-03-10/offizielle-mitteilung/">Michas</a> Richtung stimmt mich traurig und ohne Lösung. So richtig habe ich es erst beim Treffen mit der Familie und den Freunden am Tag der Beerdigung wahr genommen – glauben will ich es immer noch nicht.</p>
<p>Michael ist nicht mehr unter uns. Der Austausch mit ihm war immer spannend, respektvoll und zeit intensiv. Nicht immer hatte ich diese Zeit und nun will ich es ändern, zurück drehen und mir die Zeit nehmen und zuhören – ich kann es nicht; keine “API” der Welt kann mir helfen; ich muss damit im Geiste mit mir selbst fertig werden und ich werde Micha vermissen.</p>
<blockquote cite="Graffiti an Hauswänden in New York"><p>Ein Mensch hinterlässt immer Spuren. Es ist auch kein Mensch ohne Schatten …</p></blockquote>
<p>Die Menschen die man via Web kennen lernt, liegen mir ebenso am Herzen wie die Bekanntschaft ohne digitale Helfer. Es entsteht und wächst etwas, ist es ein wohlwollendes Gefühl, dann soll es bleiben, von innen wärmen und wachsen. Mit einigen Freunden ist dies gelungen, der Einstieg ist oft der gleiche oder ein ähnlicher Ansatz – eine Leidenschaft, eine Gemeinsamkeit an Etwas in dieser digitalen Welt. Mit Micha hatte ich eine gemeinsame Leidenschaft in WordPress gefunden, positive und negative Aspekte wurden ausgetauscht und das Teilen war uns nicht nur privat ein Bedürfnis. Verschieden Sichten wurden diskutiert und sachlich bewertet; ein Mehrwert entsteht. Daraus entstanden viele Ideen; viele liegen auf einem Haufen mit anderen Ideen; einige Ideen sind gewachsen und umgesetzt. <a href="http://wpengineer.com/2421/weve-lost-a-very-good-friend-wordpress-enthusiast-and-an-important-part-of-wpengineer/">WP Engineer</a> war unsere Plattform, eine der vielen Ideen. Drei Freunde starten mit Etwas und gewinnen neue Freunde. Ein Freund verlässt uns nun – <strong>wir sind unvorbereitet</strong>; ein Zustand den ich nicht mag, den ich gern vermeide und den Micha nun in seiner Schuld mir gegenüber trägt; manchmal ärgere ich mich darüber, helfen tut es nicht und zu Ende gedacht ist es auch nicht; ich weiß, dass es dumm ist. Ich vermisse ihn einfach und die Arbeit lenkt ab, der Urlaub auch, die Freunde noch mehr – ein Ersatz kann es nicht sein.</p>
<blockquote cite="Graffiti an Hauswänden in New York"><p>Man vergisst, was man nicht vergessen will, und denkt an das, was man lieber vergessen hätte …</p></blockquote>
<p>Ich poltere, die Worte sind kein Fluss und nur Phrasen der Gedanken. Vielleicht gehört es nicht hierher, vielleicht tut es aber gut und bisher war Teilen immer ein Teil von mir und darum schreibe ich hier. Ich wünsche mir, dass ich dies so schnell nicht wieder erleben muss, dass ich mir mehr Zeit für Freunde nehme, dass ich die Prioritäten richtig ordne und nicht lernen muss, damit umzugehen – es ist einfach nicht meine Begabung. Ich wünsche allen Beteiligten, dass sie ähnlich denken, dass wir uns darüber austauschen können und dass wir Micha nicht vergessen. Im meinen Gedanken und in meinem Herzen hat Micha einen Platz, ich will ihn am Leben erhalten.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/abschied-2/1352/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/abschied-2/1352/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Slides: WordPress Entwicklung</title>
		<link>http://bueltge.de/slides-wordpress-entwicklung/1350/</link>
		<comments>http://bueltge.de/slides-wordpress-entwicklung/1350/#comments</comments>
		<pubDate>Fri, 09 Mar 2012 11:05:32 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[schulung]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1350</guid>
		<description><![CDATA[WordPress Schulungen können verschieden Zielgruppen abholen; meine Slides zum Thema Entwicklung stehen nun online zur Verfügung.]]></description>
			<content:encoded><![CDATA[<p>Ich schule auf spezifische Anforderungen in Unternehmen das Thema WordPress; bisher immer Entwicklung und einige Kollegen aus dem <a href="http://edupress.de" title="EduPress  - WordPress-Schulungen und -Training">Inpsyde Team, unsere WordPress Agentur</a> übernehmen Schulungen im Umfeld Autoren, Redakteure und Backend Allgemein. In diesem Zusammenhang ist seit einigen Tagen die Plattform EduPress online und informiert.</p>
<p>Ich gehe bei meinen Schulungen speziell auf die Anforderungen der Zielgruppe ein und trotzdem gibt es immer einen grundlegenden Einstieg, den ich fast immer nutzen kann. In diesem Zusammenhang habe ich meine Folien für diese Themen nun aktualisiert und wer mag, kann diese unter der URL <a href="http://bueltge.de/wordpress-entwicklung/" title="Folien zur WordPress Entwicklungs-Schulung">bueltge.de/wordpress-entwicklung/</a> einsehen.<br />
Sollte es Hinweise, Korrekturen oder anderen Tipps geben - gern an mich.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/slides-wordpress-entwicklung/1350/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/slides-wordpress-entwicklung/1350/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Trend. Meiner.</title>
		<link>http://bueltge.de/trend-meiner/1347/</link>
		<comments>http://bueltge.de/trend-meiner/1347/#comments</comments>
		<pubDate>Fri, 13 Jan 2012 08:02:22 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Artikel]]></category>
		<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1347</guid>
		<description><![CDATA[Ich befülle das Blog sporadisch, in erster Linie liegt es an der Zeit – Lust verspüre ich oft. Bloggen ist mir wichtig, die anderen Kanäle sind eher Impulsgeber und die Möglichkeit schnell etwas zu teilen, was keinen dauerhaften Bestand in meiner Welt bedarf. ]]></description>
			<content:encoded><![CDATA[<p>Ich befülle das Blog sporadisch, in erster Linie liegt es an der Zeit – Lust verspüre ich oft. Bloggen ist mir wichtig, die anderen Kanäle sind eher Impulsgeber und die Möglichkeit schnell etwas zu teilen, was keinen dauerhaften Bestand in meiner Welt bedarf. </p>
<p>Ich schreibe, ich schreibe wie und über was ich will. Ich habe es immer so dargestellt:</p>
<blockquote><p>Dies ist mein Blog und mein Blog ist mein Blog.</p></blockquote>
<p><span id="more-1347"></span><br />
Nicht selten kommen nicht technisch bezogene Artikel aus dem gefühlten Moment heraus, einfach pure Lust und sie drücken aus, was ich fühle und empfinde; für mich oft ein Blick in die Vergangenheit, wenn ich diese Artikel später reflektiere. Dazu gehören die Fehler, die Unvollständigkeit - die Weiterentwicklung.</p>
<p>Facebook hat mich bisher nicht interessiert; ich kann der geschlossenen Gruppen wenig abgewinnen. In <a href="https://plus.google.com/u/0/111291152590065605567/">G+</a> bin ich aktiv, weil der Account da ist und die Nutzung damit einfach ist; parallel sind die Leute, die ich entdecke und lese dort - es ist ein guter Austausch. <a href="http://twitter.com/#!/bueltge">Twitter</a> war nie meine Liebe, zu schnell, zu kurz und zu wenig Zeichen um mich auszudrücken. Aber die Vielfalt empfinde ich als wunderbar; wähle, was du brauchst; nutze, was du willst.<br />
Diskussion in Fachthemen finde ich fast nur noch auf <a href="http://wordpress.stackexchange.com/users/170/bueltge">StackExchange</a>; imm deutschen Raum ist mir kein gewachsener Raum dieser Vielfalt und Qualität bekannt. Schade, in der deutschen Sprache fühle ich mich zu Hause; vielleicht kann es <a href="http://www.cosni.de/users/4ee87f4495543/frank">Cosni</a> schaffen.</p>
<p><cite>inspiriert via <a href="http://sprechblase.wordpress.com/2012/01/11/trend-meiner/" title="Trend. Meiner. von Cem">Trend. Meiner. « Sprechblase</a></cite><br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/trend-meiner/1347/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/trend-meiner/1347/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WordPress mehrsprachig nutzen - ein Lösungsvorschlag</title>
		<link>http://bueltge.de/wordpress-mehrsprachig-nutzen-ein-loesungsvorschlag/1339/</link>
		<comments>http://bueltge.de/wordpress-mehrsprachig-nutzen-ein-loesungsvorschlag/1339/#comments</comments>
		<pubDate>Sat, 24 Dec 2011 07:33:02 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1339</guid>
		<description><![CDATA[WordPress muss ebenso im mehrsprachigen Umfeld genutzt werden, verschiedene Lösungen haben unterschiedliche Herangehensweisen. Ich habe eine Lösung via Multisite immer bekräftigt und hier einige Worte und eine Plugin Lösung als Unterstützung.]]></description>
			<content:encoded><![CDATA[<p>Ja, es gibt WordPress schon lange und fast ebenso lange möchte man den Inhalt in verschiedenen Sprachen ausgeben und dem Leser den Inhalt entsprechend aufbereiten. Das Thema kann schnell vielschichtig und komplex werden, denn nicht nur das Darstellen von Inhalt in Form von Text in unterschiedlichen Sprachen ist ein Thema; es geht ebenfalls um die Meta Daten zum Inhalt, um Bilder, die je nach Sprache verschieden sein können und es geht um die Nutzung der Admin-Oberfläche in der bevorzugten Sprache. Damit ist nur ein Teil angedeckt und je nach Anforderungen (<a href="http://wordpress.stackexchange.com/questions/1552/best-practices-for-localizing-wordpress-content">ein Bsp. bei StackExchange</a>) wird dies schnell ein eigenes Projekt und WordPress ist nur ein "kleines" Framework im Hintergrund. Es gibt schon jetzt eine <a href="http://codex.wordpress.org/Multilingual_WordPress">Reihe von Plugins</a>, die verschiedenen Ansätze fahren - von neuen Tabellen im System oder de Trennung von Content nach Sprache in einem Tabelleneintrag zum Post bis hin zu Ablage in den Metadaten des Artikels.</p>
<p>Alle diese Lösungen haben ihre Grenzen, sind unflexibel und man begibt sich in eine Abhängigkeit, die man nur schwer wieder los wird und mit jedem Update von WordPress bekommt man es mit der Angst oder Minimum einem recht großen Aufwand im Testen zu tun. Darum möchte ich eine Lösung vorstellen, die wir im Team <a title="Inpsyde GmbH" href="http://inpsyde.com">Inpsyde</a> vielfach bei Kunden einsetzen und die ihre Stärke in der Flexibilität hat, in der Erweiterbarkeit und in der Eigenschaft, den WordPress Standard zu nutzen und nicht zu verbiegen. Ein Abschalten ist jederzeit möglich; das System bleibt in seinem Zustand.<br />
<span id="more-1339"></span></p>
<p><a href="http://bueltge.de/wordpress-mehrsprachig"><iframe src="http://bueltge.de/wordpress-mehrsprachig//?full#Cover" width="650" height="406" title="via Cursortasten blättern"></p>
<p>Die Slides zum Thema sind eingebettet; dein Form des Lesens lässt dies nicht zu, daher schaue dir die Slides unter folgenden Link an: <a href="http://bueltge.de/wordpress-mehrsprachig/">Mehrsprachigkeit mit WordPress</a>.</p>
<p></iframe></a></p>
<h3>Warum mehrsprachig?</h3>
<ul>
<li>2/3 der Weltbevölkerung sprechen mehr als eine Sprache</li>
<li>Globale Aufstellung von Unternehmen</li>
<li>Streuung von Inhalten</li>
<li>Service am Kunden</li>
<li>Suchmaschinenoptimierung</li>
</ul>
<h3>Die Lösung</h3>
<p>WordPress Multisite liefert die Lösung am Standard.<br />
Damit wird die Verwaltung verschiedener Instanzen, mit Gemeinsamkeiten und Unterschieden, mit Hilfe einer Installation möglich. Der Austausch von Daten ist via Core-Funktionen möglich, welche mittels Plugins gebündelt und vereinfacht werden.</p>
<h3>Vorteile</h3>
<ul>
<li>WordPress Core Funktionen</li>
<li>Keine Abhängigkeiten von Plugins – überlebensfähig</li>
<li>Unabhängig von WordPress Entwicklung*</li>
<li>Themes, Plugins zentral steuern, dezentral nutzen</li>
<li>Geringer Wartungsaufwand</li>
<li>Trennung Sprachen in Backend/Frontend (Userabhänig)</li>
<li>Komplett gespiegelt oder in jeder Inhaltsform getrennt</li>
<li>Kulturelle Hintergründe getrennt umsetzbar</li>
<li>Subdomains oder Subdirectories</li>
<li>de.example.com, example.com/de</li>
<li>Getrennte Domains via Domainmapping</li>
<li>example.de, example.com</li>
<li>Freiheit der Entwicklung in Design und Nutzeranforderung</li>
<li>Optimierung nicht nur im sichtbaren Bereich, lang-Attribute, SEO</li>
</ul>
<p>Weitere Ausführungen zu Frage, Ansatz und Lösung findet ihr den <a href="http://bueltge.de/wordpress-mehrsprachig/" title="Slides: Mehrsprachigkeit mit WordPress Einfach &#038; flexibel, mit WordPress Standard">Slides</a> zum WordCamp 2011.</p>
<h3>Unterstützung via Plugin</h3>
<p>Mit all diesen Anforderungen und Vorteilen nutzen wir eine Basis, die als Plugin im offiziellen Repository von WordPress zur Verfügung steht <a href="http://wordpress.org/extend/plugins/multilingual-press/">Multilingual Press</a>. Das Plugin liefert einige Werkzeuge um Multisite komfortabel für den Einsatz in der Mehrsprachigkeit umzusetzen.</p>
<p><a href="http://bueltge.de/wp-content/images/screenshot-2.png"><img src="http://bueltge.de/wp-content/images/screenshot-2-450x280.png" alt="Settings pro Blog" title="screenshot-2" width="450" height="280" class="aligncenter size-medium wp-image-1342" /></a></p>
<p>Dieses Plugin erleichtert die Zuordnung der unterschiedlichen Blogs im Netzwerk zu einer Sprache und der Verknüpfung zu anderen Blogs, so dass beim Publizieren in Blog A der Inhalt in anderen Blogs als Draft abgelegt wird. So stehen die Artikel in Relation, das System kennt ihre Zugehörigkeit und mit Hilfe einiger Funktionen kann dies im Frontend und Backend genutzt werden.<br />
Das Plugin liefert die Möglichkeit, dass am Artikel und Seite eine Meta Box mit dem Inhalt der verlinkten Daten zu sehen ist; im einfachsten Fall als Übersetzungshilfe. Ebenso gibt es ein Widget, welches im Frontend die Umschaltung erleichtert. Je Blog können einige Einstellungen vorgenommen werden, so dass eine Sprache, Flagge zugeordnet ist.</p>
<h3>Ausblick</h3>
<p>Wir haben eine weitere Version in Arbeit, die zusätzliche Hilfe mitbringt; z.B. ein Dashboardwidget mit der Übersicht alles Artikel und Verknüpfungen, einer Erweiterungen der Mediathek um globale Inhalte über alle Blogs und eigenständige Inhalte pro Blog zu trennen, in den Rechten und der Bedienung. Ebenso gibt es Helfer für das Updaten von bestehenden Installationen. Im weiteren besteht die Möglichkeit die Sprachpakete direkt im Backend zu laden, ohne via FTP/SSH auf den Server zu greifen und die Sprachen zuzuordnen. Unterstützen können wir auch, wenn ein Blog neu im Netzwerk angelegt wird, in dem bestehende Blogs als Vorlage dienen und Optionen u.a. kopiert werden. Dies aber nur ein kleiner Ausblick.</p>
<h3>Fazit</h3>
<p>WordPress Multisite liefert die Basis und mit einigen Anpassungen ensteht eine saubere, kontrollierte Lösung für die Nutzung von WordPress im mehrsprachigen Umfeld. Nun liegt es an euch - Multisite nutzen, Plugin testen und Rückmeldungen sehen wir gern am <a href="https://github.com/inpsyde/multilingual-press">Repo auf Github</a>.</h3>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wordpress-mehrsprachig-nutzen-ein-loesungsvorschlag/1339/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-mehrsprachig-nutzen-ein-loesungsvorschlag/1339/feed/</wfw:commentRss>
		<slash:comments>57</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/screenshot-2-200x200.png" />
		<media:content url="http://bueltge.de/wp-content/images/screenshot-2.png" medium="image">
			<media:title type="html">screenshot-2</media:title>
			<media:thumbnail url="http://bueltge.de/wp-content/images/screenshot-2-200x200.png" />
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Besser die Wahrheit?</title>
		<link>http://bueltge.de/besser-die-wahrheit/1346/</link>
		<comments>http://bueltge.de/besser-die-wahrheit/1346/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 13:19:17 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Danke]]></category>
		<category><![CDATA[Neujahr]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1346</guid>
		<description><![CDATA[Ich kann es nicht oft genug sagen, Danke an alle die hier Lesen und/oder mehr tun und mich beeinflussen.]]></description>
			<content:encoded><![CDATA[<p>Im Sinne der <a href="http://bueltge.de/tag/danke/">Tradition</a> möchte ich mich öffentlich bedanken; Danke sagen, an all die freundlichen Kontakte, die auch in diesem Jahr meine Persönlichkeit erweitert haben; die mich in irgendeiner Weise beeinflusst haben.<br />
<strong>Vielen Dank</strong></p>
<p>Ein weiteres Jahr fliegt vorbei. Um alles Revue passieren zu lassen, muss der Geist viel tun. Viele neue Eindrücke und Menschen sind mir auch in diesem Jahr begegnet. Viele bekannte Stimmen haben ein Gesicht bekommen und ich möchte besonders denen danken, die mir immer gern helfen und mich unterstützen; egal in welchem Bezug ich zu ihnen stehe. </p>
<blockquote><p>Es sind die Begegnungen mit Menschen, die das Leben lebenswert machen.</p></blockquote>
<p><span id="more-1346"></span><br />
In diesem Jahr ist ebenso auffällig, dass Themen wie Ehrlichkeit und Vertrauen scheinbar im öffentlichen Leben keine Werte mehr sind. Sie werden mit Füßen getreten und man bekommt den Eindruck, dass es zum guten Ton gehöre, zu lügen und zu betrügen. Ich hoffe und wünsche, dass eine Minderheit der Menschheit so denkt; dass Ideale weiterhin ihre Gläubiger haben und diese im Kern ihres Lebens eine Rolle spielen. Vertrauen beruht auf vielen anderen Worten und insbesondere dem Tun und Handeln zu diesen Worten. Insofern ist mein größter Wunsch, dass bei all den vielen Ablenkungen und Nebensächlichkeiten der Mensch im Mittelpunkt steht; egal welche Ideale und welche Technologien gerade Thema sind. Lasst und an alten und immer jung bleibenden Werten fest halten: Ehrlichkeit, Vertrauen ...<br />
Das Leben ist zu kurz, zu schnelllebig um es mit der Diskussion um eine gute Ausrede zu befüllen. Lebt man an den eigenen Werten für sich, dann wird vieles einfacher. Der Gedanke Open Source kann auf viele Bereiche des Lebens gespiegelt werden - Teilen tut gut; bringt mich und die Anderen weiter, den eigenen Zielen näher - und nur die sollen zählen.</p>
<p>In diesem Sinne wünsche ich <strong>alles Gute und Liebe</strong> all denen, die mich kennen und schätzen, ob lesend im Web oder aus dem Umfeld der Leute, die ich persönlich treffen durfte. Mit Sicherheit geht das Tempo dieses Jahres auch im kommenden Jahr weiter und es gilt für mich auch weiterhin: Ich muss damit leben und es verantworten.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/besser-die-wahrheit/1346/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/besser-die-wahrheit/1346/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Einschränken der Daten-typen im WordPress Upload</title>
		<link>http://bueltge.de/einschraenken-der-daten-typen-im-wordpress-upload/1338/</link>
		<comments>http://bueltge.de/einschraenken-der-daten-typen-im-wordpress-upload/1338/#comments</comments>
		<pubDate>Thu, 15 Dec 2011 12:16:22 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[mediathek]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1338</guid>
		<description><![CDATA[Der Upload von Dateien in WordPress kann eingeschränkt oder erweitert werden, wie erklärt der Beitrag.]]></description>
			<content:encoded><![CDATA[<p>WordPress hat mit Version 3.3 die Mediathek verändert - verbessert. Die Restriktionen im Bezug auf die Datei-Typen sind geblieben und man kann auf diese via Hook einwirken. So kann man in der Anwendungen die Datei-Typen einschränken und erweitern. Mittels zweier Hooks ist dies schnell getan und dabei ist noch ein Hinweis in der Oberfläche dabei, der die erlaubten Typen bekannt gibt.<br />
<span id="more-1338"></span><br />
<a href="http://wpengineer.com/wp-content/uploads/restrict-mime-type.png"><img src="http://wpengineer.com/wp-content/uploads/restrict-mime-type-300x187.png" alt="Screenshot Example for restrive the mime type" title="restrict-mime-type" width="300" height="187" class="aligncenter size-medium wp-image-2370" /></a></p>
<p>Das folgenden kleine Plugin soll als erste Lösung und dem Verständnis dienen. Dies kann selbstredend auf verschiedene Rollen oder Berechtigungsobjekte ausgedehnt werden, so dass man je nach Rolle verschiedene Typen von Dateien im System hoch laden kann - <a href="http://bueltge.de/search/current_user_can" title="Alle Artikel dazu in meinem Blog"><code>current_user_can()</code></a>.<br />
Wer sich für die aktuell erlaubten Typen interessiert, läßt sich das Array der ersten Funktion zurück geben oder schaut in die function <code>get_allowed_mime_types()</code> in <code>wp-includes/functions.php</code>.</p>
<p><a href="http://wpengineer.com/wp-content/uploads/restrict-mime-type-hint.png"><img src="http://wpengineer.com/wp-content/uploads/restrict-mime-type-hint-300x65.png" alt="Screenshot for Hint about allowed Mime Types" title="restrict-mime-type-hint" width="300" height="65" class="aligncenter size-medium wp-image-2371" /></a></p>
<pre><code>
&lt;?php
/**
 * Plugin Name: Restrict mime types
 * Plugin URI:  http://wpengineer.com/?p=2369
 * Description: Restrict list of allowed mime types and file extensions.
 * Version:     1.0.0
 * License:     GPLv3
 * Author:      Frank B&amp;uuml;ltge
 * Author URI:  http://bueltge.de/
 */

 // This file is not called from WordPress. We don't like that.
! defined( 'ABSPATH' ) and exit;

// If the function exists this file is called as upload_mimes.
// We don't do anything then.
if ( ! function_exists( 'fb_restrict_mime_types' ) ) {

	add_filter( 'upload_mimes', 'fb_restrict_mime_types' );
	/**
	 * Retrun allowed mime types
	 * 
	 * @see     function get_allowed_mime_types in wp-includes/functions.php
	 * @param   array Array of mime types
	 * @return  array Array of mime types keyed by the file extension regex corresponding to those types.
	 */
	function fb_restrict_mime_types( $mime_types ) {
	
		$mime_types = array(
			'pdf' =&gt; 'application/pdf',
			'doc|docx' =&gt; 'application/msword',
		);
		
		return $mime_types;
	}
}

// If the function exists this file is called as post-upload-ui.
// We don't do anything then.
if ( ! function_exists( 'fb_restrict_mime_types_hint' ) ) {
	// add to wp
	add_action( 'post-upload-ui', 'fb_restrict_mime_types_hint' );
	/**
	 * Get an Hint about the allowed mime types
	 * 
	 * @return  void
	 */
	function fb_restrict_mime_types_hint() {
		
		echo '&lt;br /&gt;';
		_e( 'Accepted MIME types: PDF, DOC/DOCX' );
	}
}
</code></pre>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/einschraenken-der-daten-typen-im-wordpress-upload/1338/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/einschraenken-der-daten-typen-im-wordpress-upload/1338/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
	
		<media:thumbnail url="http://wpengineer.com/wp-content/uploads/restrict-mime-type-300x187.png" />
		<media:content url="http://wpengineer.com/wp-content/uploads/restrict-mime-type-300x187.png" medium="image">
			<media:title type="html">restrict-mime-type</media:title>
		</media:content>
		<media:content url="http://wpengineer.com/wp-content/uploads/restrict-mime-type-hint-300x65.png" medium="image">
			<media:title type="html">restrict-mime-type-hint</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Trenne Logik von der Ausgabe, mittels Hooks in WordPress</title>
		<link>http://bueltge.de/trenne-logik-von-der-ausgabe-mittels-hooks-in-wordpress/1335/</link>
		<comments>http://bueltge.de/trenne-logik-von-der-ausgabe-mittels-hooks-in-wordpress/1335/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 08:19:14 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1335</guid>
		<description><![CDATA[MVC im Bezug auf WordPress und der Umgang mit Filtern um dem Ansatz von MVC zu folgen; ein kleiner Ausblick und Lösungsansatz zum Nachdenken.]]></description>
			<content:encoded><![CDATA[<p>Sobald innerhalb einer Funktion HTML für die Ausgabe definiert wird, muss das HTML von der Logik getrennt werden! In diesem Fall wird die Funktion doppelt definiert. Eine Funktion enthält ausschließlich Logiken und gibt Werten nur als return zurück. Die zweite Funktion enthält dann HTML, Prüflogik, Schleifen oder Hooks und gibt Werte als echo aus. Ok die Schlaueren werden jetzt sagen ey <a href="http://de.wikipedia.org/wiki/Model_View_Controller">MVC</a>, ich sage völlig richtig, aber WordPress verfolgt kein Konsequentes MVC-Pattern!<br />
<span id="more-1335"></span></p>
<h4>Warum WordPress kein MVC-Pattern konsequent verfolgt?</h4>
<p>Betrachteten wir WordPress auf eine beschränkte Sichtweise, kann man ein MVC-Pattern erkennen. Durch die Trennung der Themes (view) vom Core (Model) wird der Eindruck erweckt WordPress verfolgt ein MVC-Pattern. Aber dieses Muster ist nur im Fontend zu finden. Schauen wir allerdings etwas genauer hin sehen wir das es keine solche Logik für den Adminbereich gibt. Also muss die View für den Adminbereich irgendwo im Core verankert sein. Wir können auch feststellen das im Core selbst lose SQL-Query innerhalb von PHP zu finden ist. Gut, eine allgemeine Trennung von Ansicht und Logik ist nicht gleich MVC. Ein MVC-Pattern geht prinzipiell von einer Art objektorientierten Programmier-Paradigma aus, in WordPress sind diese auch vereinzelt zu finden, aber wir finden viel mehr prozedurale Programmier-Paradigmen als objektorientierte. Fazit WordPress selbst verfolgt kein MVC-Pattern, aber es ist durchaus möglich MVC-Prinziepien, wie im folgernden an zuwenden. </p>
<pre><code class="php">
function get_some_foo() {
	$my_foo = 'This is Foo!';
	return $my_foo;
}
 
function some_foo() {
	$foo = get_some_foo();
	echo $foo;
}
</code></pre>
<p>Warum ist das Sinnvoll? Wir wollen das die Funktion <code>some_foo()</code> eine vordefinierte Ausgaben zurückliefert. In einem anderen Template wollen wir aber das vordefinierte Verhalten der Funktion <code>some_foo()</code> verändern. Um nun beiden Anforderungen effektiv abzubilden, werden zwei Funktionen definiert. Die erste Funktion besteht einzig aus der elementaren Logik und gibt nur Werte als return zurück, ihr wird immer ein <code>get_…</code> vorangestellt. Die zweite Funktion enthält vordefinierte Darstellungsinformationen, das wiederum können HTML, Prüflogik, Schleifen oder ein Hook sein.</p>
<pre><code class="php">
function get_some_foo() {
	$foo_bar_array = array( 'Foo', 'Bar', 'FooBar', 'BarFoo' );
	$foo_bar_array = apply_filters( 'some_foo_array', $foo_bar_array );

	return $foo_bar_array ;
}
 
function some_foo() {
    $foo_list = '&lt;ul&gt;'; 
        
    foreach( get_some_foo() as $foo_key =&gt; $foo_value ){
		$foo_list .= '&lt;li&gt;' . $foo_value . '&lt;/li&gt;';        
    }
 
    $foo_list .= '&lt;/ul&gt;';
	
    echo apply_filters( 'some_foo', $foo_list );
}
</code></pre>
<p>Im vorherigen Beispiel wird in jeder der beiden Funktionen mit der Funktion <a href="http://codex.wordpress.org/Function_Reference/apply_filter"><code>apply_filters()</code></a> die möglichkeiten geschaffen, zurückgeliferte Werte später beliebig zu verändern. Eine Manipulation kann dann über die so definierten Hooks <code>some_foo_arra</code> oder <code>some_foo</code> erfolgen. Hier noch ein Beispiel, wie eine möglich Manipulation mit den beiden defineirten Hooks aussehen kann. </p>
<p>Im nächsten Code-Beispiel werden wir ein Array <code>$foo_bar_array</code> und das HTML von der Ausgbe Verändern. Dazu werden die beiden Hooks <code>some_foo_array</code> und <code>some_foo</code>, die mit <code>apply_filters( 'some_foo' ...</code> festgelegt wurden genutzt. Mit der Funktion <a href="http://codex.wordpress.org/Function_Reference/add_filter"><code>add_filter()</code></a> werden Filterfunktionen zur Weiterverarbeitung in der globalen Variable <code>$wp_filter</code> registriert.</p>
<pre><code class="php">
function get_my_some_foo( $foo_bar_array ) {
	$foo_bar_array[ count( $foo_bar_array ) + 1 ] = 'FuuBoo';
	
	return $foo_bar_array ;
}
 
function my_some_foo( $foo_list ) {
    $foo_list = str_replace( 'ul', 'ol', $foo_list ); 
	
    return $foo_list;
}
 
add_filter( 'some_foo_array', 'get_my_some_foo');
add_filter( 'some_foo', 'my_some_foo');
 
// do not forget, call some_foo()
some_foo();
</code></pre>
<p>Schauen wir uns noch kurz an was das ganze nun bewirkt. Was <code>some_foo()</code> ohne Manipulieren ausgibt sehen wir im folgenden Beispiel.</p>
<pre><code class="php">
function get_some_foo() {
	$foo_bar_array = array( 'Foo', 'Bar', 'FooBar', 'BarFoo' );
	$foo_bar_array = apply_filters( 'some_foo_array', $foo_bar_array );
	
	return $foo_bar_array ;
}
 
function some_foo() {
    $foo_list = '&lt;ul&gt;'; 
        
    foreach(get_some_foo() as $foo_key =&gt; $foo_value){
		$foo_list .= '&lt;li&gt;' . $foo_value . '&lt;/li&gt;';        
    }
 
    $foo_list .= '&lt;/ul&gt;';
	
    echo apply_filters( 'some_foo', $foo_list );
}
?&gt; 
 
//Ausgabe
&lt;ul&gt;
	&lt;li&gt;Foo&lt;/li&gt;
	&lt;li&gt;Bar&lt;/li&gt;
	&lt;li&gt;FooBar&lt;/li&gt;
	&lt;li&gt;BarFoo&lt;/li&gt;
&lt;/ul&gt;
</code></pre>
<p>Im nächsten Beispiel nutzen wir die in den Funktionen definierten Hooks <code>some_foo_array</code> und <code>some_foo</code> um dem Array ein weiteres Element hinzuzufügen und aus der ungeordneten Liste eine geordnete Liste zu machen.</p>
<pre><code class="php">
function get_my_some_foo( $foo_bar_array ) {
	$foo_bar_array[ count( $foo_bar_array ) + 1 ] = 'FuuBoo';
	
	return $foo_bar_array ;
}
 
function my_some_foo( $foo_list ) {
    $foo_list = str_replace( 'ul', 'ol', $foo_list ); 
	
    return $foo_list;
}
 
// register Hooks in the stack ($wp_filter)
add_filter( 'some_foo_array', 'get_my_some_foo');
add_filter( 'some_foo', 'my_some_foo');
?&gt;
 
//output
&lt;ol&gt;
	&lt;li&gt;Foo&lt;/li&gt;
	&lt;li&gt;Bar&lt;/li&gt;
	&lt;li&gt;FooBar&lt;/li&gt;
	&lt;li&gt;BarFoo&lt;/li&gt;
	&lt;li&gt;FuuBoo&lt;/li&gt;
&lt;/ol&gt;
</code></pre>
<p>Wie Läuft das jetzt mit dem <code>add_filter</code> und <code>apply_filters</code> im Programmfluss ab?<br />
Jeder Hook der ausgeführt werden soll wird mit <code>add_filter</code> oder <code>add_action</code> in der globalen Variable $<code>wp_filter</code> registriert. Wird nun im Programmablauf die Funktion <code>apply_filters()</code> aufgerufen wird anhand der übergeben Parameter die passende Filter-Funktion in der <code>$wp_filter</code> gesucht, wenn dieser mit <code>add_filter</code> dort registiert ist, wird die passende Funktion ausgeführt. Jetzt werden Werte Manipuliert und dann zurück an <code>apply_filters</code> übergeben.</p>
<p>Nehmen wir unser Beispiel von oben, dann sieht das wie folgt aus.</p>
<pre><code class="php">
&lt;?php
// the default function
function get_some_foo() {
	$foo_bar_array = array( 'Foo', 'Bar', 'FooBar', 'BarFoo' );
	$foo_bar_array = apply_filters( 'some_foo_array', $foo_bar_array );
 
	return $foo_bar_array ;
}
 
// the filter function
function get_my_some_foo( $foo_bar_array ) {
	$foo_bar_array[ count( $foo_bar_array ) + 1 ] = 'FuuBoo';
 
	return $foo_bar_array ;
}
 
// register function in $wp_filter
add_filter( 'some_foo_array', 'get_my_some_foo' );
?&gt; 
</code></pre>
<p>Ohne Hook-Funktionalität würde das Ganze wie folgt aussehen. Wir haben hier zwar wesentlich weniger Code aber dieser ist dafür nicht flexibel oder wiederverwendbar.</p>
<pre><code class="php">
&lt;?php
//Das ist unsere default Funktion
function get_some_foo() {
	$foo_bar_array = array( 'Foo', 'Bar', 'FooBar', 'BarFoo' );
	$foo_bar_array[ count( $foo_bar_array ) + 1 ] = 'FuuBoo';
  
	return $foo_bar_array ;
}
?&gt;
</code></pre>
<div class="contentdiv">
<h4>Gastbeitrag</h4>
<p><img src="http://wpengineer.com/wp-content/uploads/rene-reimann-150x150.jpg" alt="Rene Reimann Avatar" width="73" height="73" class="alignleft" /><br />
Dieser Beitrag ist aus der Feder von Renè Reimann - <a href="http://www.die-pixler.de/">die-pixler.de</a> und ist ein Beitrag zum Adventskalender auf <a href="http://www.die-pixler.de/">wpengineer.com</a> zum Thema WordPress.</p>
<p>Vielen Dank auch hier nochmal von meiner Seite an <a href="https://plus.google.com/u/0/116520935691953756105/about" title="Renes G+ Profile">Renè</a>.
</div>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/trenne-logik-von-der-ausgabe-mittels-hooks-in-wordpress/1335/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/trenne-logik-von-der-ausgabe-mittels-hooks-in-wordpress/1335/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:thumbnail url="http://wpengineer.com/wp-content/uploads/rene-reimann-150x150.jpg" />
		<media:content url="http://wpengineer.com/wp-content/uploads/rene-reimann-150x150.jpg" medium="image">
			<media:title type="html">Rene Reimann Avatar</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Optionen aus WordPress an JavaScripts übergeben #1</title>
		<link>http://bueltge.de/optionen-aus-wordpress-an-javascripts-uebergeben/1329/</link>
		<comments>http://bueltge.de/optionen-aus-wordpress-an-javascripts-uebergeben/1329/#comments</comments>
		<pubDate>Wed, 07 Dec 2011 09:19:50 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1329</guid>
		<description><![CDATA[Von PHP auf Werte in der DB zugreifen und an JavaScript übergeben, das JSON Objekt ist eine Möglichkeit dies zu tun und dieses Beispiel soll es verdeutlichen.]]></description>
			<content:encoded><![CDATA[<p>Auch in WordPress bleibt man nicht konstant in der PHP-Welt und so müssen Einstellungen, Daten aus der Datenbank an Scripte übergeben werden. In vielen Plugins findet man Lösungen in dem die <code>wp-load.php</code> geladen wird und damit der Zugriff auf alle Funktionen von WordPress. Vor geraumer Zeit hat <a href="http://ottopress.com/2010/dont-include-wp-load-please/">Otto (Samuel Wood)</a> auf diesen Umstand schon aufmerksam gemacht und der Artikel zeigt Lösungsansätze. Noch immer kommen dazu Fragen auf und noch immer erscheinen Plugins, die die wp-load.php genau auf Grund solcher Probleme laden.</p>
<p>Eine ähnliche Problematik stellt sich, wenn man den Source der Scripte nicht einfach in den Footer-Bereich von WordPress schreibt, sondern sauber in eine Datei auslagert und via <code>wp_enqueue_script()</code> inkludiert. Nur so kann WordPress diese Scripte mit verwalten, packen und optimiert ausliefern. Daher möchte ich in zwie Beispielen aufzeigen, wie man Daten von PHP an JS übergibt.<br />
<span id="more-1329"></span><br />
Die ersten Schnipsel nutzen die Übergabe von Werten via JSON; wobei ich die Werte aus der Datenbank mit den gängigen Mitteln in PHP hole und das Script direkt im head der Seite die Werte als Objekt ablegt.</p>
<pre><code>
add_action( 'admin_enqueue_scripts', 'fb_print_scripts' );

function fb_print_scripts() {
	global $current_screen;
	
	if ( isset( $current_screen -&gt; id ) &amp;&amp; ! in_array( $current_screen -&gt; id, array( 'post', 'page' ) ) )
		return;
	
	if ( is_plugin_active_for_network( plugin_basename( __FILE__ ) ) )
		$options = get_site_option( 'my_options_id' );
	else
		$options = get_option( 'my_options_id' );
	
	if ( ! $options )
		return;
	?&gt;
	&lt;script type=&quot;text/javascript&quot;&gt;
		var my_json_object = &lt;?php echo htmlspecialchars( json_encode( $options ) ); ?&gt;;
	&lt;/script&gt;
	&lt;?php
}
</code></pre>
<p>Die obige Funktion gibt nun die Werte aus der Datenbank als JSON-Objekt in den head im Backend, da im ersten Schritt der Funktion die Seite abgefragt wird. Mittes <code>$current_screen</code> wird geprüft, so dass nur ausgeliefert wird, wenn man auf der definierten Seiten (post, page) ist.</p>
<p>Der folgende Schritt ist üblich und best practice in WordPress um Scripte einzubringen. Dabei inkludiere ich das JS-File, welches dann auf das JSON-Objekt zugreift.</p>
<pre><code>
add_action( 'admin_enqueue_scripts', 'fb_admin_enqueue_scripts' );

function fb_admin_enqueue_scripts( $where ) {
	
	if ( ! in_array( $where, array( 'post.php', 'post-new.php', ) )
		return;
	
	$suffix = defined('SCRIPT_DEBUG') &amp;&amp; SCRIPT_DEBUG ? '.dev' : '';
	
	wp_enqueue_script(
		self :: get_textdomain() . '_script', 
		plugins_url( '/js/my_script' . $suffix. '.js', __FILE__ ), 	
		array( 'jquery', 'my_other_script' ),
		'',
		TRUE
	);
	
}
</code></pre>
<p>Im Script wird dann direkt auf das Objekt zugegriffen, welches verarbeitet wird.</p>
<pre><code class="javascript">
jQuery( document ).ready( function( $ ) {
	
	if ( typeof my_json_object == 'undefined' )
		return;

// debug in console of Browser
console.dir( my_json_object ); 

});
</code></pre>
<p>Eine weitere Lösung soll im Folgebeitrag der diesjährigen Serie vorgestellt werden; der Link folgt. - hier nun <a href="http://bueltge.de/daten-aus-wordpress-an-javascript-uebergeben-2/1334/">der Link</a>, nach dem der <a href="http://bueltge.de/daten-aus-wordpress-an-javascript-uebergeben-2/1334/" title="Daten aus WordPress an JavaScript übergeben #2">Artikel</a> online ist.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/optionen-aus-wordpress-an-javascripts-uebergeben/1329/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/optionen-aus-wordpress-an-javascripts-uebergeben/1329/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WordPress, WPCron und die richtige Zeit</title>
		<link>http://bueltge.de/wordpress-wpcron-und-die-richtige-zeit/1333/</link>
		<comments>http://bueltge.de/wordpress-wpcron-und-die-richtige-zeit/1333/#comments</comments>
		<pubDate>Tue, 06 Dec 2011 08:38:59 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1333</guid>
		<description><![CDATA[Probleme mit dem WordPress Cron und der richtigen Zeit muss man wissen, dann lassen sie sich einfach umgehen.]]></description>
			<content:encoded><![CDATA[<p>WordPress bietet eine Pseudo-Cronjob-Funktionalität, welche es dem Entwickler erlaubt zeitgesteuerte Events auszuführen. Zum Beispiel funktioniert die komplette Update-Notification darüber. In diesen sogenannten <em>Scheduled Events</em> kann man auch selbst eigene Jobs definieren. Dabei sollte man aber auf eine wichtige Sache achten: Die Zeit.<br />
<span id="more-1333"></span><br />
Die <code>wp-cron.php</code> arbeit etwas abseits vom Core und lädt nur die wichtigsten Sachen und lässt sämtliche Einstellungen von WordPress offen. Die in <em>Settings -> General</em> eingestellte Timezone wird dabei nicht berücksichtigt. <code>wp-cron.php</code> läuft also definitiv und unveränderlich auf UTC.</p>
<p>Das heisst also folgendes: Sind wir in der Zeitzone Berlin ist die lokale Zeit UTC+1. Tragen wir ein Scheduled Event ein, hängt er immer eine Stunde nach. Um das zu ändern hilft folgende Funktion:</p>
<pre><code>
function get_offset_to_gmt_in_seconds() {

	$current_timezone_offset = get_option( 'gmt_offset' );
	$offset = $current_timezone_offset * 3600;

	return $offset;
}
</code></pre>
<div class="contentdiv">
<h4>Gastbeitrag</h4>
<p><img src="http://wpengineer.com/wp-content/uploads/dasllama-150x150.png" alt="Thomas Herzog Avatar" title="twitter_bigger" width="73" height="73" class="alignleft size-full wp-image-2132" /><br />
Dieser Beitrag ist aus der Feder von Thomas Herzog - <a href="http://hughwillfayle.de/">hughwillfayle.de</a> und ist ein Beitrag zum Adventskalender auf <a href="http://wpengineer.com/">wpengineer.com</a> zum Thema WordPress.<br />
Thomas Herzog ist Webentwickler im Team der <a href="http://inpsyde.com/">WordPress Agentur - Inpsyde GmbH</a>.</p>
<p>Vielen Dank auch hier nochmal von meiner Seite an <a href="http://profiles.wordpress.org/users/hughwillfayle/">Thomas</a>.
</div>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wordpress-wpcron-und-die-richtige-zeit/1333/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-wpcron-und-die-richtige-zeit/1333/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:thumbnail url="http://wpengineer.com/wp-content/uploads/dasllama-150x150.png" />
		<media:content url="http://wpengineer.com/wp-content/uploads/dasllama-150x150.png" medium="image">
			<media:title type="html">twitter_bigger</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Einstellungen setzen bei WordPress Multisite</title>
		<link>http://bueltge.de/einstellungen-setzen-bei-wordpress-multisite/1331/</link>
		<comments>http://bueltge.de/einstellungen-setzen-bei-wordpress-multisite/1331/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 07:44:50 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1331</guid>
		<description><![CDATA[WordPress Plugin-Optionen sind wichtig, das Setzen unter Multisite  und der Single-Installation hat einige Besonderheiten die man wissen muss und schon ist ein Plugin schnell für beiden Formen vorbereitet.]]></description>
			<content:encoded><![CDATA[<p>Die Nutzung von WordPress für diverse Blogs im Netzwerk ist sinnvoll, kann diverse Schritte vereinfachen und wird immer beliebter. Sei es um klassische Scenarios des Bloghosting durchzuführen oder mehrsprachige Landschaften zu erstellen bis hin zu anders getrimmten Ideen. Daher ist es auch für Pluginentwickler wichtig, die Funktionen zu nutzen und eigene Plugins dafür zu erweitern oder speziell zu entwicklen.</p>
<p>Vielen ist gleich, aber nicht alles und in diesem kleinen Beitrag möchte ich kurz darstellen, wie man beim Aktivieren eines Plugins gesetzte Einstellungen in der Datenbank absetzt. <span id="more-1331"></span>Der optimale Fall dafür ist eine Funktion von WordPress, die beim Aktivieren eines Plugins getriggert wird <code>register_activation_hook()</code>. Diese Funktion wird üblicher weise beim init oder im Construktor des Plugins aufgerufen. In der damit aufgerufenen Funktion stecken die Funktionen um die Voreinstellungen in WordPress in der Tabelle options abzulegen - <code>add_option()</code>. In Multisite gibt es auch dafür eine Funktion - <code>add_site_option()</code>.</p>
<p>Nun gilt es nur noch zu trennen, ob das Plugin innerhalb des Network, in der Verwaltung der Multisite-Installation aktiviert wird, oder ob es lediglich in einer der Blogs des Netzwerkes oder einer Single-installation genutzt wird. Dafür gibt es aktuell keine Funktion, aber einen Wert, der übergeben wird. Das nachfolgenden Beispiel verdeutlicht es sicher.</p>
<pre><code>
register_activation_hook( __FILE__, 'fb_add_config' );
function fb_add_config() {

	$data = array( 
		'active' =&gt; 0, 
		'radio'  =&gt; 0,
		'link'   =&gt; 1, 
		'theme'  =&gt; 1, 
		'role'   =&gt; 'administrator', 
		'unit'   =&gt; 1, 
	);
	// if is active in network of multisite
	if ( is_multisite() &amp;&amp; isset($_GET['networkwide']) &amp;&amp; 1 == $_GET['networkwide'] ) {
		add_site_option( 'my_settings_id', $data );
	} else {
		add_option( 'my_settings_id', $data );
	}
}
</code></pre>
<p>Die Abfrage des Wertes in der globalen <code>GET</code> ist sicher schlüssig und die Abbildung dieser Abfrage kann sauber in die bereits vor geraumer Zeit <a href="http://wpengineer.com/2221/wordpress-multisite-plugins-and-activation/">angesprochene Lösung für Multisite</a> und Settings von Thomas integriert werden.<br />
Um weitere Abfragen im Umfeld Multisite zu lösen und die Einstellungen wieder zu entfernen, oder Menus im Network-Admin-Bereuch zu integrieren, ist die Funktion <code>is_plugin_active_for_network()</code> nützlich.</p>
<p>So lassen sich beispielsweise die Optionen wieder kontrolliert in Abhängigkeit der Installationsform von WordPress holen.</p>
<pre><code class="php">
if ( is_multisite() &amp;&amp; is_plugin_active_for_network( plugin_basename( __FILE__ ) ) )
	$values = get_site_option( 'my_settings_id' );
else
	$values = get_option( 'my_settings_id' );
</code></pre>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/einstellungen-setzen-bei-wordpress-multisite/1331/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/einstellungen-setzen-bei-wordpress-multisite/1331/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>XML zu Array mit PHP</title>
		<link>http://bueltge.de/xml-zu-array-mit-php/1330/</link>
		<comments>http://bueltge.de/xml-zu-array-mit-php/1330/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 07:44:50 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[WP]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1330</guid>
		<description><![CDATA[Das Auslesen von XML ist mit PHP 5 extrem vereinfacht worden, hier eine Lösung um nach dem Auslesen einfach ein Array in PHP zur Verfügung zu haben.]]></description>
			<content:encoded><![CDATA[<p>Im Bezug auf das Importieren von Daten wird nicht selten auf XML gesetzt und im Anschluss muss ein Array an WordPress übergeben werden, welches in die Datenbank übergibt. Im Umfeld von Optionen in WordPress ist das gern genutzt.<br />
Um nach dem Parsen von XML ein Array in PHP zu bekommen, findet man immer wieder diverse Threads und Fragen. Im folgenden daher ein einfache und schnelle Lösung, die seit PHP 5 wunderbar funktioniert.<br />
<span id="more-1330"></span></p>
<pre><code class="php">
// only for errors an parse
$filename = preg_replace( 
    &quot;/\&lt;\!\[CDATA\[(.*?)\]\]\&gt;/ies&quot;,
    &quot;'[CDATA]' . base64_encode('$1') . '[/CDATA]'&quot;,
    $filename
);
// load cml file
$xml      = simplexml_load_string( $filename );
$json     = json_encode( $xml );
$options  = json_decode( $json,TRUE );
// see result
var_dump( $options );

// update in WordPress
update_option( 'my_settings_id', $options );
</code></pre>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/xml-zu-array-mit-php/1330/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/xml-zu-array-mit-php/1330/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Scripte von WordPress debuggen</title>
		<link>http://bueltge.de/scripte-von-wordpress-debuggen/1301/</link>
		<comments>http://bueltge.de/scripte-von-wordpress-debuggen/1301/#comments</comments>
		<pubDate>Sun, 04 Dec 2011 08:18:41 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1301</guid>
		<description><![CDATA[Die Ausgabe der verwalteten Scripte und Stylesheets kann mit der kleinen Funktion recht schnell gesichtet werden, eine kleine Lösung um Debuggen zu vereinfachen.]]></description>
			<content:encoded><![CDATA[<p>WordPress kann sich komfortabel um das verwalten von Scripten und Stylesheets kümmern, Vorraussetzung ist die Nutzung der Möglichkeiten rund um <code>wp_enqueue_script()</code> und <code>wp_enqueue_style()</code>. Will man sich um die darin übergeben Dateien kümmern, so kann eine kleine Funktion helfen und die integrierten Scripte und Styles zurück geben.<br />
<span id="more-1301"></span></p>
<h4>Einige Hintergründe</h4>
<p>Scripte und Stylesheets kann man in WordPress auf verschieden Art in die Ausgabe einbringen, das gilt für Backend und Frontend. Dabei ist das klassiche Verfahren eines meta-Elementes im head oder footer-Bereich nicht zu empfehlen, denn WordPress kann seit Version 2.1 die Verwaltung der Scripte und Stylesheets übernehmen - Vorraussetzung ist die Nutzung der Möglichkeiten rund um <code>wp_enqueue_script()</code> und <code>wp_enqueue_style()</code>. Damit werden diverse Vorteile direkt duch den WordPress-Kern übernommen; komprimieren und gemeinsames Ausliefern in jeweils einer Datei alle Scripte und Stylesheets. Ebenso kümmert sich WordPress darum, dass jedes Script nur einmal in der Auslieferung vorhanden ist; also nicht ein bekanntes Problem wie die mehrfache Verwendung von jQuery zulassen.<br />
Aktuell gibt es dazu immer wieder ähnliche Ansätze mit diversen JS-Lösungen. WordPress kann sich darum kümmern und optimiert ausliefern, jedes Script nur einmal und einfach via ID auf die Scripte zugreifen. </p>
<p>Um nun aber die includierten Scripte und Stylesheets sauber auszuwerten, bedarf es einiger Zugriffe oder die kleine folgende Lösung und schon sind alle eingebundenen Dateien in einer Liste. Die folgenden Funktion kippt die Adressen  einfach in den Footer von WordPress, Frontend - <code>wp_footer</code> und Backend - <code>admin_footer</code>, dies kann via Hook natürlich angepasst werden; dies soll nur eine Idee sein und einen Ansatz liefern.<br />
Parallel habe ich es im Plugin <a href="http://wordpress.org/extend/plugins/debug-objects/">Debug Objects</a> integriert und die neue Version sollte in den weihnachtlichen Tagen online gehen.</p>
<p><img class="centered" src="http://bueltge.de/wp-content/images/wp/wp-scripts-styles.png" alt="Beispiel für Script und Stylesheet Listings" width="450" height="598" /></p>
<pre><code>
// view on frontend footer
add_action( 'wp_footer', 'fb_urls_of_enqueued_stuff' );
// view on backend footer
add_action( 'admin_footer', 'fb_urls_of_enqueued_stuff' );
// get engueued scripts and style urls
function fb_urls_of_enqueued_stuff( $handles = array() ) {
	global $wp_scripts, $wp_styles;
	
	// scripts
	foreach ( $wp_scripts -&gt; registered as $registered )
		$script_urls[ $registered -&gt; handle ] = $registered -&gt; src;
	// styles
	foreach ( $wp_styles -&gt; registered as $registered )
		$style_urls[ $registered -&gt; handle ] = $registered -&gt; src;
	
	if ( empty( $handles ) ) {
		$handles = array_merge( $wp_scripts -&gt; queue, $wp_styles -&gt; queue );
		array_values( $handles );
	}
	$output = '';
	foreach ( $handles as $handle ) {
		if ( ! empty( $script_urls[ $handle ] ) )
			$output .= $script_urls[ $handle ] . '&lt;br&gt;';
		if ( ! empty( $style_urls[ $handle ] ) )
			$output .= $style_urls[ $handle ] . '&lt;br&gt;';
	}
	
	echo $output;
}
</code></pre>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/scripte-von-wordpress-debuggen/1301/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/scripte-von-wordpress-debuggen/1301/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/wp/wp-scripts-styles.png" />
		<media:content url="http://bueltge.de/wp-content/images/wp/wp-scripts-styles.png" medium="image">
			<media:title type="html">Beispiel für Script und Stylesheet Listings</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>unserialize() Error at offset... Einige Ansätze</title>
		<link>http://bueltge.de/unserialize-error-at-offset-einige-ansaetze/1332/</link>
		<comments>http://bueltge.de/unserialize-error-at-offset-einige-ansaetze/1332/#comments</comments>
		<pubDate>Sat, 03 Dec 2011 01:16:10 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1332</guid>
		<description><![CDATA[Nicht immer ist das Problem offensichtlich und dazu gehört eine Fehlerausgabe im Bezug auf die Funktion unserialize(). In diesem Umfeld kommt es auf Grund unsauberer Daten im übergebenen Wert ab und an zu Problemen. Schaut man sich im Netz dazu um, findet man unzählige Hilfesuche und wenige Antworten, da meist das Problem in Quelle liegt, [...]]]></description>
			<content:encoded><![CDATA[<p>Nicht immer ist das Problem offensichtlich und dazu gehört eine Fehlerausgabe im Bezug auf die Funktion <code>unserialize()</code>. In diesem Umfeld kommt es auf Grund unsauberer Daten im übergebenen Wert ab und an zu Problemen. Schaut man sich im Netz dazu um, findet man unzählige Hilfesuche und wenige Antworten, da meist das Problem in Quelle liegt, im Wert der übergeben wird. Aber nicht immer hat man darauf Einfluss, insbesondere bei Debugginghelfern kommen da unterschiedliche Inhalte.</p>
<p>Um einigen Hilfesuchenden zu helfen, hier einige Lösungsvorschläge, die man abarbeiten kann. Einige sind nur im Zusammenhang mit WordPress zu nutzen, da die Funktion aus dem Core kommt. Ähnliche Sachen gibt es natürlich auch ohne WP.<br />
<span id="more-1332"></span><br />
Die Erste Lösung ist direkt in den Kommentaren von <a href="http://www.php.net/manual/de/function.unserialize.php#71270">PHP.net</a> zur Funktion hinterlegt. </p>
<pre><code class="php">
$object = preg_replace( '!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $object );
</code></pre>
<p>Ähnlich geht der folgende Ansatz:</p>
<pre><code class="php">
$object = preg_replace( '/;n;/', ';N;', $object );
</code></pre>
<p>Alternativ schwören <a href="http://ryanbosinger.com/blog/2009/php-unserialize-error-at-offset-simple-solution/">andere</a> auf die Verwendung von <code>trim()</code></p>
<pre><code class="php">
$object = trim( $object );
</code></pre>
<p>Aber auch mit diesen Lösungen kommt man nicht immer ans Ziel und die Abfrage, ob es sich um serialisierte Daten handelt muss her. Normalerweise kümmert sich <code>unserialize()</code> darum, aber wie gesagt; nicht immer hilft dies. WordPress stellt eigene Funktionen dafür zur Verfügung.</p>
<ul>
<li><code>is_serialized( $data )</code></li>
<li><code>is_serialized_string( $data )</code></li>
</ul>
<p>Mit diesen beiden Funktion kann sauber abgefragt werden.<br />
Aber auch da kann man mit einem einfachen Snippet ran; eventuell nicht der Weisheit letzter Schluss, daher lieber die Funktionen nutzen oder außerhalb von WP eine eigene Funktion, siehe <a href="https://gist.github.com/1415653" title="gist.github.com/1415653">Gist 1415653</a>.</p>
<pre><code class="php">
$is_serialized = preg_match( "/^(O:|a:)/", $object );
</code></pre>
<p>Vielleicht hilft es dem einen oder anderen, ansonsten nutze ich es als Gedächtnisstütze.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/unserialize-error-at-offset-einige-ansaetze/1332/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/unserialize-error-at-offset-einige-ansaetze/1332/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WordPress Plugins automatisch aktivieren</title>
		<link>http://bueltge.de/wordpress-plugins-automatisch-aktivieren/1258/</link>
		<comments>http://bueltge.de/wordpress-plugins-automatisch-aktivieren/1258/#comments</comments>
		<pubDate>Fri, 02 Dec 2011 09:18:24 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1258</guid>
		<description><![CDATA[WordPress Plugins über eine eigene Funktion aktivieren kann nützlich sein, ein kleiner Ansatz sorgt für eine Grundlösung.]]></description>
			<content:encoded><![CDATA[<p>WordPress speichert die aktiven Plugins in der Datenbank, Tabelle <code>options</code>, Feld <code>activate_plugins</code>; damit ist es ein leichtes diesen Wert zu verändern und so kann man sauber diverse Plugins von WordPress aktivieren lassen; sei es als Plugin-Lösung nach dem Einrichten einer neuen Installation oder weil eigene Plugins einge andere Plugins brauchen.<br />
<span id="more-1258"></span><br />
Im folgenden eine kleine Beispiel-Lösung, die die Ansätze liefert. Dabei ist wichtig, dass nicht die Plugin-Namen genutzt werden, sondern der String der Datei; der auch in diversen Hooks benötigt wird. Im Anschluss eine einfache Lösung um an diesen String im Backend zu kommen, nicht in die Funktion integriert und rein eine schnelle Hilfe; aber mehr soll der Beitrag auch nicht sein - Copy &#038; Paste ja, aber bedacht.</p>
<pre><code>
// only example; control about register_activation_hook() 
add_action( 'admin_init', 'fb_activate_plugins' );
function fb_activate_plugins() {
	
	if ( ! current_user_can('activate_plugins') )
		wp_die(__('You do not have sufficient permissions to activate plugins for this site.'));
	$plugins = FALSE;
	$plugins = get_option('active_plugins'); // get active plugins
	
	if ( $plugins ) {
		// plugins to active
		$pugins_to_active = array(
			'hello.php', // Hello Dolly
			'adminimize/adminimize.php', // Adminimize
			'akismet/akismet.php' // Akismet
		);
		
		foreach ( $pugins_to_active as $plugin ) {
			if ( ! in_array( $plugin, $plugins ) ) {
				array_push( $plugins, $plugin );
				update_option( 'active_plugins', $plugins );
			}
		}
		
	} // end if $plugins

}
</code></pre>
<p>Die nachstehende Funktion und dessen Hook sorgen für eine direkte Ausgabe auf der Plugin-Seite im Backend des Strings zur Plugin-Datei, also bitte nur zum schnellen Finden nutzen.</p>
<pre><code>
add_filter( 'plugin_row_meta', 'fb_get_plugin_string' , 10, 4 );
function fb_get_plugin_string( $plugin_meta, $plugin_file, $plugin_data, $status ) {
	// echo plugin file string
	echo '&lt;code&gt;' . $plugin_file . '&lt;/code&gt;&lt;br&gt;';
	return $plugin_meta;
}
</code></pre>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wordpress-plugins-automatisch-aktivieren/1258/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-plugins-automatisch-aktivieren/1258/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WordPress Plugin für die Nutzung von Content-Bausteinen</title>
		<link>http://bueltge.de/wordpress-plugin-fuer-die-nutzung-von-content-bausteinen/1317/</link>
		<comments>http://bueltge.de/wordpress-plugin-fuer-die-nutzung-von-content-bausteinen/1317/#comments</comments>
		<pubDate>Tue, 04 Oct 2011 20:45:59 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Plugin]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1317</guid>
		<description><![CDATA[Textbausteine, Code-Schnipesel, wiederkehrender Content kann mit Hilfe einer zentralen Verwaltung viel Ärger ersparen. Das Plugin Snippet ist für diese Aufgabe erstellt worden und soll hier kurz vorgestellt werden.]]></description>
			<content:encoded><![CDATA[<p><a href="http://wpplugins.com/plugin/281/snippets/" title="WP Pluign Snippet"><img class="alignright" src="http://bueltge.de/wp-content/images/wp/snippets-plugin.png" alt="Snippet Plugin" /></a><br />
Wer über den klassischen Content hinaus mit WordPress blogt bzw. jede erdenkliche Form von Inhalten publiziert, wird irgendwann an den Punkt kommen, wo wiederkehrende Inhalte benötigt werden, sei es im einfachsten Fall ein Bild bis hin zu komplexen Markup. Das Verbannen von lästigen Codeblöcken ist insbesondere dann interessant, wenn man diese Bausteine verschiedenen Usern zur Verfügung stellen will und wenn man sie zentral pflegen möchte. So können bestimmte Inhalte sicher gestellt werden, einmal an einer Stelle gepflegt werden und verschiedenen Anwendern zur Verfügung gestellt werden.<br />
<span id="more-1317"></span><br />
Für diese Anwendung ist das Plugin <a href="http://wpplugins.com/plugin/281/snippets/">Snippet</a> entstanden; es verwaltet Schnipsel in jeder erdenklicher Form und kann über verschiedene Mechanismen an unterschiedlicher Stelle eingesetzt werden. So kann via Shortcode, via PHP oder via Widget der Inhalt eingebunden werden. Der jeweilige Inhalt muss nicht eindeutig spezifiziert werden, es wird via ID auf den Inhalt zugegriffen. Der Shortcode und die ID werden direkt am Element dargestellt, so dass es keine Schwierigkeiten in der Nutzung geben sollte. </p>
<p><img src="http://bueltge.de/wp-content/images/snippet-meta-data.png" alt="" title="snippet-meta-data" width="285" height="179" class="aligncenter size-full wp-image-1318" /></p>
<p>Ebenso werden neue Berechtigungsobjekte angelegt, so dass man die Rechte der Schnipsel auf unterschiedliche Rollen verteilen kann. Über eine eigene Strukturierung mittels Taxonomie können die Schnipsel gefiltert werden.</p>
<p>Das Plugin ist mein erster Versuch im Bereich der Premiumplugins und gibt es schon länger, lediglich die Kurzvorstellung hier im Blog hat immer gefehlt und so hole ich dies mit diesem Artikel nach. Ideen und Hinweise sind sehr willkommen.</p>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wordpress-plugin-fuer-die-nutzung-von-content-bausteinen/1317/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-plugin-fuer-die-nutzung-von-content-bausteinen/1317/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/wp/snippets-plugin.png" />
		<media:content url="http://bueltge.de/wp-content/images/wp/snippets-plugin.png" medium="image">
			<media:title type="html">Snippet Plugin</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/snippet-meta-data.png" medium="image">
			<media:title type="html">snippet-meta-data</media:title>
			<media:thumbnail url="http://bueltge.de/wp-content/images/snippet-meta-data-200x179.png" />
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WordPress Custom Post Types in den Feed holen</title>
		<link>http://bueltge.de/wordpress-custom-post-types-in-den-feed-holen/1279/</link>
		<comments>http://bueltge.de/wordpress-custom-post-types-in-den-feed-holen/1279/#comments</comments>
		<pubDate>Tue, 04 Oct 2011 09:54:31 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[custom post type]]></category>
		<category><![CDATA[Feed]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1279</guid>
		<description><![CDATA[Der Inhalt von Custom Post Types kann ebenso relevant sein und damit im Main-Feed gewollt sein, ein kleiner Schnipsel kann dies erledigen.]]></description>
			<content:encoded><![CDATA[<p>WordPress erstellt die Feed-Inhalte automatisch (optional in der Parameterübergabe der Funktion zu bestimmen) auch bei Verwendung der Custom Post Types; die sich recht stark in der Nutzung befinden.</p>
<p>Dabei werden aber die Inhalt nicht in den Standard-Feed geholt, sondern ein eigenständiger Feed entsteht. Um die Inhalte der CPT in den Haupt-Feed von WordPress zu holen, muss via Hook nur der CPT bekannt gegeben werden; am besten direkt im Plugin, welches sich um die CPT kümmert. Der folgenden kleine Schnipsel erledigt dies beispielsweise.<br />
Dabei werden in den Parametern nur einige Werte übergeben, die dafür sorgen, dass nur Artikel integriert werden, die öffentlich sind und die Recht von post haben; dies Parameter kann man natürlich anpassen; siehe Codex zur Funktion <a href="http://codex.wordpress.org/Function_Reference/get_post_types" title="Codex Doku"><code>get_post_types()</code></a>.<br />
<span id="more-1279"></span></p>
<pre><code>
// add custom post type to wp post-feed
add_action( 'request', 'fb_add_to_feed' );

// add to post-feed
function fb_add_to_feed ( $request ) {
	
	if ( isset( $request['feed'] ) &#038;& ! isset( $request['post_type'] ) ) {
		$request['post_type'] = get_post_types ( $args = array (
			'public'          =&gt; TRUE,
			'capability_type' =&gt; 'post'
		) );
	}
	
	return $request;
}
</code></pre>
<p>Damit werden dem Standard-Feed zu post die Daten übergeben; der Query dafür wird quasi verändert. Wenn es aber verschiedene CPTs gibt und man diese im Feed definieren will, dann muss der CPT übergeben werden, dazu Beispiel zwei ansehen.<br />
In diesem Schnipsel werden in einem Array die CPT definiert und damit an den Feed übergeben.</p>
<pre><code>
// add custom post type to wp post-feed
add_action( 'request', 'fb_add_to_feed' );

// add to feed
function fb_add_to_feed ( $request ) {
	
	if ( isset( $request['feed'] ) &#038;& ! isset( $request['post_type'] ) ) {
		$request['post_type'] = array( 
			'post', 'stippet', 'archive', 'movies'
		);
	}
	
	return $request;
}
</code></pre>
<p>Der obige Schnipsel ändert den Query dahingehend, dass die Post Typen definiert werden, die im Feed sein sollen, während im ersten beispiel alles zum Feed addiert wird.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wordpress-custom-post-types-in-den-feed-holen/1279/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-custom-post-types-in-den-feed-holen/1279/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WordCamp 2011 - Eindrücke eines Getriebenen</title>
		<link>http://bueltge.de/wordcamp-2011-eindruecke-eines-getriebenen/1313/</link>
		<comments>http://bueltge.de/wordcamp-2011-eindruecke-eines-getriebenen/1313/#comments</comments>
		<pubDate>Mon, 26 Sep 2011 21:31:33 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[WordCamp]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1313</guid>
		<description><![CDATA[Das WordCamp ist für jeden anders, meine Eindrücke im Fließtext in diesem Artikel.]]></description>
			<content:encoded><![CDATA[<p>WordPress ist ein Teil meines Alltags geworden, mit WordPress wurde auch das Nutzen des Webs aktiver; sei es als aktiver Entwickler - aus Spaß und Kundenwunsch - oder auch nur als kleines Teil in einem großen Netzwerk.<br />
Ich habe schon mehrfach die Aussage getroffen, wie ich sehr ich das Web schätze, dies liegt nicht allein an den Möglichkeiten und der schnellen Entwicklung, sondern eher an der Möglichkeit auf neue Leute zu treffen, die entweder gleiche Interessen haben oder sich irgendwo im Geiste mit mir treffen. Um dieses Netzwerk analog für mich zu bestätigen, sind zentrale Treffen eine wunderbare Sache. Und so ist für mich auch die Erwartung des WordCamp voll erfüllt; ich habe Leute getroffen, die ich zum Teil schon ewig kenne - gefühlt, nicht wirklich; das Netz bringt mir die Leute nah. Ich habe Leute getroffen, die für meine Artikel einfach mal Danke sagen, persönlich, ohne Spamschutz und mit direkter Nähe - einfach toll. Dafür liebe ich diese Camps, egal in welcher Form.<br />
Ich will in der Lobby sitzen, am besten dauerhaft, und nach und nach kommen die Leute hinzu, die mich ansprechen wollen, oder die ich suche - leider fehlt oft die Zeit dazu und da ich ein Teil des Organisationsteams bin, wird noch mehr Zeit genommen. Wie immer, ich bin auf der Flucht, von einem Thema zum anderen und die Fähigkeit des Multitasking hilft kein bischen.<br />
<span id="more-1313"></span><br />
Schon Wochen im Vorfeld freue ich mich, von Freitag - Sonntag möchte ich nur reden, mich austauschen und Spaß haben, Spaß mit Frunden, die ich meist nur via Skype oder Telefon hören kann. Dazu gehören die Kollegen von Inpsyde ebenso, wie die Freunde, die ich über das Web gefunden habe. Aber die Zeit reicht nicht.</p>
<h3>Los geht's</h3>
<p>Die Anreise startet am Freitag, wir sind zum Teil ab 5 unterwegs und Köln erwartet uns; der Urlaub dafür schon lange eingereicht. Die Tage sind voller Pflichten und die Nächte zu kurz um alles nach zuholen. Schon im Bus können wir reden, uns austauschen und das Gefühl der Familie bei <a href="http://inpsyde.com">Inpsyde</a> bestärkt mich - das gefällt, egal wie unsere Stärken und Schwächen aussehen. Wir haben vieles gemein, Interesse an ähnlichen Themen und die Bereitschaft, sich auf den Anderen im Team einzulassen. Gleich geht es mir mit den Nahestehenden, die im Netzwerk aktiv sind und die ich suche um zu Reden, um Abzufragen, um mich auszutauschen, um zu Lernen, um die Vorzüge der Freundschaft zu genießen.</p>
<p>Die Menschen in dieser Wolke könnten unterschiedlicher nicht sein, trotzdem lassen wir uns auf uns ein, immer wieder und viel zu wenig direkt und analog. Das WordCamp ist ein Teil dieser Treffen und vielleicht sollte ich mir dir Frage stellen, ob ich daran noch Teil haben will; soll ich mich engagieren und organisieren; können wir uns nicht einfach ohne den Rahmen treffen; die Community außen vor lassen? Nein - meine ich, weil aus der Community die Kontakte entstehen, weil ich neue Gesichter finde und weil jeder einmal beginnt und hoffentlich ebenso von anderen lernen kann, wie ich. </p>
<h3>Sessions</h3>
<p>Keine der Sessions auf dem WordCamp gibt mir neue Informationen, dies beziehe ich auf die Themen, die ich besucht habe. Die wiederum sind entweder zufällig entstanden oder aus anderen Eckpunkten. Das Team, in dem ich mich befinde, das Netzwerk, mit dem ich mich austausche gibt mehr Infos und Lösungen, als das WordCamp bieten kann - vielleicht wird dies mal anders, aber darauf habe ich keinen Einfluss.</p>
<p>Trotzdem möchte ich ein Teil beitragen, ich möchte Input für mich und möchte einigen Wünschen nachkommen. Daher wurde eine Session zum Thema <a href="http://bueltge.de/wordpress-mehrsprachig/" title="Die Slides zur Session">Mehrsprachigkeit mit WordPress</a> erstellt. Die Frage dazu kam schon öfter und ich habe die auch schon auf anderen WordCamps dargelegt, eben nur auf dem Flur oder dem direkten Gespräch; im Netz findet man dazu genug Information. Da wir die Lösung oft für Kunden nutzen, leider nicht immer identisch und immer auf den Kunden zugeschnitten, ist die Idee gereift, dass wir eine Lösung auskoppeln wollen, die die Community frei nutzen können. Parallel soll es eine Premiumversion geben, die diverse Zusatzfeatures inne hat. Eine Session auf einem WordCamp gibt aus meiner Sicht den besten und direkten Kontakt zu den Nutzern, so dass ich also unsere Ideen abfragen kann, Bestätigungen oder Ideen einhole. Die Werbung für das Produkt ist maginal, die erreiche über diverse Blogs besser; wenn wir dies wollten. Das Feedback erscheint mir gut und daher wird es die Lösung hoffentlich in wenigen Wochen geben.</p>
<p><a href="http://bueltge.de/wp-content/images/2011-09-wordcamp-deutschland-koeln-046.jpg"><img src="http://bueltge.de/wp-content/images/2011-09-wordcamp-deutschland-koeln-046-450x300.jpg" alt="Bei der Session" title="2011-09-wordcamp-deutschland-koeln-046" width="450" height="300" class="aligncenter size-medium wp-image-1314" /></a></p>
<h3>Wünsche sind keine Ziele</h3>
<p>Im Zusammenhang der Sessions würde ich mehr Mut wünschen, aber auch mehr Vorbereitung und ein aktives Publikum! Ich würde mir ebenso mehr Themen wünschen, die aktueller Natur sind bspw. html5 oder JavaScript-Lösungen. WordPress ist eine Applikation im Web, mit der man einiges machen kann und sie bedarf in erster Linie die Kenntnis der Entwickler, die das Ziel der Site oder des Kunden umsetzen und parallel alle Themen aus dem Webumfeld. Darum muss und will ich auf einem WordCamp nicht nur Themen hören, die direkt mit WordPress zu tun haben. Eine Ausnahme macht <a href="http://sprungmarker.de/" title="Sylvia Egger">Silvia</a> für mich, da Sie Themen beleuchtet, die ich wichtig finde und nicht perfekt beherrsche - den Zusammenhang WP kann sie gern weg lassen; ich will die Infos wie man vorgeht und was man alles beachten muss. Bei Nachfragen beantwortet Silvia dies aber gern.</p>
<h3>Workshops?</h3>
<p>Es gibt die Idee im Team eventuell Workshops anzubieten, da man immer wieder hört, ich will was mitnehmen. Aber dazu braucht man Referenten, die das Wissen auch vermitteln können und nur wenige wollen dies kostenfrei tun. Parallel kommt das Problem der Zeit dazu, da man in einer 45 minütigen Session nicht viel vermitteln kann, geschweige denn den Charakter des Workshops aufnehmen. Dazu bedarf es mehr Zeit. Ich schule Entwickler in und mit WordPress in der Regle mindestens 2 Tage und gehe dabei direkt auf die Themen ein, die im Vorfeld aus den Reihen der Entwickler kommen. Nur schwer abbildbar im Rahmen eines WordCamp, ohne die Teilnehmer vorher zu kennen.</p>
<h3>Community hin oder her</h3>
<p>Das WordCamp ist eine Veranstaltung aus der Community und für die Community rund um WordPress. Darum sind wir offen für Ideen und Unterstützung. Ab und an bekommen wir aus den Reihen dazu auch Hinweise, die wir beachten und nutzen, wenn möglich. Die reine Kritik ist erhört, aber hilft uns nicht - ich wünsche mir konstruktive Kritik. Jeder macht Fehler, dazu sind sie da. Ich mache sie gern, weil ich daraus lerne und ich stehe dazu. Wer keine Fehler macht, der ist in meinen Augen entweder nicht ehrlich, oder die ihm gestellten Aufgaben sind zu einfach.</p>
<h3>Nur Bares ist wahres</h3>
<p>Ebenso brauchen wir für das WordCamp einen gewissen finanziellen Rahmen, den Sponsoren abdecken sollen. WordPress selbst hat viele Nutzer in den Reihen der großen Unternehmen und Medientempel in Deutschland - wir haben einige davon als Kunden und sind dankbar. Aber wir verstehen auch die Absage zum Sponsoring, da die Besucher des WordCamp nur sehr bedingt im Interesse dieser Unternehmen sind. Daher sind wir auch dankbar für die Sponsoren, die uns immer wieder unterstützen. Insbesondere bin ich dankbar, für Unternehmer, die WordPress zwar kennen, in der Regel nur über die Oberfläche und den Namen, und trotzdem einen Teil leisten, der das WordCamp in der jetzigen Form - frei von Kosten für den Besucher - ermöglicht. Die Aussage dieser Sponsoren ist immer ähnlich; sie bewundern die Community und die Zusammenarbeit mit uns, das Engagement für eine Software und wollen eine Teil beisteuern.</p>
<h3>Ende und aus, nicht vorbei</h3>
<p>Ich fliehe noch immer; zu Hause eingetroffen, nach dem WordCamp, die Verarbeitung der vielen Inhalte ist aufwendig; die Tochter will aber nun ihren Teil wieder einlösen und schon jetzt trüben mich die Gedanken, wie wird die Kritik zum Camp ausfallen. Wenig zeit, denn eine neue Woche beginnt und mein Arbeitgeber fordert mich in der Regel immer ganz und ein wenig mehr. Am Abend dann die Themen der Kunden und Privat aufarbeiten, Luft holen, Abstand gewinnen und nun doch einen Artikel schreiben - wie immer auf der Flucht, Zeichen für Zeichen - kein Korrekturlesen - die Gedanken fließen direkt aus dem Kopf, über die Finger, in die Tastatur zu diesem Artikel. </p>
<p><a href="http://bueltge.de/wp-content/images//2011-09-wordcamp-deutschland-koeln-111.jpg"><img src="http://bueltge.de/wp-content/images//2011-09-wordcamp-deutschland-koeln-111-450x300.jpg" alt="" title="2011-09-wordcamp-deutschland-koeln-111" width="450" height="300" class="aligncenter size-medium wp-image-1315" /></a></p>
<p>Dieser Artikel stellt im übrigen meine jetzige Meinung dar, und nur meine persönliche Meinung; er ist geprägt von Eindrücken verschiedener Menschen. Im Netz gibt es <a href="http://www.google.de/search?ie=UTF-8&#038;q=wordcamp+k%C3%B6ln+2011#sclient=psy&#038;hl=de&#038;prmdo=1&#038;tbm=blg&#038;source=hp&#038;q=wordcamp+k%C3%B6ln+2011&#038;pbx=1&#038;oq=wordcamp+k%C3%B6ln+2011&#038;aq=f&#038;aqi=&#038;aql=&#038;gs_sm=s&#038;gs_upl=0l0l0l8134l0l0l0l0l0l0l0l0ll0l0&#038;prmdo=1&#038;bav=on.2,or.r_gc.r_pw.&#038;fp=ce4a9cefc7b6f739&#038;biw=1271&#038;bih=807" title="Blogsuche via Google">viele Artikel</a> zum WordCamp in Köln, sucht sie und bildet euch eine Meinung, eure Meinung! Vielleicht sehen wir uns im kommenden Jahr wieder oder zum ersten mal und bitte, ansprechen; den Kontakt suchen.</p>
<p>Danke möchte ich Sagen, danke an die Leute, die mich angesprochen haben, die ehrlich und direkt den Kontakt suchen; egal warum. Ich habe mich sehr gefreut, den einen oder anderen kennen gelernt zu haben - ebenso die weiblichen Gäste! Ich danke den Personen für die lieben Worte oder den direkten Austausch - ich hoffe, wir können da weiter machen, wo wir aufgehört haben und so tun, als sei keine Zeit vergangen. Ich hatte eine Menge Spaß ...<br />
Ach, und danke für die Bilder an <a href="http://alexfrison.com">Alex</a>, habe mich köstlich amüsiert; auch wenn ich mich nicht wieder erkenne, dafür werde ich hoffentlich in Jahren mit Conny drüber lachen können.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wordcamp-2011-eindruecke-eines-getriebenen/1313/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordcamp-2011-eindruecke-eines-getriebenen/1313/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/2011-09-wordcamp-deutschland-koeln-046-200x200.jpg" />
		<media:content url="http://bueltge.de/wp-content/images/2011-09-wordcamp-deutschland-koeln-046.jpg" medium="image">
			<media:title type="html">2011-09-wordcamp-deutschland-koeln-046</media:title>
			<media:thumbnail url="http://bueltge.de/wp-content/images/2011-09-wordcamp-deutschland-koeln-046-200x200.jpg" />
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/2011-09-wordcamp-deutschland-koeln-111.jpg" medium="image">
			<media:title type="html">2011-09-wordcamp-deutschland-koeln-111</media:title>
			<media:thumbnail url="http://bueltge.de/wp-content/images/2011-09-wordcamp-deutschland-koeln-111-200x200.jpg" />
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WP Feature Pointer in WordPress 3.3</title>
		<link>http://bueltge.de/wp-feature-pointer-in-wordpress-3-3/1308/</link>
		<comments>http://bueltge.de/wp-feature-pointer-in-wordpress-3-3/1308/#comments</comments>
		<pubDate>Mon, 19 Sep 2011 10:51:36 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[backend]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1308</guid>
		<description><![CDATA[WordPress Version 3.3 bringt Hinweise via Feature Pointer, kleine Hinweis-Boxen, und will so mehr Verständnis für die neuen Features erreichen. Diese kann man auf diverse Wege nutzen bzw. in bestimmten Situationen nicht wollen, dazu hier erste Infos.]]></description>
			<content:encoded><![CDATA[<p>Mit WordPress 3.3 wird ein mit dem Feature Pointer eine bekannte Idee aus anderen Tools übernommen. So kennt man beispielsweise aus Google Mail oder Doc die Hinweise zu neuen Umsetzungen in der Oberfläche, in dem man mit Bubbles auf diese neuen Möglichkeiten hinweist. In WordPress 3.3 wurde die Admin Bar überarbeitet &#8211; gelungen, wie ich finde &#8211; und darauf wird erstmalig mittels der Feature Pointer hingewiesen. <span id="more-1308"></span><br />
<a href="http://bueltge.de/wp-content/images//wp-pointer.png"><img src="http://bueltge.de/wp-content/images//wp-pointer-450x111.png" alt="" title="wp-pointer" width="450" height="111" class="aligncenter size-medium wp-image-1309" /></a><br />
Ist man im Umfeld von Kunden, kann es sein, dass dies nicht gewollt ist - verschieden Scenarios sind hier denkbar. Aber auch hier setzt WordPress auf die Hooks und so kann man auf verschiedene Art und Weise eingreifen. Eine Idee ist, die Nutzereinstellungen der User anzupassen, da die Feature Points mittels Javascript eine Option in der Tabelle ablegen, so dass man die gelesen Hinweise nicht nochmals sieht. Alternativ kann man sie deaktivieren via Hook; folgende kleine Lösung in ein Plugin oder die functions.php des Themes (wobei Zweites eher ungeeignet) kann helfen.</p>
<pre><code>
add_filter( 'show_wp_pointer_admin_bar', '__return_false' );
</code></pre>
<p>Hat man als Anwender die Admin Bar nicht aktiv bzw. sie ist global deaktiviert, dann werden auch keine Feature Points dazu angezeigt.</p>
<p>Ebenfalls kann man die Hooks nutzen und eigene Feature Points einsetzen. Ohne Anpassung im Design und Position ist damit folgendes einfaches beispiel denkbar. Soll die Position verändert werden, so genügt die Anpassung im Script-Abschnitt zu JS-Funktion <code>pointer()</code> in der PHP-Funktion <code>get_content_in_wp_pointer()</code>. Die Funktion <code>pointer()</code> kann mittels verschiedener Parameter (<code>content, position, arrow, close</code>) gesteuert werden.</p>
<pre><code>
function get_content_in_wp_pointer() {
	$pointer_content  = '&lt;h3&gt;' . __( 'WP Pointer with version 3.3.', 'my_textdomain' ) . '&lt;/h3&gt;';
	$pointer_content .= '&lt;p&gt;' . __( 'Add your own informations to WP Pointer.', 'my_textdomain' ) . '&lt;/p&gt;';

?&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
//&lt;![CDATA[
jQuery(document).ready( function($) {
	$('#wpadminbar').pointer({
		content: '&lt;?php echo $pointer_content; ?&gt;',
		position: {
			my: 'left top',
			at: 'center bottom',
			offset: '-25 0'
		},
		close: function() {
			setUserSetting( 'p1', '1' );
		}
	}).pointer('open');
});
//]]&gt;
&lt;/script&gt;
&lt;?php
}

function fb_enqueue_wp_pointer( $hook_suffix ) {
	$enqueue = FALSE;
	
	$admin_bar = get_user_setting( 'p1', 0 ); // check settings on user
	// check if admin bar is active and default filter for wp pointer is true
	if ( ! $admin_bar &amp;&amp; apply_filters( 'show_wp_pointer_admin_bar', TRUE ) ) {
		$enqueue = TRUE;
		add_action( 'admin_print_footer_scripts', 'get_content_in_wp_pointer' );
	}
	// in true, include the scripts
	if ( $enqueue ) {
		wp_enqueue_style( 'wp-pointer' );
		wp_enqueue_script( 'wp-pointer' );
		wp_enqueue_script( 'utils' ); // for user settings
	}
}
add_action( 'admin_enqueue_scripts', 'fb_enqueue_wp_pointer' );
</code></pre>
<p><a href="http://bueltge.de/wp-content/images//wp-pointer-2.png"><img src="http://bueltge.de/wp-content/images//wp-pointer-2-450x144.png" alt="" title="wp-pointer-2" width="450" height="144" class="aligncenter size-medium wp-image-1310" /></a></p>
<p><strong>Bitte beachten:</strong> die Umsetzung basiert auf einer Nightly Build von WordPress, nicht das Release 3.3 und damit kann sich noch etwas ändern oder es sind andere Lösungen möglich. Daher bitte je nach Version von WordPress die Lösung validieren. Als Tipp sollte es ausreichen - alles andere ist Kreativität und Können.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wp-feature-pointer-in-wordpress-3-3/1308/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wp-feature-pointer-in-wordpress-3-3/1308/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/wp-pointer-200x149.png" />
		<media:content url="http://bueltge.de/wp-content/images/wp-pointer.png" medium="image">
			<media:title type="html">wp-pointer</media:title>
			<media:thumbnail url="http://bueltge.de/wp-content/images/wp-pointer-200x149.png" />
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/wp-pointer-2.png" medium="image">
			<media:title type="html">wp-pointer-2</media:title>
			<media:thumbnail url="http://bueltge.de/wp-content/images/wp-pointer-2-200x192.png" />
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
	</channel>
</rss>

