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

<channel>
	<title>bueltge.de [by:ltge.de] &#187; Plugin</title>
	<atom:link href="http://bueltge.de/category/wordpress/plugin/feed/" rel="self" type="application/rss+xml" />
	<link>http://bueltge.de</link>
	<description>Frank Bültge schreibt auf bueltge.de zu den Themen Webentwicklung &#38; design, WordPress, Literatur und andere Themen bezüglich Internet und Development</description>
	<lastBuildDate>Mon, 06 Feb 2012 12:19:43 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>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>33</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>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>Unauffälliges Setzen von Pluginoptionen in WordPress</title>
		<link>http://bueltge.de/unauffaelliges-setzen-von-pluginoptionen-in-wordpress/1302/</link>
		<comments>http://bueltge.de/unauffaelliges-setzen-von-pluginoptionen-in-wordpress/1302/#comments</comments>
		<pubDate>Fri, 02 Sep 2011 17:51:10 +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=1302</guid>
		<description><![CDATA[Nicht selten brauchen Plugins das einmalige Setzen von sehr wenig bis einer Option, warum nicht eine Alternative überdenken, die das Backend von WordPress nicht unnötig überfrachtet.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="https://lh5.googleusercontent.com/-mMfonpItBew/AAAAAAAAAAI/AAAAAAAAABg/Li9EqcdpYMA/photo.jpg?sz=120" alt="Avatar Renè Reimann" /></p>
<h4>Was mach ich hier eigentlich und warum?</h4>
<p>Ich wollte mich mal auf eine von mir, durchaus unübliche Art und Weise bei <a href="http://bueltge.de/impressum/">Frank</a> für seine stets hilfsbereite Art und für die vielen nützlichen Publikationen, in Form eines Gastbeitrages zu unserem Lieblings Thema - WordPress bedanken!.</p>
<p>Zwischen uns mögen Welten liegen, eigentlich sind es ca. 71km aber ich finde es immer wieder faszinierend wie ähnlich manche unserer Gedanken sind. Ok bevor ich abschweife, worum soll es denn jetzt gehen?<br />
<strong>Ich stand vor Kurzem vor der Aufgabe ein Plugin zu entwickeln, das mit sehr wenig Optionen daher kommt</strong><span id="more-1302"></span> - eigentlich war es nur eine Option! Aus meiner Sicht war es jetzt nicht wirklich sinnvoll, dafür eine extra Optionsseite anzulegen. Also hab ich mich auf die Suche nach einer Alternative gemacht. Die passende Idee hatte ich schnell. Ich platziere mein einzelnes Eingabefeld dort, wo es am ehesten gefunden wird. Wo das ist? Hm? Natürlich dort wo wir alle Plugins aktivieren, in der Plugin-Tabelle im Backend und zwar direkt unterhalb meines Plugins.</p>
<p>Nun stellt sich bei solchen Ideen folgende Frage:<br />
Gibt es da einen Hook? <em>"Klar mit Sicherheit!"</em><br />
Wie könnte dieser oder diese Hooks heißen? <em>"Hm keene ahnung!"</em></p>
<p>Diese beiden Fragen würde ich allerdings gerne mit euch auf dem WordCamp 2011, in der <a href="http://wordcamp.de/sessionvorschlag-hook-me/">Session "Hook Me"</a> diskutieren. Ich will hier nur das Ergebnis erläutern.</p>
<p>Zu erst werden wir einen weiteren Link zu den Standard Pluginoptionen, Deaktivieren und Bearbeiten hinzufügen.<br />
Hier für wird der Hook <code>plugin_action_links_{$plugin_file}</code> verwendet. Dieser Hook kann <strong>3</strong> Werte an die aufgerufene Funktion übergeben.<br />
Das wären <code>array_filter( $actions )</code>, <code>$plugin_file</code> und <code>$plugin_data</code>. Für unseren Zweck ist der Erste interessant. Mit <code>array_filter( $actions )</code> erhalten wir die Standard-Optionen in Form eines Arrays, dieses Array müssen wir nun nur noch um die neue Option erweiter.</p>
<pre><code class="php">
add_filter( 'plugin_action_links_plugin-options.php, 'po_plugin_action_links', 10, 3 );
function po_plugin_action_links( $array ) {
    $array['opdtions'] = '&lt;a href=&quot;#&quot; id=&quot;po_options_switch&quot;&gt;' . __( 'Einstellungen', 'my_textdomain' ) . '&lt;/a&gt;';
    return $array;
}
</code></pre>
<p>Jetzt hat unser Plugin eine weitere Option <em>Einstellungen</em> erhalten.<br />
Wo stecken wir denn nun das Eingabefeld hin?</p>
<p>Wenn wir uns die Stelle wo sich der Hook <code>"plugin_action_links_{$plugin_file}"</code> befindet näher anschauen, finden wir wenige Zeilen weiter unten folgenden Hook <code>"after_plugin_row_{$plugin_file}"</code>. Mit diesem Hook können wir uns eine eigene Zeile in der Tabelle unterhalb unseres Plugins erzeugen. Auch diesem Hook werden wieder verschiedene Werte übergeben, aber probiert es am besten selbst mal aus.</p>
<pre><code>
&lt;?php
add_filter( 'plugin_action_links_' . $plugin, 'po_plugin_action_links', 10, 3 );
add_filter( 'after_plugin_row_plugin-options.php', 'po_row_meta', 10, 3 );

function po_row_meta( $plugin_file, $plugin_data, $status ) {

    echo  '&lt;tr id=&quot;po_options_tr&quot; style=&quot;display: none;&quot;&gt;&lt;td colspan=&quot;4&quot;&gt;
          &lt;script&gt;
            jQuery(document).ready( function() {
                var po_options = jQuery( &quot;#po_options&quot; );
                var po_options_tr = jQuery( &quot;#po_options_tr&quot; );

                jQuery( &quot;#po_options_switch&quot; ).click( function(e){
                    e.preventDefault();
                    var display_r = po_options_tr.attr(&quot;style&quot;);

                    if( ! display_r ){
                        po_options.slideToggle( function () { po_options_tr.attr(&quot;style&quot;,&quot;display:none&quot; ); } );

                    } else {
                        po_options_tr.show();
                        po_options.slideToggle();
                    }
                });
            });
          &lt;/script&gt;
          &lt;div id=&quot;po_options&quot; style=&quot;display:none&quot;&gt;';

    var_dump( $plugin_file, $plugin_data, $status );
    echo '&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;';
}

function po_plugin_action_links( $array ) {
    $array['opdtions'] = '&lt;a href=&quot;#&quot; id=&quot;po_options_switch&quot;&gt;Einstellungen&lt;/a&gt;';
    return $array;
}
?&gt;
</code></pre>
<p>Das war es hier von mir, für euch!<br />
Wir sehen uns auf dem <a href="http://wordcamp.de/">WordCamp 2011</a>, <a href="http://www.die-pixler.de/">René Reimann</a>.</p>
<h5>Anmerkung des Bloginhabers Frank</h5>
<p>Eine Umsetzung dieser Form kann man in den Screenshots des Plugin <a href="http://wordpress.org/extend/plugins/wp-maintenance-mode/screenshots/">WP Maintenance Mode</a> sehen, so dass man sich ein Bild machen kann. Allerdings ist da diese Lösung mittlerweile zu überdenken, da die Optionen im Laufe der Nutzung umfangreicher geworden sind - dies ist durch Wünsche der Nutzer so entstanden; im ersten Ansatz gab es auch nur eine Option.<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/unauffaelliges-setzen-von-pluginoptionen-in-wordpress/1302/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/unauffaelliges-setzen-von-pluginoptionen-in-wordpress/1302/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
	
		<media:thumbnail url="http://bueltge.de//lh5.googleusercontent.com/-mMfonpItBew/AAAAAAAAAAI/AAAAAAAAABg/Li9EqcdpYMA/photo.jpg?sz=120" />
		<media:content url="http://bueltge.de//lh5.googleusercontent.com/-mMfonpItBew/AAAAAAAAAAI/AAAAAAAAABg/Li9EqcdpYMA/photo.jpg?sz=120" medium="image">
			<media:title type="html">Avatar Renè Reimann</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>WordPress Admin Style Guide</title>
		<link>http://bueltge.de/wordpress-admin-style-guide/1244/</link>
		<comments>http://bueltge.de/wordpress-admin-style-guide/1244/#comments</comments>
		<pubDate>Fri, 27 May 2011 18:50:42 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[CSS, xHTML, JS]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Admin]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1244</guid>
		<description><![CDATA[Das Erstellen von Oberflächen im Backend von WordPress sollte man an den Standards von WordPress orientieren, um so wichtiger ist es, dass man die Möglichkeiten kennt - dieses kleine Plugin hilft dir dabei.]]></description>
			<content:encoded><![CDATA[<p>WordPress hat ein hohes Tempo in der Entwicklung - das gilt ebenso für das Design im Backend. Insofern ist es wichtig, dass man möglichst ohne eigene Styles im Adminbereich auskommt und Tags und Klassen von WordPress nutzt. Nur so kann man sich die Arbeit als Entwickler vereinfachen und muss nicht bei jedem Update alle Oberflächen testen.<br />
Leider gibt es recht umfangreiche Möglichkeiten im Backend um die Anforderungen umzusetzen. Dabei werden diverse Klassen und HTML-Strukturen verwendet. Damit man diese etwas einfacher nachschlagen kann, habe ich ein kleines Plugin entwickelt, welches in der Entwicklungsumgebung werkelt und mir bei Aufruf schnell die nötigen Elemente darstellt, Beiträge aktuell zu halten ist schwer, auch wenn <a href="http://bueltge.de/wordpress-25-plugin-style-guide/614/" title="WordPress 2.5 Plugin Style Guide">mein alter Beitrag zu dem Thema</a> noch immer passend ist, wenn auch unvollständig.<br />
<span id="more-1244"></span><br />
Anbei seht ihr in zwei Screenshots die Unterschiede zwischen Version 3.1 und 3.2 von WordPress und die aktuelle enthaltenen Elemente des Plugins.</p>
<p><a href="http://wpengineer.com/wp-content/uploads/screenshot-1.png"><img src="http://wpengineer.com/wp-content/uploads/screenshot-1-201x1024.png" alt="in WordPress 3.1" title="screenshot-1" width="201" height="1024" class="ob" /></a> <a href="http://wpengineer.com/wp-content/uploads/screenshot-2.png"><img src="http://wpengineer.com/wp-content/uploads/screenshot-2-204x1024.png" alt="in WordPress 3.2" title="screenshot-2" width="204" height="1024" class="ob" /></a></p>
<p>Das Plugin ist auf <a href="https://github.com/bueltge/WordPress-Admin-Style">Github</a> abgelegt und erwartet eurer Erweiterungen - also bitte Forken und neue Ideen und Möglichkeiten einbringen &#8211; <a href="https://github.com/bueltge/WordPress-Admin-Style">github.com/bueltge/WordPress-Admin-Style</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/wordpress-admin-style-guide/1244/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-admin-style-guide/1244/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
	
		<media:thumbnail url="http://wpengineer.com/wp-content/uploads/screenshot-1-201x1024.png" />
		<media:content url="http://wpengineer.com/wp-content/uploads/screenshot-1-201x1024.png" medium="image">
			<media:title type="html">screenshot-1</media:title>
		</media:content>
		<media:content url="http://wpengineer.com/wp-content/uploads/screenshot-2-204x1024.png" medium="image">
			<media:title type="html">screenshot-2</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>WordPress Admin Bar nach unten verschieben</title>
		<link>http://bueltge.de/wordpress-admin-bar-nach-unten-verschieben/1259/</link>
		<comments>http://bueltge.de/wordpress-admin-bar-nach-unten-verschieben/1259/#comments</comments>
		<pubDate>Tue, 15 Mar 2011 22:05:35 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[CSS, xHTML, JS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Admin Bar]]></category>
		<category><![CDATA[backend]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1259</guid>
		<description><![CDATA[Nicht jeder mag die WordPress Admin Bar, eingeführt mit WordPress 3.1, am oberen Rand des Browsers. Mit ein wenig CSS lässt sich das ändern.]]></description>
			<content:encoded><![CDATA[<p>Nicht jeder mag die WordPress Admin Bar, eingeführt mit WordPress 3.1, am oberen Rand des Browsers. Mit ein wenig CSS lässt sich das ändern. Die folgende kleine Funktion bringt etwas CSS direkt in den Footer von Backend und Frontend ein und sorgt dafrü, dass die Admin Bar an den unteren Rand verschoben wird.<br />
<span id="more-1259"></span><br />
Der Code läßt sicher viel Raum für Erweiterungen, wie das implementieren mit Hilfe eines externen CSS-Stylesheets um es in den "Komprimierer" von WordPress zu bekommen und ebenso könnte man Optionen für die Anwender vorsehen. In meiner Anforderung half der folgende kleine Schnipsel, abgelegt in einem Plugin oder notdürftig auch in der <code>functions.php</code> des Themes.</p>
<pre><code>
function fb_move_admin_bar() {
    echo '
    &lt;style type=&quot;text/css&quot;&gt;
    body {
    margin-top: -28px;
    padding-bottom: 28px;
    }
    body.admin-bar #wphead {
       padding-top: 0;
    }
    body.admin-bar #footer {
       padding-bottom: 28px;
    }
    #wpadminbar {
        top: auto !important;
        bottom: 0;
    }
    #wpadminbar .quicklinks .menupop ul {
        bottom: 28px;
    }
    &lt;/style&gt;';
}
// on backend area
add_action( 'admin_head', 'fb_move_admin_bar' );
// on frontend area
add_action( 'wp_head', 'fb_move_admin_bar' );
</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-admin-bar-nach-unten-verschieben/1259/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-admin-bar-nach-unten-verschieben/1259/feed/</wfw:commentRss>
		<slash:comments>30</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>Seiten-Erkennung im WordPress-Backend</title>
		<link>http://bueltge.de/seiten-erkennung-im-wordpress-backend/1246/</link>
		<comments>http://bueltge.de/seiten-erkennung-im-wordpress-backend/1246/#comments</comments>
		<pubDate>Thu, 03 Feb 2011 01:39:43 +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[custom post type]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1246</guid>
		<description><![CDATA[Beim Arbeiten mit WordPress und Plugins ist es wichtig, dass man Inhalte nur lädt, wenn sie benötigt werden. Am Beispiel der Custom Post Types möchte ich zeigen, wie man über Variablen von WP dafür sorgt, dass nur inkludiert wird, wenn man sich auf den entsprechenden Seiten des Backend von WP befindet.]]></description>
			<content:encoded><![CDATA[<p>Wer Erweiterungen für WordPress schreibt und auf sauberes Coding achtet, dem ist unter anderem wichtig, dass Scripte, Stylesheets und anderes nur dann geladen wird, wenn man es benötigt. Nicht immer gibt es dafür einen Hook und WordPress stellt einige Variablen bereit, um zu erkennen, wo man sich innerhalb das Backends befindet. Auf Basis dieser Variablen habe ich einige kleine Code-Schnipsel zusammen getragen, die ich dafür nutze und die erst ab WordPress Version 3.0 genutzt werden sollten. Im Vorfeld wurde in WordPress mehr über die Variable <code>$pagenow</code> gearbeitet, die aber seit der Umstellung auf die Post Typen weniger zielführend ist. Die aufgezeigten Möglichkeiten sind insbesondere dann interessant, wenn man mit Custom Post Types arbeitet. Aber auch die Seiten- und Artikel-Seiten des Backend lassen schön darüber abfragen.<br />
<span id="more-1246"></span><br />
Im ersten Beispiel wird die Variable $post_type genutzt, die ausgelesen wird. Diese kann auch genutzt werden, wenn man mit Custom Post Types arbeitet und die zugehörigen Scripte nur dann laden, wenn diese Variable den richtigen Wert zurück gibt.</p>
<pre><code>
$post_type = 'my_example_post_type';
if ( get_query_var('post_type') === $post_type ) {
	// tue was, wenn wahr
}
</code></pre>
<p>Im weiteren ein etwas komplexeres Beispiel, wo ich mehrer Auswahlmöglichkeiten anbiete und damit abgleiche. Die Scripte werden nur geladen, wenn der Wert von <code>$pagehook</code> in <code>$pages</code> und <code>$post_type</code> korrekt sind.</p>
<pre><code class="php">
/**
 * Include my scripts
 *
 * $pagehook for check, if this the right page
 * $post_type for check, if this the right post type
 */
function fb_post_type_script($pagehook) {
	global $post_type;

	$pages = array( 'edit.php', 'post.php', 'post-new.php' );
	if ( in_array( $pagehook, $pages ) &amp;&amp; $post_type == 'my_post_type' ) {
		wp_enqueue_script( 'my_script_example_key', plugins_url( 'js/my_example_script.js', __FILE__ ), array( 'jquery', 'my_other_example_script_key' ), '1.0.0' );
	}
}
add_action( 'admin_enqueue_scripts', 'fb_post_type_script' );
</code></pre>
<p>Als Alternative kann man auch eine eigene Funktion im Plugin erstellen, die sich um das zurückgeben von Werten kümmert und so nur aufgerufen wird und der Rückgabewert dient als Prüfung für das Inkludieren auf den entsprechenden Seiten des Backends.<br />
Die Methode <code>get_post_type()</code> ist Bestandteil der Klasse des Plugins und wird im Anschluss in den weiteren Methoden genutzt, ein Beispiel im Anschluss dazu.<br />
Den Custom Post Type definiere in eingangs und frage so immer nur die Konstante <code>FB_POST_TYPE_1</code> dazu ab.</p>
<pre><code class="php">
/**
 * Return post type
 *
 * @return string $post_type
 */
private function get_post_type() {

	if ( !function_exists('get_post_type_object') )
		return NULL;

	if ( isset($_GET['post']) )
		$post_id = (int) $_GET['post'];
	elseif ( isset($_POST['post_ID']) )
		$post_id = (int) $_POST['post_ID'];
	else
		$post_id = 0;

	$post = NULL;
	$post_type_object = NULL;
	$post_type = NULL;
	if ( $post_id ) {
		$post = get_post($post_id);
		if ( $post ) {
		$post_type_object = get_post_type_object($post-&gt;post_type);
			if ( $post_type_object ) {
				$post_type = $post-&gt;post_type;
				$current_screen-&gt;post_type = $post-&gt;post_type;
				$current_screen-&gt;id = $current_screen-&gt;post_type;
			}
		}
	} elseif ( isset($_POST['post_type']) ) {
		$post_type_object = get_post_type_object($_POST['post_type']);
		if ( $post_type_object ) {
			$post_type = $post_type_object-&gt;name;
			$current_screen-&gt;post_type = $post_type;
			$current_screen-&gt;id = $current_screen-&gt;post_type;
		}
	} elseif ( isset($_SERVER['QUERY_STRING']) ) {
		$post_type = esc_attr( $_SERVER['QUERY_STRING'] );
		$post_type = str_replace( 'post_type=', '', $post_type );
	}

	return $post_type;
}

public function example() {
	$post_type = $this-&gt;get_post_type();  

	// FB_POST_TYPE_1 is defined with my post type
	if ( FB_POST_TYPE_1 == $post_type ) {
		// tue etwas, wenn wahr
	}
}
</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/seiten-erkennung-im-wordpress-backend/1246/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/seiten-erkennung-im-wordpress-backend/1246/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Eigene Felder im User-Profil von WordPress</title>
		<link>http://bueltge.de/eigene-felder-im-user-profil-von-wordpress/1245/</link>
		<comments>http://bueltge.de/eigene-felder-im-user-profil-von-wordpress/1245/#comments</comments>
		<pubDate>Mon, 03 Jan 2011 23:37:16 +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>

		<guid isPermaLink="false">http://bueltge.de/?p=1245</guid>
		<description><![CDATA[Das Benutzerprofil von WordPress läßt sich recht einfach anpassen um eigene Werte hinzuzufügen. So kann man entsprechend den Anforderungen die notwendigen Felder hinzufügen. Wie das geht möchte ich einem einfach Beispiel aufzeigen.]]></description>
			<content:encoded><![CDATA[<p>Das Benutzerprofil von WordPress läßt sich recht einfach anpassen um eigene Werte hinzuzufügen. So kann man entsprechend den Anforderungen die notwendigen Felder hinzufügen. Wie das geht möchte ich einem einfach Beispiel aufzeigen.</p>
<p>Dabei wird lediglich ein Feld für die Adresse hinzugefügt und die Inhalte werden in der Datenbank gespeichert. Diverse Hooks in WordPress sorgen dafür, dass man sich lediglich um die Felder kümmern muss und das Speichern übernimmt der Standard-Ablauf.<br />
<span id="more-1245"></span><br />
Die Funktion zum Speichern der Einträge ist <code>fb_save_custom_user_profile_fields()</code> und hier ist es wichtig die Rechte des jeweils aktiven Users zu prüfen; nur wenn die entsprechenden Rechte vorhanden sind, in dem Fall zum Editieren von Usern (<code>edit_user</code>), dann dürfen Daten gespeichert werden.<br />
Das eigentliche Speichern der Daten erfolgt via Funktion <code>update_usermeta()</code>.</p>
<p><img src="http://wpengineer.com/wp-content/uploads/custom-profile-fields.png" alt="Eigene Felder im WordPress Benutzer-Profil" title="custom-profile-fields" width="630" height="162" /></p>
<p>Es kann natürlich jede Art von Felder übergeben werden, das input-Feld dient nur als Beispiel. Es empfiehlt sich die Funktionen in ein Plugin auszulagern; alternativ geht auch die <code>functions.php</code> des Themes, die hierfür aber sicher nicht der richtige Weg ist.</p>
<p>Jede Funktion des kleinen Beispiels wurde auf zwei Hooks verwiesen. Dies hat den Grund, dass WordPress zwischen dem Editieren von User-Profilen und dem Update der persönlichen Daten unterscheidet. Dies geschieht mittels der Konstante <code>IS_PROFILE_PAGE</code>. Im Standard ist diese Konstante auf TRUE und damit würden die Hooks <code>show_user_profile</code> und <code>personal_options_update</code> ausreichen um neue Felder einzubringen und zu speichern. Dies kann aber je nach Installation verschieden sein und mit diesem Weg kann der Admin keine dieser neuen Felder pflegen. Insbesondere dafür sind zwei weiteren Hooks notwendig. Umgedreht kann es aber sicher viele Anwendungsfälle geben; also Daten die der Admin pflegen muss und der jeweilige User in seinem Profil nicht sieht.</p>
<pre><code>
function fb_add_custom_user_profile_fields( $user ) {
?&gt;
	&lt;h3&gt;&lt;?php _e('Extra Profile Information', 'your_textdomain'); ?&gt;&lt;/h3&gt;

	&lt;table class=&quot;form-table&quot;&gt;
		&lt;tr&gt;
			&lt;th&gt;
				&lt;label for=&quot;address&quot;&gt;&lt;?php _e('Address', 'your_textdomain'); ?&gt;
			&lt;/label&gt;&lt;/th&gt;
			&lt;td&gt;
				&lt;input type=&quot;text&quot; name=&quot;address&quot; id=&quot;address&quot; value=&quot;&lt;?php echo esc_attr( get_the_author_meta( 'address', $user-&gt;ID ) ); ?&gt;&quot; class=&quot;regular-text&quot; /&gt;&lt;br /&gt;
				&lt;span class=&quot;description&quot;&gt;&lt;?php _e('Please enter your address.', 'your_textdomain'); ?&gt;&lt;/span&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/table&gt;
&lt;?php }

function fb_save_custom_user_profile_fields( $user_id ) {

	if ( !current_user_can( 'edit_user', $user_id ) )
		return FALSE;

	update_usermeta( $user_id, 'address', $_POST['address'] );
}

add_action( 'show_user_profile', 'fb_add_custom_user_profile_fields' );
add_action( 'edit_user_profile', 'fb_add_custom_user_profile_fields' );

add_action( 'personal_options_update', 'fb_save_custom_user_profile_fields' );
add_action( 'edit_user_profile_update', 'fb_save_custom_user_profile_fields' );

</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/eigene-felder-im-user-profil-von-wordpress/1245/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/eigene-felder-im-user-profil-von-wordpress/1245/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
	
		<media:thumbnail url="http://wpengineer.com/wp-content/uploads/custom-profile-fields.png" />
		<media:content url="http://wpengineer.com/wp-content/uploads/custom-profile-fields.png" medium="image">
			<media:title type="html">custom-profile-fields</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>Eigene Felder in der Dateiverwaltung von WordPress</title>
		<link>http://bueltge.de/eigene-felder-dateiverwaltung-wordpress/1226/</link>
		<comments>http://bueltge.de/eigene-felder-dateiverwaltung-wordpress/1226/#comments</comments>
		<pubDate>Tue, 30 Nov 2010 10:23:35 +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[dateimanager]]></category>
		<category><![CDATA[Daten]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1226</guid>
		<description><![CDATA[Das Erweitern der Metadaten für ein Attachment in WordPress ist nicht kompliziert und man kann damit eine Menge an zusätzlichen Infos zur Datei ablegen und auch nutzen. Wie das geht soll das Beispiel im Artikel verdeutlichen.]]></description>
			<content:encoded><![CDATA[<p>Die Medienverwaltung ist bei WordPress in einigen Bereichen sicher nicht vollkommen, aber sie bietet mit einer übersichtlichen Bedienung tolle Möglichkeiten. Jedes Attachment kann diverse Metadaten erhalten und auch WordPress speichert einige Daten direkt beim Upload - zum Beispiel einen Teil der Exif-Daten eines Bildes.</p>
<p>Trotzdem kann es sein, dass es nicht ausreicht und man bei der Verwendung von WordPress eigene zusätzliche Daten zum Attachment benötigt, sei es um im Backend von WordPress zu steuern oder auch um im Frontend Daten zum Bild auszugeben. Daher hier ein kleines Tutorial, in dem ein zusätzliches Feld ergänzt wird und ebenso eine Lösung, die direkt eingesetzt werden kann und ein neues Feld mit Hilfe eines Plugins ergänzt.<br />
<span id="more-1226"></span><br />
Für das Auslesen stelle ich eine einfache Methode dar, die entsprechend angepasst werden muss. Für das Auslesen der Daten zum Attachment stellt WordPress sehr viele wunderbare Funktionen bereit und damit lassen sich viele tolle Sachen realisieren - immer eine Frage der Kenntnis und des Können des Entwicklers - wie der <a href="http://bueltge.de/wordpress-attachment-metadaten-nutzen/625/">zugehörige Artikel</a> zeigt.</p>
<p><img src="http://bueltge.de/wp-content/images/aaf-wp.png" alt="" title="aaf-wp" width="482" height="668" class="aligncenter size-full wp-image-2077" /></p>
<p>Der obige Screenshoot stellt das Ziel dar, ein Zusatzfeld mit dem Namen <em>Example Custom Field</em>, das Inputfeld dazu und einen erläuterten Text unterhalb des Feldes.</p>
<h3>Feld hinzufügen</h3>
<p>Im ersten Schritt erstellen wir eine Funktion, die die 3 neuen Inhalte in den Bereich der Attachment bringt. Diese Felder werden einem Array übergeben und im Anschluss durch den entsprechenden Hook <code>attachment_fields_to_edit</code> in WordPress integriert.</p>
<pre><code class="php">
// Add a custom field to an attachment in WordPress
function fb_attachment_fields_edit($form_fields, $post) {

	$form_fields['custom_example']['label'] = __( 'Example Custom Field', FB_AAF_TEXTDOMAIN );
	$form_fields['custom_example']['value'] = get_post_meta($post-&gt;ID, '_custom_example', true);
	$form_fields['custom_example']['helps'] = __( 'A helpful text for this field.', FB_AAF_TEXTDOMAIN );

	return $form_fields;
}
</code></pre>
<h3>Feldinhalt speichern</h3>
<p>Da wir nun die Datenfelder ergänzt haben, müssen wir uns nur noch um das Speichern der Werte kümmern. Auch dazu stellt WordPress einen Hook <code>attachment_fields_to_save</code> bereit, so dass man in die Speicherfunktion nur einhaken muss.</p>
<pre><code class="php">
// save custom field to post_meta
function fb_attachment_fields_save($post, $attachment) {

	if ( isset($attachment['custom_example']) )
		update_post_meta($post['ID'], '_custom_example', $attachment['custom_example']);

	return $post;
}
</code></pre>
<h3>Einhaken in WordPress</h3>
<p>Die beiden Funktion, die im Vorfeld kurz erklärt wurden bringen und die nötigen Funktionen und nun integrieren wir sie in WordPress, wir hacken ein. Wer die Möglichkeit nicht so gut kennt, kurz die Erklärung anhand dieser beiden Filter-Hooks. In beiden Fällen übergeben unsere Funktionen <strong>zwei</strong> Parameter an die Hooks von WordPress und sie werden mit dem Standard-Wert der <strong>Priorität 10</strong> übergeben. Alles wirkt auf einen Filter von WordPress und daher das einhaken auf den jeweiligen <strong>Filter-Hook (<code>add_filter</code>)</strong> <code>attachment_fields_to_*</code>. Die Übergabe via Array <code>array(&amp;$this;, ...</code> findet hier nur statt, da alles im Anschluss innerhalb einer Klasse verwendet wird.</p>
<pre><code class="php">
add_filter( 'attachment_fields_to_edit', array(&amp;$this;, 'fb_attachment_fields_edit'), 10, 2);
add_filter( 'attachment_fields_to_save', array(&amp;$this;, 'fb_attachment_fields_save'), 10, 2);
</code></pre>
<h3>Das Beispiel Plugin</h3>
<p>Nun bauen wir die Funktionen und deren Hooks in ein Plugin und können so unkompliziert die Zusatzfunktionen innerhalb von WordPress verwendet werden. Die Trennung von Zusatzfunktionen in Theme und Plugin halte ich für sehr wichtig, da die Priorität der Integration unterschiedlich ist und da aus meiner Sicht Funktionserweiterungen im Theme nur dann sinnvoll sind, wenn sie eine reine Erweiterung des Theme darstellen und nicht der Funktionen von WordPress, unabhängig vom Frontend.<br />
Ebenso ist die Nutzung via Klasse sinnvoll, da so der Namensraum wesentlich sauberer gepflegt wird und man mehr Übersicht im Code bekommt. Aber Artikel über die Vorteile der Objektorientierten Programmierung und zumindest der Klassennutzung gibt es genug.</p>
<pre><code class="php">
&lt;?php
/**
 * @package Add Attachment Fields
 * @author Frank B&uuml;ltge
 */

/*
Plugin Name: Add Attachment Fields
Plugin URI: http://bueltge.de/
Text Domain: add_attachment_fields
Domain Path: /languages
Description: Example for add a custom field to an attachment in WordPress
Author: Frank B&uuml;ltge
Version: 0.0.1
Author URI: http://bueltge.de/
Donate URI: http://bueltge.de/wunschliste/
License: GPL
Last change: 24.11.2010 10:21:19
*/ 

/**
License:
==============================================================================
Copyright 2009/2010 Frank Bueltge  (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;= 2.7 and tested with PHP Interpreter &gt;= 5.2.9
*/

//avoid direct calls to this file, because now WP core and framework has been used
if ( !function_exists('add_action') ) {
	header('Status: 403 Forbidden');
	header('HTTP/1.1 403 Forbidden');
	exit();
} elseif ( version_compare(phpversion(), '5.0.0', '&lt;') ) {
	$exit_msg = 'The plugin require PHP 5 or higher';
	header('Status: 403 Forbidden');
	header('HTTP/1.1 403 Forbidden');
	exit($exit_msg);
}

if ( !class_exists('add_attachment_fields') ) {

	//WordPress definitions
	if ( !defined('WP_CONTENT_URL') )
		define('WP_CONTENT_URL', get_option('siteurl') . '/wp-content');
	if ( !defined('WP_CONTENT_DIR') )
		define('WP_CONTENT_DIR', ABSPATH . 'wp-content');
	if ( !defined('WP_PLUGIN_URL') )
		define('WP_PLUGIN_URL', WP_CONTENT_URL.'/plugins');
	if ( !defined('WP_PLUGIN_DIR') )
		define('WP_PLUGIN_DIR', WP_CONTENT_DIR.'/plugins');
	if ( !defined('PLUGINDIR') )
		define( 'PLUGINDIR', 'wp-content/plugins' ); // Relative to ABSPATH.  For back compat.
	if ( !defined('WP_LANG_DIR') )
		define('WP_LANG_DIR', WP_CONTENT_DIR . '/languages');

	// plugin definitions
	define( 'FB_AAF_BASENAME', plugin_basename(__FILE__) );
	define( 'FB_AAF_BASEDIR', dirname( plugin_basename(__FILE__) ) );
	define( 'FB_AAF_TEXTDOMAIN', 'add_attachment_fields' );

	class add_attachment_fields {

		function __construct() {

			if ( !is_admin() )
				return FALSE;

			add_action( 'init', array(&amp;$this, 'text_domain') );
			add_filter( 'attachment_fields_to_edit', array(&amp;$this, 'fb_attachment_fields_edit'), 10, 2);
			add_filter( 'attachment_fields_to_save', array(&amp;$this, 'fb_attachment_fields_save'), 10, 2);
		}

		function text_domain() {

			load_plugin_textdomain( FB_AAF_TEXTDOMAIN, false, FB_AAF_BASEDIR . '/languages' );
		}

		// Add a custom field to an attachment in WordPress
		function fb_attachment_fields_edit($form_fields, $post) {

			$form_fields['custom_example']['label'] = __( 'Example Custom Field', FB_AAF_TEXTDOMAIN );
			$form_fields['custom_example']['value'] = get_post_meta($post-&gt;ID, '_custom_example', true);
			$form_fields['custom_example']['helps'] = __( 'A helpful text for this field.', FB_AAF_TEXTDOMAIN );

			return $form_fields;
		}

		// save custom field to post_meta
		function fb_attachment_fields_save($post, $attachment) {

			if ( isset($attachment['custom_example']) )
				update_post_meta($post['ID'], '_custom_example', $attachment['custom_example']);

			return $post;
		}

	}

	function add_attachment_fields_start() {

		new add_attachment_fields();
	}

	add_action( 'plugins_loaded', 'add_attachment_fields_start' );
}
</code></pre>
<h3>Ein Beispiel zum Auslesen der Werte in Example Frontend und Plugins</h3>
<p>Nach dem nun ein Plugin entstanden ist, nun noch eine kleine Lösung um die Meta Daten des Attachments auszugeben. Aber dazu ist der schon <a href="http://bueltge.de/wordpress-attachment-metadaten-nutzen/625/">angesprochenen Artikel</a> zu empfehlen, da es dort weit aus mehr Hintergründe und Informationen gibt.</p>
<pre><code class="php">
$attachments = get_children( array(
		'post_parent'    =&gt; get_the_ID(),
		'post_type'      =&gt; 'attachment',
		'numberposts'    =&gt; 1, // show all -1
		'post_status'    =&gt; 'inherit',
		'post_mime_type' =&gt; 'image',
		'order'          =&gt; 'ASC',
		'orderby'        =&gt; 'menu_order ASC'
	) );
foreach ( $attachments as $attachment_id =&gt; $attachment ) {
	echo get_post_meta($attachment_id, '_custom_example', true);
}
</code></pre>
<p>Ein Praxisbeispiel – Fotograph und dessen URL – wurde neulich von Thomas Scholz auf <a href="http://wordpress.stackexchange.com/questions/3097/how-can-i-add-a-url-field-to-the-attachments-window/3108#3108">WordPress Answers</a> gepostet. Insofern also eine schöne Anwendung für diese Möglichkeit.<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/eigene-felder-dateiverwaltung-wordpress/1226/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/eigene-felder-dateiverwaltung-wordpress/1226/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/aaf-wp.png" />
		<media:content url="http://bueltge.de/wp-content/images/aaf-wp.png" medium="image">
			<media:title type="html">aaf-wp</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>debugConsole mit WordPress</title>
		<link>http://bueltge.de/debugconsole-mit-wordpress/1221/</link>
		<comments>http://bueltge.de/debugconsole-mit-wordpress/1221/#comments</comments>
		<pubDate>Thu, 14 Oct 2010 12:56:06 +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[Debugging]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Webdeveloper]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1221</guid>
		<description><![CDATA[Das Debuggen von PHP hat unterschiedliche Ansätze und Möglichkeiten die debugConsole ist eine Möglichkeit, die man sich mal anschauen sollte.]]></description>
			<content:encoded><![CDATA[<p>Für das Debuggen innerhalb von WordPress gibt es verschieden Ansätze und Vorlieben. Ich mag <a href="http://www.xdebug.org/">xDebug</a> und in einigen Fällen nutze ich <a href="http://www.firephp.org/">FirePHP</a>. Nun ist ein weitere Möglichkeit in meinen Fokus gerückt und ich musste es zumindest mal testen - <a href="http://www.debugconsole.de/">debugConsole</a> - es gefällt mir.</p>
<blockquote><p>The debugConsole is a tool for debugging and tracing PHP5 applications on productive servers without compromising the live-traffic.</p></blockquote>
<p>Warum also nicht auch hier und darum hier eine kleiner Hinweis und ein kleines erstes Plugin zum spielen und testen der Konsole.<br />
<span id="more-1221"></span><br />
<img class="centered" src="http://bueltge.de/wp-content/images/debugconsole-backend.jpg" alt="debugConsole im WP Backend" /></p>
<p>Aktuell habe ich nur ein Demo-Plugin erstellt, was die Funktion zeigt. Es wird auch nicht gepflegt, kann aber hier herunter geladen werden. Als kleiner Start quasi und schneller Blick auf die Möglichkeiten. Ich habe dabei die Beispiele des Autors der <a href="http://www.debugconsole.de/">debugConsole</a> integriert.</p>
<p>Das Plugin hat folgenden Quellcode und ihr könnt an jeder URL aus der WP-Installation den String <code>?debug=true</code> anhängen, so dass das Popup mit den Informationen der Konsole aufgerufen wird. Aktuell ist dies für Frontend und Backend möglich.</p>
<pre><code>
&lt;?php
/*
Plugin Name: debugConsole
Plugin URI: http://bueltge.de/
Text Domain: debugconsole
Domain Path: /languages
Description: The &lt;a href=&quot;http://www.debugconsole.de/&quot;&gt;debugConsole&lt;/a&gt; is a tool for debugging and tracing PHP5 applications on productive servers without compromising the live-traffic. Add &lt;code&gt;?debug=true&lt;/code&gt; to the URL for see the Popup-Window with debugConsole
Author: Frank B&amp;uuml;ltge
Version: 0.1
Author URI: http://bueltge.de/
Donate URI: http://bueltge.de/wunschliste/
License: Apache License
Last change: 14.10.2010 11:30:51
*/ 

/**
License:
==============================================================================
Copyright 2010 Frank Bueltge  (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;= 2.7 and tested with PHP Interpreter &gt;= 5.2.9
*/

/* PHP5 required */
if (version_compare(PHP_VERSION, '5.0.0') &lt; 0) {
	die('The debugConsole requires PHP 5.x.x or greater.');
}

/* load debugConsole functionality */
require_once 'debugconsole-1.3.0/debugConsole.php';

// add ?debug=true to the URL
if ( isset($_GET['debug']) &amp;&amp; $_GET['debug'] == 'true') {
	add_action( 'wp_footer', 'wp_debug_console' );
	add_action( 'admin_footer', 'wp_debug_console' );
}

function wp_debug_console() {

	/**
	* debugConsole demonstration
	*
	* This script demonstrates each feature of the debugConsole. The
	* debugConsole is a PHP5 class using JavaScripts to show debug
	* information in a popup window. The popup has IP-based access
	* control. Configurate everything in debugConsole.config.php.
	* Additionally, PHP's default errorhandler is replaced.
	*
	* @author Andreas Demmer &lt;mail@andreas-demmer.de&gt;
	* @version 1.0.1
	* @package debugConsole_1.2.0
	*/

	/*
	Now you got an extended commandset:

	dc_watch()           watch variable changes in console
	dc_dump()            var_dump variables in console
	dc_here()            mark checkpoints in console
	dc_start_timer()     measure a timespan
	dc_stop_timer()      output timespan in console
	*/

	/* test watches */
	dc_watch('foo');

	declare (ticks = 1) {
		$foo = '1';
		$foo++;

		/* test checkpoints */
		dc_here('The interpreter passed through here!');

		/* test timer clock */
		$myTimer = dc_start_timer('Measure an one second sleep:');
		sleep(1);
		dc_stop_timer($myTimer);

		/* test variable debugging */
		$bar = 42.0;
		dc_dump($bar, '$bar tells us the meaning of life:');

		$foobar = array (
				'foo' =&gt; $foo,
				'bar' =&gt; $bar
		);

		dc_dump($foobar, '$foobar is a neat array!');

		/* test errorhandling */
		echo $notSet;
		fopen('not existing!', 'r');
	}

}
?&gt;
</code></pre>
<h3>Download:</h3>
<form class="spenden" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="DT9BG8NJTXQN4">
<input type="image" src="http://bueltge.de/wp-content/images/donate.png" border="0" name="submit" alt="Jetzt einfach, schnell und sicher online bezahlen – mit PayPal.">
<img class="ob" alt="Spendenbutton" src="https://www.paypal.com/de_DE/i/scr/pixel.gif" width="1" height="1"><br />
</form>
<p><strong>Ist die Arbeit nicht 1 Euro wert?</strong><br />
Jede Spende wird dankbar angenommen und erm&ouml;glicht das weitere Arbeiten an freier Software.<br />
M&ouml;chtest du mehr oder anders spenden, so besuche meine <a href="http://bueltge.de/wunschliste/">Wunschliste</a>.<br />
Download als zip-Datei: <a href="http://bueltge.de/wp-content/download/wp/plugins/debugConsole.zip">debugConsole.zip</a> - 131 kByte<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/debugconsole-mit-wordpress/1221/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/debugconsole-mit-wordpress/1221/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/debugconsole-backend.jpg" />
		<media:content url="http://bueltge.de/wp-content/images/debugconsole-backend.jpg" medium="image">
			<media:title type="html">debugConsole im WP Backend</media:title>
		</media:content>
		<media:content url="http://bueltge.de//www.paypal.com/de_DE/i/scr/pixel.gif" medium="image">
			<media:title type="html">Spendenbutton</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WordPress Plugin Secure WordPress abgegeben</title>
		<link>http://bueltge.de/wordpress-plugin-secure-wordpress-abgegeben/1189/</link>
		<comments>http://bueltge.de/wordpress-plugin-secure-wordpress-abgegeben/1189/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 13:42:58 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Plugin]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordCamp]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1189</guid>
		<description><![CDATA[Das Plugin Secure WordPress wird von mir nicht mehr supportet, ich habe es an einen anderen Eigner übergeben. Für die Anwender bleibt trotzdem alles beim alten.]]></description>
			<content:encoded><![CDATA[<p>Das Plugin <a href="http://bueltge.de/wordpress-login-sicherheit-plugin/652/">Secure WordPress</a> verbindet einige Themen, um die WordPress Installation ein wenig sicherer zu machen. Das Plugin erfreut sich großer Beliebtheit und in einer der vergangenen Versionen habe ich den kostenlosen Scan eines Sicherheitsunternehmens integriert. Auch diese wird eifrig genutzt und das Bewusstsein zum Thema Sicherheit wird größer. Durch die Integration des externen Scans war ich häufig in Kontakt mit den Leuten dieses Unternehmens und ich habe im Zuge der Gespräche das Plugin an <a href="http://www.sitesecuritymonitor.com/secure-wordpress-plugin">Site Security Monitor</a> abgegeben. Damit übernehme ich keinen Support mehr.</p>
<p>Das Plugin ist weiterhin frei, Open Source und GPL. Für Anwender also kein Nachteil - für mich der Vorteil, dass ich eine Aufgabe weniger habe. Weitere Hinwiese gibt es von den neuen <a href="http://www.sitesecuritymonitor.com/blog/bid/43091/SSM-Takes-over-Leading-Wordpress-Security-Plugin">Entwicklern</a>. <span id="more-1189"></span><br />
Ich habe schon in der Vergangenheit Plugins abgegeben oder sterben lassen - dies ist immer eine Entscheidung des oder der Autoren. In diesem Fall ist wohl in beiden Nutzern gedient, denn der Backlink dieses Plugins ist sicher als hochwertig einzustufen und für Anwender bleibt das Plugin erhalten. Weitere Plugins von mir - die im SVN von WordPress gehostet sind, noch immer genug für den Abend, findet man über meinen <a href="http://wordpress.org/extend/plugins/profile/bueltge">User</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/wordpress-plugin-secure-wordpress-abgegeben/1189/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-plugin-secure-wordpress-abgegeben/1189/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>WP Maintenance Mode &amp; MySQLDumper</title>
		<link>http://bueltge.de/wp-maintenance-mode-mysqldumper/1158/</link>
		<comments>http://bueltge.de/wp-maintenance-mode-mysqldumper/1158/#comments</comments>
		<pubDate>Mon, 10 May 2010 09:37:33 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Plugin]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Sicherung]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1158</guid>
		<description><![CDATA[Wer große Datenbanken einspielen musste oder gern außerhalb von WordPress ein Backup fahren will, der kommt meist nicht am MySQLDumper vorbei. Ein sehr nützliches Tool mit vielen kleinen Details und stetiger Weiterentwicklung. Mein Plugin WP Maintenance Mode ist ebenso der stetigen Weiterentwicklung unterworfen und ist ebenso wie andere Plugins im Laufe der Zeit gewachsen. Dabei spielen Wünsche von Lesern und Nutzern eine sehr große Rolle. Ich informiere zwar selten, denke aber, dass man durch das automatische Update immer etwas mitbekommen kann. In diesem Fall ist es einen kleinen Beitrag wert.]]></description>
			<content:encoded><![CDATA[<p>Wer große Datenbanken einspielen musste, ein Tool dazu haben will, oder gern außerhalb von WordPress ein Backup fahren will, der kommt meist nicht am <a href="http://www.mysqldumper.net/">MySQLDumper</a> vorbei. Ein sehr nützliches Tool mit vielen kleinen Details und stetiger Weiterentwicklung. Mein Plugin <a href="http://bueltge.de/wp-wartungsmodus-plugin/101/">WP Maintenance Mode</a> ist ebenso der stetigen Weiterentwicklung unterworfen und ist ebenso wie andere Plugins im Laufe der Zeit gewachsen. Dabei spielen Wünsche von Lesern und Nutzern eine sehr große Rolle. Ich informiere zwar selten, denke aber, dass man durch das automatische Update immer etwas mitbekommen kann. In diesem Fall ist es einen kleinen Beitrag wert.<br />
<span id="more-1158"></span><br />
<img class="alignrightob" src="http://bueltge.de/wp-content/images/logo-truck.png" alt="MySQLDumper Logo" /><br />
<a href="http://www.beedy.de/">Stefan</a> ist Nutzer meines Plugins und ebenso aktiver Nutzer des MySQLDumpers und ihm lag es am Herzen, dass man bei einem Backup mit Hilfe des Dumpers das Blog automatisch in Wartungsmodus fährt. Nur so ist eine korrekte Sicherung der Datenbank sicher gestellt. Daher habe ich mich entschlossen, das Plugin dafür zu ändern und einen Datenbank-Eintrag anzulegen, der explizit nur die Aktivierung des Wartungsmodus speichert. Dadurch kann der MySQLDumper auf diesen Eintrag zugreifen und ihn von Außen setzen. Vorher war dies nicht möglich, da ich alle Einträge in der Datenbank serialisiert ablege und daher nur einen Eintrag benötige, Performance und Übersicht sind damit verbessert.</p>
<h3>Kurzanleitung</h3>
<p>Die folgenden zwei Einträge müssen an die eigene Datenbank angepasst werden; Datenbank und Präfix setzen und gehören in die Einstellungen des MySQLDumpers. Das Plugin WP Maintenace Mode muss im Blog aktiv sein, die bevorzugten Einstellungen setzen und den Aktiv-Status inaktiv lassen - dieser wird dann via MySQLDumper gesetzt.</p>
<h4>Blog in den Wartungsmodus via SQL</h4>
<p><code>UPDATE `wp-database`.`wp-prefix_options` SET `option_value` = '1' WHERE `wp-prefix_options`.`option_name` = 'wp-maintenance-mode-msqld';</code></p>
<h4>Ende des Wartungsmodus via SQL</h4>
<p><code>UPDATE `wp-database`.`wp-prefix_options` SET `option_value` = '0' WHERE `wp-prefix_options`.`option_name` = 'wp-maintenance-mode-msqld';</code></p>
<p>Mit der aktuellen Version des Plugins ist es nun also möglich, dass man den Eintrag setzt und der Wartungsmodus ist aktiv. Eine <a href="http://www.beedy.de/2010/05/09/automatisches-backup-der-wordpress-datenbank/">anschauliche Anleitung</a> gibt es bei Stefan, der sich an die Arbeit gemacht hat und ein <a href="http://www.beedy.de/2010/05/09/automatisches-backup-der-wordpress-datenbank/">bebildertes Tutorial</a> erstellt hat. Alternativ findet man auf der <a href="http://wordpress.org/extend/plugins/wp-maintenance-mode/">Seite zum Plugin</a> im offiziellen Verzeichnis eine Kurzanleitung; diese ist auch in der <code>readme.txt</code> des Plugins zu finden oder ebenso gibt es eine Anleitung auf den <a href="http://forum.mysqldumper.de/post41207.html#41207">Seiten des MySQLDumper</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/wp-maintenance-mode-mysqldumper/1158/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wp-maintenance-mode-mysqldumper/1158/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/logo-truck.png" />
		<media:content url="http://bueltge.de/wp-content/images/logo-truck.png" medium="image">
			<media:title type="html">MySQLDumper Logo</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>WordPress Plugin für mehr Flexibilität beim Schreiben</title>
		<link>http://bueltge.de/wordpress-plugin-flexibilitaet-schreiben/1086/</link>
		<comments>http://bueltge.de/wordpress-plugin-flexibilitaet-schreiben/1086/#comments</comments>
		<pubDate>Thu, 24 Dec 2009 04:20:27 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Themes]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[Theme]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1086</guid>
		<description><![CDATA[Heute ist er nun da, der letzte Tag im Kalender und der letzte Tag, der mich zwingt, jeden Tag einen Beitrag zu veröffentlichen. Nicht selten habe ich über Nacht noch einen kleinen Beitrag geschrieben um die Leser am kommenden Morgen mit einem neuen Türchen zu beglücken. Nicht nur Kinder mögen die Überraschung am Morgen beim Öffnen eines neuen Türchens. Für mich ist nun erst mal Pause, andere Themen sind wichtiger und nur wenige werden vermutlich diesen Beitrag hier lesen; ist doch heute Weihnachten. Mir bleibt nur noch zu sagen:
Alles liebe und Gute, die herzlichsten Wünsche, ein friedliches Weihnachtsfest und einen guten Rutsch in das neue Jahr wünsche ich allen Lesern, allen Kunden, allen netten Kontakten und jedem, der irgendwie Mensch ist und mit mir zu tun hatte. Ich freue mich auf ein neues Jahr mit euch und hadere der Dinge, die uns im neuen Jahr erreichen werden. Als kleines Präsent zum heiligen Abend heute habe ich euch ein Plugin erstellt, was euch zum einen zusätzliche Felder in den Bereich Schreiben von WordPress bringt, was euch zeigt, wie einfach man den Bereich erweitern kann und was nach belieben von euch genutzt werden darf.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://bueltge.de/wp-content/images/wp/christmas/wp-christmas-24.jpg" alt="WP Adventskalender 24" /><br />
Heute ist er nun da, der letzte Tag im Kalender und der letzte Tag, der mich zwingt, jeden Tag einen Beitrag zu veröffentlichen. Nicht selten habe ich über Nacht noch einen kleinen Beitrag geschrieben um die Leser am kommenden Morgen mit einem neuen Türchen zu beglücken. Nicht nur Kinder mögen die Überraschung am Morgen beim Öffnen eines neuen Türchens. Für mich ist nun erst mal Pause, andere Themen sind wichtiger und nur wenige werden vermutlich diesen Beitrag hier lesen; ist doch heute Weihnachten. Mir bleibt nur noch zu sagen:<br />
<strong>Alles liebe und Gute, die herzlichsten Wünsche, ein friedliches Weihnachtsfest und einen guten Rutsch in das neue Jahr wünsche ich allen Lesern, allen Kunden, allen netten Kontakten und jedem, der irgendwie Mensch ist und mit mir zu tun hatte. Ich freue mich auf ein neues Jahr mit euch und harre der Dinge, die uns im neuen Jahr erreichen werden.</strong></p>
<p><img class="centeredob" src="http://bueltge.de/wp-content/images/weihnacht.png" alt="Es weihnachtet" /></p>
<p>Als kleines Präsent zum heiligen Abend heute habe ich euch ein Plugin erstellt, was euch zum einen zusätzliche Felder in den Bereich Schreiben von WordPress bringt, was euch zeigt, wie einfach man den Bereich erweitern kann und was nach belieben von euch genutzt werden darf.<br />
<span id="more-1086"></span><br />
Das Plugin bringt 3 neue Felder in einer Metabox mit:</p>
<ul>
<li><strong>Untertitel</strong> - wie der Name schon sagt, eine Zeile ohne Formatierung in der Ausgabe</li>
<li><strong>Zusatzinformationen</strong> - ein vollwertiger Editor, ebenso kann man jede Art von Attachments hinzufügen, also fast gleich dem Content-Editor.</li>
<li><strong>Listdaten</strong> - Hier wird ermöglicht, dass man pro Zeile einen Inhalt pflegt und jede Zeile als List-Element ausgeben wird, ungeordnete Liste <code>ul</code></li>
</ul>
<p><img class="centered" src="http://bueltge.de/wp-content/images/wp/different-type/screenshot-1.png" alt="Screenshot im Edit-Bereich von WordPress" /></p>
<p>Jedes dieser Felder kann gezielt im Template des Themes eingesetzt werden, hat also einen Template Tag, der die Ausgabe steuert. Nur wenn es in diesem Feld Daten gibt, dann werden sie auch ausgegeben. Im folgenden ein Beispiel, der die drei neuen Felder ausgibt.</p>
<pre><code>
&lt;div &lt;?php post_class() ?&gt; id=&quot;post-&lt;?php the_ID(); ?&gt;&quot;&gt;

	&lt;h2&gt;&lt;?php the_title(); ?&gt;&lt;/h2&gt;

	&lt;h3&gt;&lt;?php if ( function_exists('the_DifferentTypeFacts') ) the_DifferentTypeFacts($post-&gt;ID, 'heading'); ?&gt;&lt;/h3&gt;

	&lt;div class=&quot;entry&quot;&gt;

		&lt;?php the_content('&lt;p class=&quot;serif&quot;&gt;Read the rest of this entry &amp;raquo;&lt;/p&gt;'); ?&gt;

		&lt;?php if ( function_exists('the_DifferentTypeFacts') ) the_DifferentTypeFacts($post-&gt;ID, 'additional-info'); ?&gt;

		&lt;?php if ( function_exists('the_DifferentTypeFacts') ) the_DifferentTypeFacts($post-&gt;ID, 'listdata'); ?&gt;
</code></pre>
<p><img class="centered" src="http://bueltge.de/wp-content/images/wp/different-type/screenshot-2.png" alt="Screenshot im Frontend von WordPress" /></p>
<p>Das Plugin soll als Vorlage dienen, wer also mag, der passt es an und schafft eine Oberfläche, in der sich die Autoren wohl fühlen, keine Pflege der benutzerdefinierten Felder.</p>
<p>Das Plugin sorgt dafür, dass die Metaboxen "Benutzerdefinierte Felder" und "Trackbacks" nicht mehr da sind (<code>remove_meta_box()</code>); auch das als Beispiel für die Nutzung. Zu jedem der genutzten Code-Schnipsel im Plugin gibt es hier im Blog einen Beitrag und so sollte man damit klar kommen. Im folgenden der Code ohne Zusatzfiles und im Anschluss das Plugin als Download, inkl. readme, Sprachfiles für deutsche User und die nötigen Scripte.</p>
<pre><code>
&lt;?php
/**
 * @package Different Type
 * @author Frank B&amp;uuml;ltge
 * @version 0.1
 */

/*
	Plugin Name: Different Type
	Plugin URI: http://bueltge.de/
	Description: Add different types to posts
	Author: Frank B&amp;uuml;ltge
	Version: 0.1
	License: GPL
	Author URI: http://bueltge.de/
	Last change: 24.12.2009 00:00:00
*/

/**
 * Example for use outside the loop:
 * &lt;?php the_DifferentTypeFacts($post-&gt;ID); ?&gt;
 * @param $id Integer - Post-ID
 * @param $type String - heading, additional-info, listdata (default is ''-empty)
 *
 * Example: &lt;?php the_DifferentTypeFacts($post-&gt;ID, 'heading'); ?&gt;
 */

//avoid direct calls to this file, because now WP core and framework has been used
if ( !function_exists('add_action') ) {
	header('Status: 403 Forbidden');
	header('HTTP/1.1 403 Forbidden');
	exit();
}

if ( function_exists('add_action') ) {
	//WordPress definitions
	if ( !defined('WP_CONTENT_URL') )
		define('WP_CONTENT_URL', get_option('siteurl') . '/wp-content');
	if ( !defined('WP_CONTENT_DIR') )
		define('WP_CONTENT_DIR', ABSPATH . 'wp-content');
	if ( !defined('WP_PLUGIN_URL') )
		define('WP_PLUGIN_URL', WP_CONTENT_URL.'/plugins');
	if ( !defined('WP_PLUGIN_DIR') )
		define('WP_PLUGIN_DIR', WP_CONTENT_DIR.'/plugins');
	if ( !defined('PLUGINDIR') )
		define( 'PLUGINDIR', 'wp-content/plugins' ); // Relative to ABSPATH.  For back compat.
	if ( !defined('WP_LANG_DIR') )
		define('WP_LANG_DIR', WP_CONTENT_DIR . '/languages');

	// plugin definitions
	define( 'FB_DT_BASENAME', plugin_basename(__FILE__) );
	define( 'FB_DT_BASEDIR', dirname( plugin_basename(__FILE__) ) );
	define( 'FB_DT_TEXTDOMAIN', 'different-types' );
}

if ( !class_exists( 'DifferentType' ) ) {
	class DifferentType {

		// constructor
		function DifferentType() {

			if (is_admin() ) {
				add_action( 'admin_init', array(&amp;$this, 'on_admin_init') );
				add_action( 'wp_insert_post', array(&amp;$this, 'on_wp_insert_post'), 10, 2 );
				add_action( 'init', array(&amp;$this, 'textdomain') );
				register_uninstall_hook( __FILE__, array(&amp;$this, 'uninstall') );
				add_action( &quot;admin_print_scripts-post.php&quot;, array($this, 'enqueue_script') );
				add_action( &quot;admin_print_scripts-post-new.php&quot;, array($this, 'enqueue_script') );
				add_action( &quot;admin_print_scripts-page.php&quot;, array($this, 'enqueue_script') );
				add_action( &quot;admin_print_scripts-page-new.php&quot;, array($this, 'enqueue_script') );
			}
		}

		// active for multilanguage
		function textdomain() {

			if ( function_exists('load_plugin_textdomain') )
				load_plugin_textdomain( FB_DT_TEXTDOMAIN, false, dirname( FB_DT_BASENAME ) . '/languages' );
		}

		// unsintall all postmetadata
		function uninstall() {

			$all_posts = get_posts('numberposts=0&amp;post_type=post&amp;post_status=');

			foreach( $all_posts as $postinfo) {

				delete_post_meta($postinfo-&gt;ID, '_different-types');

			}
		}

		// add script
		function enqueue_script() {
			wp_enqueue_script( 'tinymce4dt', WP_PLUGIN_URL . '/' . FB_DT_BASEDIR . '/js/script.js', array('jquery') );
		}

		// admin init
		function on_admin_init() {

			if ( !current_user_can( 'publish_posts' ) )
				return;

			add_meta_box( 'different_types',
									__( 'Different Types', FB_DT_TEXTDOMAIN ),
									array( &amp;$this, 'meta_box' ),
									'post', 'normal', 'high'
									);

			// remove meta box for trackbacks
			remove_meta_box('trackbacksdiv', 'post', 'normal');
			// remove meta box for custom fields
			remove_meta_box('postcustom', 'post', 'normal');
		}

		// check for preview
		function is_page_preview() {
			$id = (int)$_GET['preview_id'];
			if ($id == 0) $id = (int)$_GET['post_id'];
			$preview = $_GET['preview'];
			if ($id &gt; 0 &amp;&amp; $preview == 'true') {
				global $wpdb;
				$type = $wpdb-&gt;get_results(&quot;SELECT post_type FROM $wpdb-&gt;posts WHERE ID=$id&quot;);
				if ( count($type) &amp;&amp; ($type[0]-&gt;post_type == 'page') &amp;&amp; current_user_can('edit_page') )
					return true;
			}
			return false;
		}

		// after save post, save meta data for plugin
		function on_wp_insert_post($id) {
			global $id;

			if ( !isset($id) )
				$id = (int)$_REQUEST['post_ID'];
			if ( $this-&gt;is_page_preview() &amp;&amp; !isset($id) )
				$id = (int)$_GET['preview_id'];

			if ( !current_user_can('edit_post') )
				return;

			if ( isset($_POST['dt-heading']) &amp;&amp; $_POST['dt-heading'] != '' )
				$this-&gt;data['heading'] = esc_attr( $_POST['dt-heading'] );
			if ( isset($_POST['dt-additional-info']) &amp;&amp; $_POST['dt-additional-info'] != '' )
				$this-&gt;data['additional-info'] = $_POST['dt-additional-info'];
			if ( isset($_POST['dt-listdata']) &amp;&amp; $_POST['dt-listdata'] != '' )
				$this-&gt;data['listdata'] = esc_attr( $_POST['dt-listdata'] );

			if ( isset($this-&gt;data) &amp;&amp; $this-&gt;data != '' )
				update_post_meta($id, '_different-types', $this-&gt;data);
		}

		// load post_meta_data
		function load_post_meta($id) {

			return get_post_meta($id, '_different-types', true);
		}

		// meta box on post/page
		function meta_box($data) {

			$value = $this-&gt;load_post_meta($data-&gt;ID);
			?&gt;
			&lt;table id=&quot;dt-page-definition&quot; width=&quot;100%&quot; cellspacing=&quot;5px&quot;&gt;
				&lt;tr valign=&quot;top&quot;&gt;
					&lt;td style=&quot;width:20%;&quot;&gt;&lt;label for=&quot;dt-heading&quot;&gt;&lt;?php _e( 'Subtitle:', FB_DT_TEXTDOMAIN ); ?&gt;&lt;/label&gt;&lt;/td&gt;
					&lt;td&gt;&lt;input type=&quot;text&quot; id=&quot;dt-heading&quot; name=&quot;dt-heading&quot; class=&quot;heading form-input-tip&quot; size=&quot;16&quot; autocomplete=&quot;off&quot; value=&quot;&lt;?php echo $value['heading']; ?&gt;&quot; tabindex=&quot;6&quot; style=&quot;width:99.5%&quot;/&gt;&lt;/td&gt;
				&lt;/tr&gt;
				&lt;tr valign=&quot;top&quot;&gt;
					&lt;td&gt;&lt;label for=&quot;dt-additional-info&quot;&gt;&lt;?php _e( 'Additional information:', FB_DT_TEXTDOMAIN ); ?&gt;&lt;/label&gt;&lt;/td&gt;
					&lt;td&gt;&lt;textarea cols=&quot;16&quot; rows=&quot;5&quot; id=&quot;dt-additional-info&quot; name=&quot;dt-additional-info&quot; class=&quot;additional-info form-input-tip code&quot; size=&quot;20&quot; autocomplete=&quot;off&quot; tabindex=&quot;6&quot; style=&quot;width:90%&quot;/&gt;&lt;?php echo wpautop( $value['additional-info'] ); ?&gt;&lt;/textarea&gt;
						&lt;table id=&quot;post-status-info&quot; cellspacing=&quot;0&quot; style=&quot;line-height: 24px;&quot;&gt;
							&lt;tbody&gt;
								&lt;tr&gt;
									&lt;td&gt;&amp;nbsp;&lt;/td&gt;
									&lt;td&gt;&amp;nbsp;&lt;/td&gt;
								&lt;/tr&gt;
							&lt;/tbody&gt;
						&lt;/table&gt;
					&lt;/td&gt;
				&lt;/tr&gt;
				&lt;tr valign=&quot;top&quot;&gt;
					&lt;td&gt;&lt;label for=&quot;dt-listdata&quot;&gt;&lt;?php _e( 'Listdata:', FB_DT_TEXTDOMAIN ); ?&gt;&lt;/label&gt;&lt;/td&gt;
					&lt;td&gt;&lt;textarea cols=&quot;16&quot; rows=&quot;10&quot; id=&quot;dt-listdata&quot; name=&quot;dt-listdata&quot; class=&quot;listdata form-input-tip&quot; size=&quot;20&quot; autocomplete=&quot;off&quot; tabindex=&quot;6&quot; style=&quot;width:99.5%&quot;/&gt;&lt;?php echo $value['listdata']; ?&gt;&lt;/textarea&gt;&lt;br /&gt;&lt;small&gt;&lt;?php _e( 'One list per line', FB_DT_TEXTDOMAIN ) ?&gt;&lt;/small&gt;&lt;/td&gt;
				&lt;/tr&gt;
			&lt;/table&gt;
			&lt;?php
		}

		// return facts incl. markup
		function get_DifferentTypeFacts($id, $type, $value) {

			if (!$value)
				return false;
			if ( $type == '' )
				return false;

			if ( 'heading' == $type &amp;&amp; '' != $value['heading'] )
				return $value['heading'];
			if ( 'additional-info' == $type &amp;&amp; '' != $value['additional-info'] )
				return wpautop( wptexturize($value['additional-info']) );
			if ( 'listdata' == $type &amp;&amp; '' != $value['listdata'] ) {
				$return = '';
				$listdatas = preg_split(&quot;/\r\n/&quot;, $value['listdata'] );

				foreach ( (array) $listdatas as $key =&gt; $listdata ) {

					$return .= '&lt;li&gt;' . trim($listdata) . '&lt;/li&gt;';

				}
				return '&lt;ul&gt;' . $return . '&lt;/ul&gt;'. &quot;\n&quot;;
			}
		}

		// echo facts, if exists
		function DifferentTypeFacts($id, $type, $string) {

			if ( $id ) {
				$value = $this-&gt;load_post_meta($id);

				echo $this-&gt;get_DifferentTypeFacts($id, $type, $value);
			}
		}

	} // End class

	// instance class
	$DifferentType = new DifferentType();

	// use in template
	function the_DifferentTypeFacts($id, $type = '', $string = '') {
		global $DifferentType;

		$DifferentType-&gt;DifferentTypeFacts($id, $type, $string);
	}

} // End if class exists statement
?&gt;
</code></pre>
<p>Download als zip-Datei: <a href="https://github.com/bueltge/different-type/zipball/master">github.com/bueltge/different-type/zipball/master</a> - 40 kByte<br />
Das Plugin liegt in einer gepflegten Version bei <a href="https://github.com/bueltge/different-type">github.com</a> und kann dort besichtigt, geforkt und gezogen werden.</p>
<p>Ich wünsche viel Spass damit und vielleicht wird das einen oder andere Projekt mit WordPress damit in diesem Bereich ein wenig klarer und logischer für die Autoren.<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-plugin-flexibilitaet-schreiben/1086/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-plugin-flexibilitaet-schreiben/1086/feed/</wfw:commentRss>
		<slash:comments>59</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/wp/christmas/wp-christmas-24.jpg" />
		<media:content url="http://bueltge.de/wp-content/images/wp/christmas/wp-christmas-24.jpg" medium="image">
			<media:title type="html">WP Adventskalender 24</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/weihnacht.png" medium="image">
			<media:title type="html">Es weihnachtet</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/wp/different-type/screenshot-1.png" medium="image">
			<media:title type="html">Screenshot im Edit-Bereich von WordPress</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/wp/different-type/screenshot-2.png" medium="image">
			<media:title type="html">Screenshot im Frontend von WordPress</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>WordPress und Sessions</title>
		<link>http://bueltge.de/wordpress-und-sessions/1085/</link>
		<comments>http://bueltge.de/wordpress-und-sessions/1085/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 07:40:22 +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[Adventskalender]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1085</guid>
		<description><![CDATA[Man meint, dass WordPress die Nutzung von Sessions nicht unterstützt; immer wieder kommt es zu Fehlern, wenn man wie in PHP bekannt, einfach diverse Sessions initialisiert und nicht selten sucht man sich irre nach dem Problem.
Aber manchmal ist es leichter als es ausschaut, denn man kann einfach via Funktion die Session initialisieren. Achte darauf, dass die Initialisierung möglichst am Anfang der Datei ist.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://bueltge.de/wp-content/images/wp/christmas/wp-christmas-23.jpg" alt="WP Adventskalender 23" /><br />
Man meint, dass WordPress die Nutzung von Sessions nicht unterstützt; immer wieder kommt es zu Fehlern, wenn man wie in <a href="http://de2.php.net/manual/de/book.session.php">PHP bekannt</a>, einfach diverse Sessions initialisiert und nicht selten <a href="http://wordpress.org/support/topic/228763">sucht man sich irre</a> nach dem Problem.<br />
Aber manchmal ist es leichter als es ausschaut, denn man kann einfach via Funktion die Session initialisieren. Achte darauf, dass die Initialisierung möglichst am Anfang der Datei ist.<br />
<span id="more-1085"></span></p>
<pre><code>
&lt;?php
if ( !session_id() )
	session_start();
</code></pre>
<p>Ich nutze öfter noch eine kleine Erweitung und habe daher eine eigene Funktion dafür.</p>
<pre><code>
&lt;?php
if ( !session_id() )
	my_start_session();

function my_start_session() {

	@session_cache_limiter('private, must-revalidate'); //private_no_expire
	@session_cache_expire(0);
	@session_start();
}
</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-und-sessions/1085/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-und-sessions/1085/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/wp/christmas/wp-christmas-23.jpg" />
		<media:content url="http://bueltge.de/wp-content/images/wp/christmas/wp-christmas-23.jpg" medium="image">
			<media:title type="html">WP Adventskalender 23</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>Formatwechsel bei Google News-Sitemaps</title>
		<link>http://bueltge.de/formatwechsel-bei-google-news-sitemaps/1036/</link>
		<comments>http://bueltge.de/formatwechsel-bei-google-news-sitemaps/1036/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 08:02:33 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Webküche]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[WP]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1036</guid>
		<description><![CDATA[Die Google News können eine wichtige Quelle für Besucher sein, den Traffic steigern und die Wertsteigerung der Site enorm beeinflussen.
In den letzten Wochen hat Google das Format der News Sitemap erweitert und fordert alle Sites auf, die Inhalte in die News von Google einspeisen dürfen, diese neue Format zu übernehmen. Da ich in der Vergangenheit ein Plugin und eine Datei für das Root bereit gestellt habe, stelle ich nun eine neue Version zur Verfügung und denke, dass ich damit einige Anfragen in meinem Postkasten eliminieren kann.]]></description>
			<content:encoded><![CDATA[<p><img  class="alignright" src="http://bueltge.de/wp-content/images/wp/christmas/wp-christmas-15.jpg" alt="WP Adventskalender 15" /><br />
Die Google News können eine wichtige Quelle für Besucher sein, den Traffic steigern und die Wertsteigerung der Site enorm beeinflussen.<br />
In den letzten Wochen hat Google das Format der News Sitemap erweitert und fordert alle Sites auf, die Inhalte in die News von Google einspeisen dürfen, diese neue Format zu übernehmen.<br />
Da ich in der Vergangenheit ein Plugin und eine Datei für das Root bereit gestellt habe, stelle ich nun eine neue Version zur Verfügung und denke, dass ich damit einige Anfragen in meinem Postkasten eliminieren kann.<br />
<span id="more-1036"></span></p>
<ul>
<li><a href="http://www.google.com/support/news_pub/bin/answer.py?hl=de&#038;answer=161989">Häufig gestellte Fragen zum Formatwechsel bei Google News-Sitemaps</a></li>
<li><a href="http://www.google.com/support/news_pub/bin/answer.py?hl=de&#038;answer=74288">Das neue Format</a>
<pre><code class="xml">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;urlset xmlns=&quot;http://www.sitemaps.org/schemas/sitemap/0.9&quot;
        xmlns:n=&quot;http://www.google.com/schemas/sitemap-news/0.9&quot;&gt;
  &lt;url&gt;
    &lt;loc&gt;http://www.example.org/business/article55.html&lt;/loc&gt;
    &lt;n:news&gt;
      &lt;n:publication&gt;
        &lt;n:name&gt;The Example Times&lt;/n:name&gt;
        &lt;n:language&gt;en&lt;/n:language&gt;
      &lt;/n:publication&gt;
      &lt;n:access&gt;subscription&lt;/n:access&gt;
      &lt;n:genres&gt;pressrelease, blog&lt;/n:genres&gt;
      &lt;n:publication_date&gt;2008-12-23&lt;/n:publication_date&gt;
      &lt;n:title&gt;Companies A, B in Merger Talks&lt;/n:title&gt;
      &lt;n:keywords&gt;business, merger, acquisition, A, B&lt;/n:keywords&gt;
      &lt;n:stock_tickers&gt;NASDAQ:A, NASDAQ:B&lt;/n:stock_tickers&gt;
    &lt;/n:news&gt;
  &lt;/url&gt;
&lt;/urlset&gt;
</code></pre>
</li>
<li><a href="http://bueltge.de/google-news-quelle-mit-wordpress-werden/836/">Plugin und Root-Lösung</a><br />
Hintergründe und die beiden Lösungen findet ihr auf der zugehörigen Seite, die ich erweitert habe und wo man das Plugin und die Datei für das Root downloaden kann.</li>
</ul>
<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/formatwechsel-bei-google-news-sitemaps/1036/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/formatwechsel-bei-google-news-sitemaps/1036/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/wp/christmas/wp-christmas-15.jpg" />
		<media:content url="http://bueltge.de/wp-content/images/wp/christmas/wp-christmas-15.jpg" medium="image">
			<media:title type="html">WP Adventskalender 15</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>Rivva Reactions - WordPress Plugin</title>
		<link>http://bueltge.de/rivva-reaction-wordpress-plugin/1029/</link>
		<comments>http://bueltge.de/rivva-reaction-wordpress-plugin/1029/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 14:11:19 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Plugin]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Rivva]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1029</guid>
		<description><![CDATA[Rivva ist für mich nicht nur ein Experiment und ich bestaune tagtäglich den Enthusiasmus von Frank, der das Projekt allein und ohne fremde Finanzierung betreibt. Rivva lebt, verändert sich und ist mittlerweile nicht mehr nur eine kleine Site der Themenübersicht, sondern ist für mich Quelle der News beim Kaffee und ebenso Quelle der Sites, die auf mein kleines Blog verlinken. Da aber das Dashboard dieses meines kleines Blogs ebenso die Kaffeelektüre ist, lag es nahe, dass ich die News und Reaktionenen von Rivva zu meinem Blog in das Dashboard von WordPress hole - entstanden ist ein kleines Plugins, was nun gern jeder nutzen kann.]]></description>
			<content:encoded><![CDATA[<p><img class="alignrightob" src="http://bueltge.de/wp-content/images/rivva-logo.png" alt="Rivva Logo" /><br />
<a href="http://rivva.de/">Rivva</a> ist für mich nicht nur ein Experiment und ich bestaune tagtäglich den Enthusiasmus von Frank, der das Projekt allein und ohne fremde Finanzierung betreibt. Rivva lebt, verändert sich und ist mittlerweile nicht mehr nur eine kleine Site der Themenübersicht, sondern ist für mich Quelle der News beim Kaffee und ebenso Quelle der Sites und Tweets, die auf mein kleines Blog verlinken. Da aber das Dashboard dieses meines kleines Blogs ebenso die Kaffeelektüre ist, lag es nahe, dass ich die News und Reaktionenen von Rivva zu meinem Blog in das Dashboard von WordPress hole - entstanden ist ein kleines Plugins, was nun gern jeder nutzen kann.<br />
<span id="more-1029"></span></p>
<h3>Was macht das Plugin?</h3>
<p>Das Plugin erzeugt ein Widget im Dashboard, welches wie jedes andere Widget von WordPress alle Möglichkeiten der Verwaltung hat. Im Widget werden via Feed diverse News von Rivva geladen. Die Themen sind mit Hilfe von Tabs getrennt. Im ersten Tab werden die Reaktionen, welche von anderen Blogs und via Twitter kommen, zu der Installation geladen, in der das Plugin genutzt wird. Rivva listet dabei nicht nur Reaktionen von Siten, sondern auch Tweets via Twitter. In diesem Zusammenhang kann man seine eigenen Tweets filtern. Alle Einstellungen sind direkt am Widget zu steuern.</p>
<p><img class="centered" src="http://bueltge.de/wp-content/images/wp/rr.png" alt="Rivva Reactions Dashbaord Widget" /></p>
<h3>Voraussetzungen</h3>
<p>Um das Plugin zu nutzen, ist WordPress Version 2.7 das Minimum, darunter habe ich keine Tests unternommen. Das Plugin speichert diverse Einstellungen in der Datenbank zum Widget, die beim Löschen und Deaktivieren über den Adminbereich des Plugins entfernt werden.</p>
<h3>Installation</h3>
<ul>
<li>Plugin via FTP im Ordner <code>/wp-content/plugins/</code> einspielen oder direkt aus dem Backend deines Blog installieren</li>
<li>Das Plugin <em>Rivva Reactions</em> in der Verwaltung der Plugins aktivieren</li>
<li><em>Optional:</em> Das Widget im Dashboard an die gewünschte Stelle schieben und die Einstellungen setzen - Link im Kopf des Widget: <em>Konfigurieren</em></li>
</ul>
<h3>Download:</h3>
<form class="spenden" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="amount" id="eins" value="1.00" />
<input type="hidden" name="cmd" value="_xclick" />
<input type="hidden" name="business" value="frank@bueltge.de" />
<input type="hidden" name="item_name" value="Spende bueltge.de" />
<input type="hidden" name="no_shipping" value="1" />
<input type="hidden" name="return" value="http://bueltge.de/" />
<input type="hidden" name="cancel_return" value="http://bueltge.de/" />
<input type="hidden" name="currency_code" value="EUR" />
<input type="hidden" name="tax" value="0" />
<input type="hidden" name="bn" value="PP-DonationsBF" />
<input type="image" src="http://bueltge.de/wp-content/images/donate.png" style="border:0" name="submit" alt="Zahlen Sie mit PayPal - schnell, kostenlos und sicher!" /></form>
<p><strong>Ist die Arbeit nicht 1 Euro wert?</strong><br />
Jede Spende wird dankbar angenommen und erm&ouml;glicht das weitere Arbeiten an freier Software.<br />
M&ouml;chtest du mehr oder anders spenden, so besuche meine <a href="http://bueltge.de/wunschliste/">Wunschliste</a>.</p>
<p>Download als zip-Datei: <a href="http://downloads.wordpress.org/plugin/rivva-reactions.zip">downloads.wordpress.org/plugin/rivva-reactions.zip</a> - 50 kByte</p>
<h3>Historie</h3>
<p>Seit geraumer Zeit bietet das WordPress Plugin Repository die Möglichkeit der Ausgabe des Changelog an und so werde ich direkt am Plugin, in der Readme, die Historie pflegen - daher bitte ich, dass ihr euch dort die Änderungen anschaut, so dass ich ein wenig hier pflegen muss: <a href="http://wordpress.org/extend/plugins/rivva-reactions/changelog/">Changelog</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/rivva-reaction-wordpress-plugin/1029/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/rivva-reaction-wordpress-plugin/1029/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/rivva-logo.png" />
		<media:content url="http://bueltge.de/wp-content/images/rivva-logo.png" medium="image">
			<media:title type="html">Rivva Logo</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/wp/rr.png" medium="image">
			<media:title type="html">Rivva Reactions Dashbaord Widget</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>Adminer für WordPress</title>
		<link>http://bueltge.de/adminer-fuer-wordpress/1014/</link>
		<comments>http://bueltge.de/adminer-fuer-wordpress/1014/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 22:54:45 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Plugin]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1014</guid>
		<description><![CDATA[Der Zugriff auf die Datenbank ist dann und wann nötig. Aus dem Backend von WordPress heraus kann das sehr einfach sein und man muss die Zugriffsdaten nicht zur Hand haben. Sehr schnell ist ein Kundenzugriff möglich und alle Möglichkeiten, die einem mySQL in die Hand gibt, sind mit dem Plugin Adminer möglich. Vom Exportieren, Importieren und alle Arten von SQL-Zugriffen via GUI bis hin zur SQL-Anweisung kann Adminer eingesetzt werden.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://bueltge.de/wp-content/images/wp/adminer.png" alt="Adminer" /><br />
Der Zugriff auf die Datenbank ist dann und wann nötig. Aus dem Backend von WordPress heraus kann das sehr einfach sein und man muss die Zugriffsdaten nicht zur Hand haben. Sehr schnell ist ein Kundenzugriff möglich und alle Möglichkeiten, die einem mySQL in die Hand gibt, sind mit dem Plugin Adminer möglich. Vom Exportieren, Importieren und alle Arten von SQL-Zugriffen via GUI bis hin zur SQL-Anweisung kann Adminer eingesetzt werden.</p>
<p>Das Tool <a href="http://www.adminer.org/en/">Adminer</a> ist die Grundlage meines Plugins und holt das Tool direkt in das WordPress Backend. Adminer hat auch ohne mein Plugin und ohne WordPress sehr viele Vorteile und wer einfach, schnell und unkompliziert auf die Datenbank zugreifen will, der sollte sich das Tool anschauen - <a href="http://www.adminer.org/en/">Adminer</a>. Alternativ lohnt ein Blick in den <a href="http://www.drweb.de/magazin/adminer-mysql-administration-on-the-fly-kurzbeitrag/">Artikel bei Dr.Web</a>, wo Adminer ausführlich erklärt wird.<br />
<span id="more-1014"></span><br />
Nun aber zum Plugin, welches den <a href="http://www.adminer.org/en/">Adminer</a> in WordPress integriert.</p>
<h3>Was macht das Plugin</h3>
<p>Das Plugin erleichtert den Zugriff auf die Datenbank aus WordPress heraus. Es ist entstanden, weil ich nicht selten helfen soll und die Leute keinen Zugang haben, ihn nicht wissen oder auch kein Tool auf dem Webspace für den Datenbankzugang haben. Damit bleibt mir oft nur das Einrichten eines Tools und das wollte ich vereinfachen. Mit diesem Plugin geht das einfach; es ist aber ebenso mächtig wie jedes andere Tool, welches alle Zugriffe auf die Datenbank zulässt - daher <strong>Vorsicht im Umgang mit dem Plugin. Das Anlegen einer Sicherung im Vorfeld sollte selbstverständlich sein.</strong></p>
<p>Der Zugang auf Adminer wird über das Plugin gelöst, so dass man keine Zugangsdaten benötigt. Ebenfalls kann das Plugin direkt aus dem Admin-Bereich von WordPress installiert werden, so dass, je nach Webspace, nicht mal ein FTP-Zugang erforderlich ist.</p>
<p>Adminer lässt den Export und Import von großen Datenmengen zu, damit kann es sehr einfach sein, die Datenbank einzuspielen. Ebenfalls kann jede Art von SQL-Anweisung ausgeführt werden. Hinzu kommt, dass Adminer die SQL-Anweisung zu einer Anweisung via Mouse-Klick zurück gibt, so dass man die Anweisung dann als Syntax hat und anderweitig nutzen kann.</p>
<p><img class="centered" src="http://bueltge.de/wp-content/images/wp/screenshot-adminer.png" alt="Adminer in WordPress" /></p>
<p>Adminer wurde von mir in zwei Punkten verändert, da beide Themen den Zugriff auf einen Server benötigen. Die Themen Versions-Kontrolle von Adminer und Syntax-Highlightning der SQL-Anweisung benötigen einen Zugriff auf SourceForge. Beide Punkte sind nicht relevant für das Plugin und der Zugriff ist nicht bei jedem Nutzer gern gesehen. Hinzu kommt das das Highlightning eine 100 kByte Datei benötigt, die aus meiner Sicht nicht unbedingt notwendig ist. Wer beide Funktionen unbedingt haben möchte, der muss nur die Adminer-Datei im Ordner <code>inc</code> des Plugins mit dem Original austauschen.</p>
<p>Ebenfalls habe ich ein neues Stylesheet erstellt, welches die Optik von Adminer dem Design von WordPress 2.8 anpasst. Somit ist die Arbeit in gleicher Optik gewährleistet. Das Design kann auch ohne Plugin genutzt werden und steht auf der <a href="http://www.adminer.org/en/#extras">Site von Adminer zum Download</a>.</p>
<h3>Voraussetzungen</h3>
<p>Um das Plugin zu nutzen, ist WordPress Version 2.7 das Minimum, darunter habe ich keine Tests unternommen. Grundvoraussetzung ist eine saubere Installation, wo die Datenbankzugänge zu den Standard-Konstanten gepflegt sind. Das wird sicher auf die meisten Nutzer zutreffen, ist aber leider nicht immer so.</p>
<h3>Installation</h3>
<p>Es werden keinerlei Daten in der Datenbank abgelegt und es müssen auch keine Einstellungen vorgenommen werden. Daher ist die Installation auch denkbar einfach: in das Pluginverzeichnis kopieren oder mit Hilfe der automatischen Installation aus dem Backend des Blog installieren lassen und im Anschluss aktivieren.<br />
Im Anschluss steht im Bereich <em>Werkzeuge</em> (<em>Tools</em>) ein neuer Unterpunkt <em>Adminer</em> bereit, der euch den Zugriff ermöglicht. Auf der Site zu Adminer muss dann lediglich der Button <em>Start Adminer</em> genutzt werden und Adminer wird in voller Bildschirmgröße in eine Thickbox geladen, so dass man ausreichend Raum zu arbeiten hat.</p>
<h3>Download:</h3>
<form class="spenden" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="amount" id="eins" value="" />
<input type="hidden" name="cmd" value="_xclick" />
<input type="hidden" name="business" value="frank@bueltge.de" />
<input type="hidden" name="item_name" value="Spende bueltge.de Debug Objects" />
<input type="hidden" name="no_shipping" value="1" />
<input type="hidden" name="return" value="http://bueltge.de/" />
<input type="hidden" name="cancel_return" value="http://bueltge.de/" />
<input type="hidden" name="currency_code" value="EUR" />
<input type="hidden" name="tax" value="0" />
<input type="hidden" name="bn" value="PP-DonationsBF" />
<input type="image" src="http://bueltge.de/wp-content/images/donate.png" style="border:0" name="submit" alt="Zahlen Sie mit PayPal - schnell, kostenlos und sicher!" /></form>
<p><strong>Ist die Arbeit nicht 1 Euro wert?</strong><br />
Jede Spende wird dankbar angenommen und ermöglicht das weitere Arbeiten an freier Software.<br />
Möchtest du mehr oder anders spenden, so besuche meine <a href="http://bueltge.de/wunschliste/">Wunschliste</a>.<br />
Download als zip-Datei: <a href="http://downloads.wordpress.org/plugin/adminer.zip">downloads.wordpress.org/plugin/adminer.zip</a> - 200 kByte</p>
<h3>Historie</h3>
<p>Seit geraumer Zeit bietet das WordPress Plugin Repository die Möglichkeit der Ausgabe des Changelog an und so werde ich direkt am Plugin, in der Readme, die Historie pflegen - daher bitte ich, dass ihr euch <a href="http://wordpress.org/extend/plugins/adminer/changelog/">dort die Änderungen anschaut</a>, so dass ich ein wenig hier pflegen muss: <a href="http://wordpress.org/extend/plugins/adminer/changelog/">Changelog</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/adminer-fuer-wordpress/1014/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/adminer-fuer-wordpress/1014/feed/</wfw:commentRss>
		<slash:comments>48</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/wp/adminer.png" />
		<media:content url="http://bueltge.de/wp-content/images/wp/adminer.png" medium="image">
			<media:title type="html">Adminer</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/wp/screenshot-adminer.png" medium="image">
			<media:title type="html">Adminer in WordPress</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>Abhängigkeit zu anderen Plugins</title>
		<link>http://bueltge.de/abhaengigkeit-zu-anderen-plugins/1007/</link>
		<comments>http://bueltge.de/abhaengigkeit-zu-anderen-plugins/1007/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 07:08:48 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1007</guid>
		<description><![CDATA[Es kann sein, dass man beim Schreiben eines Plugins für WordPress auf ein anderes eigenständiges Plugin zurück greifen will. Sei es um eine Version mit erweiterter Funktion anzubieten oder um es einfach nur in das Layout zu integrieren. Anwendungsfälle gibt es sicher diverse und die Umsetzung ist auch nicht schwer.]]></description>
			<content:encoded><![CDATA[<p>Es kann sein, dass man beim Schreiben eines Plugins für WordPress auf ein anderes eigenständiges Plugin zurück greifen will. Sei es um eine Version mit erweiterter Funktion anzubieten oder um es einfach nur in das Layout zu integrieren. Anwendungsfälle gibt es sicher diverse und die Umsetzung ist auch nicht schwer.<br />
<span id="more-1007"></span></p>
<p>Für die Umsetzung benötigen wir die aktiven Plugins, die man in der Datenbank, Tabelle <code>options</code>, Feld <code>active_plugins</code> findet. Im Anschluss schauen ich dann einfach im Array, welches die aktiven Plugins enthält, ob das benötigte Plugin aktiv, also enthalten ist. Miit der Auswertung kann man dann diverse Themen abarbeiten.</p>
<pre><code>
$plugins = get_option('active_plugins');
$required_plugin = 'debug_queries/debug_queries.php';
$debug_queries_on = FALSE;
if ( in_array( $required_plugin , $plugins ) ) {
	$debug_queries_on = TRUE; // Bsp. für ja, ist aktiv
}
</code></pre>
<p>Alternativ kann man prüfen, ob ein Plugin aktiv ist, in dem man die Standard-Funktion von WordPress nutzt. Die Funktion <a href="http://codex.wordpress.org/Function_Reference/is_plugin_active"><code>is_plugin_active()</code></a> ist seit 2.5 im Core und erwartet lediglich die Plugin-Datei als Parameter..<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/abhaengigkeit-zu-anderen-plugins/1007/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/abhaengigkeit-zu-anderen-plugins/1007/feed/</wfw:commentRss>
		<slash:comments>1</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>Standard E-Mail Absender von WordPress ändern</title>
		<link>http://bueltge.de/standard-mail-absender-wordpress-aendern/998/</link>
		<comments>http://bueltge.de/standard-mail-absender-wordpress-aendern/998/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 07:12:22 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[eMail]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=998</guid>
		<description><![CDATA[WordPress erlaubt es einfach und schnell neue Nutzer im Backend anzulegen. Dabei wird seit Version 2.8 von WordPress der Zugang optional per E-Mail versandt. Eine schöne Funktionen, die man nur leider nicht in den Einstellungen so weit ändern kann, dass ein Absender gesetzt ist, den man als Administrator möchte; es ist immer WordPress, der die Mails verschickt.

Trotzdem gibt es dazu eine Möglichkeit und mit Hilfe von zwei Hooks kann hier der Absender geändert werden. Ich habe ein kleines Plugin dazu erstellt, so dass man einfach und unkompliziert den Absender-Namen und die Absender-E-Mail beeinflussen kann.]]></description>
			<content:encoded><![CDATA[<p>WordPress erlaubt es einfach und schnell neue Nutzer im Backend anzulegen. Dabei wird seit Version 2.8 von WordPress der Zugang optional per E-Mail versandt. Eine schöne Funktionen, die man nur leider nicht in den Einstellungen so weit ändern kann, dass ein Absender gesetzt ist, den man als Administrator möchte; es ist immer WordPress, der die Mails verschickt.</p>
<p>Trotzdem gibt es dazu eine Möglichkeit und mit Hilfe von zwei Hooks kann hier der Absender geändert werden. Ich habe ein kleines Plugin dazu erstellt, so dass man einfach und unkompliziert den Absender-Namen und die Absender-E-Mail beeinflussen kann.<br />
<span id="more-998"></span>-<br />
Das Plugin ist im folgendem als Quellcode verfügbar und hat keinerlei Optionen, die über einen Maske eingestellt werden und legt auch keine Daten in der Datenbank an. Wer das möchte, bitte einfach das Plugin erweitern. Für meine Anforderungen genügt es so.</p>
<pre><code>
&lt;?php
/**
 * @package Change Mail From in WordPress
 * @author Frank B&amp;uuml;ltge
 * @version 0.1
 */

/*
Plugin Name: Change Mail From in WordPress
Plugin URI: http://bueltge.de/
Description: Change the default address that WordPress sends it&amp;rsquo;s email from.
Version: 0.1
Author: Frank B&amp;uuml;ltge
Author URI: http://bueltge.de/
Last Change: 11.08.2009 01:41:06
*/

if ( !function_exists('add_action') ) {
	header('Status: 403 Forbidden');
	header('HTTP/1.1 403 Forbidden');
	exit();
}

if ( !class_exists('wp_mail_from') ) {
	class wp_mail_from {

		function wp_mail_from() {
			add_filter( 'wp_mail_from', array(&amp;$this, 'fb_mail_from') );
			add_filter( 'wp_mail_from_name', array(&amp;$this, 'fb_mail_from_name') );
		}

		// new name
		function fb_mail_from_name() {
			$name = 'bueltge.de [by:ltge.de]';
			// alternative
			// $name = get_option('blogname');
			$name = esc_attr($name);
			return $name;
		}

		// new email-adress
		function fb_mail_from() {
			$email = 'frank@bueltge.de';
			$email = is_email($email);
			return $email;
		}

	}

	$wp_mail_from = new wp_mail_from();
}
?&gt;
</code></pre>
<p>Die Werte für Name und E-Mail sind direkt zu den Variablen zu pflegen, jeweils in der zugehörigen Funktion. Im Anschluss werden beide Werte durch entsprechende Funktionen geprüft, was man in dem Fall nicht unbedingt benötigt; soll eher an diese Möglichkeiten in WordPress erinnern.</p>
<p>Als Hinweis: die Funktion <code>esc_attr()</code> steht erst seit Version 2.8 zur Verfügung und ersetzt die Funktion <code>attribute_escape()</code>. Sollte man die Lösung also in einer älteren Version benötigen und den Filter nutzen wollen, dann die Funktion ändern.</p>
<p>Für Hinweise und Verbesserungen bin ich wie immer dankbar. Eine Plattform mit WordPress kann mit Hilfe dieser Möglichkeit sicher ein wenig verbessert werden und die User wundern sich nicht über den Absender WordPress.<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/standard-mail-absender-wordpress-aendern/998/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/standard-mail-absender-wordpress-aendern/998/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>Gewinnspiel: neue Designs für Wartungsmodus gesucht</title>
		<link>http://bueltge.de/gewinnspiel-neue-designs-wartungsmodus-gesucht/997/</link>
		<comments>http://bueltge.de/gewinnspiel-neue-designs-wartungsmodus-gesucht/997/#comments</comments>
		<pubDate>Sat, 08 Aug 2009 09:31:27 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Plugin]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[StyleSheet]]></category>
		<category><![CDATA[Wartungsmodus]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=997</guid>
		<description><![CDATA[Das Plugin <a href="http://bueltge.de/wp-wartungsmodus-plugin/101/">Wartungsmodus</a> nutze nicht nur ich vielfach und über die lange Zeit habe ich daran kaum geändert. Nun kam aber <a href="http://www.davidhellmann.com">David Hellmann</a> mit einem wunderbaren Designvorschlag und so habe ich das Plugin komplett neu erstellt und diverse Optionen übernommen und die Möglichkeit geschaffen, dass man das Design der Site im Wartungsmodus wählen kann. Ebenso kann man nun diverse Optionen wählen und muss nicht am Code ändern.]]></description>
			<content:encoded><![CDATA[<p>Das Plugin <a href="http://bueltge.de/wp-wartungsmodus-plugin/101/">Wartungsmodus</a> nutze nicht nur ich vielfach und über die lange Zeit habe ich daran kaum geändert. Nun kam aber <a href="http://www.davidhellmann.com">David Hellmann</a> mit einem wunderbaren Designvorschlag und so habe ich das Plugin komplett neu erstellt und diverse Optionen übernommen und die Möglichkeit geschaffen, dass man das Design der Site im Wartungsmodus wählen kann. Ebenso kann man nun diverse Optionen wählen und muss nicht am Code ändern.</p>
<p>Das Plugin ermöglicht es registrierten Nutzern das Backend weiterhin zu nutzen und alle Nutzer, die die Rechte haben am Design zu ändern (Objekt: <code>switch_themes</code>), können auch das Frontend im aktiviertem Theme sehen. Damit kann man live am Blog schrauben und kontrollieren, ohne das Besucher etwas mitbekommen. Sie werden vertröstet und bekommen eine Information über die voraussichtliche Wartezeit.<br />
<span id="more-997"></span></p>
<p>Trotzdem war mir wichtig, dass es einfach und unkompliziert in der Nutzung ist und so gibt es keine eigene Seite im Backend für die Einstellungen, die werden direkt beim Aktivieren des Plugins ermöglicht und der Wartungsmodus ist aktiv, wenn man das Plugin aktiv hat.</p>
<p><img class="centered" src="http://bueltge.de/wp-content/images/thumb-wartungsmodus-truck.png" alt="Wartungsmodus mit dem Design The Truck" /></p>
<p>Ebenfalls habe ich die Site so aufgebaut, dass ich recht einfach neue Designs ergänzen kann, was mich zu der Idee brachte: <strong>Sendet mir eure Designvorschläge und ich baue sie in das Plugin ein.</strong></p>
<h4>Wie geht das?</h4>
<p>Um neue Designs für den Wartungsmodus zu hinterlegen, benötige ich das Stylesheet von euch und die entsprechenden Bilder, wenn es notwendig ist. Wird der Text <em>Wartungsmodus</em> als Bild ausgegeben, so benötige ich dass auch als PSD-Format und mindestens in englischer und deutscher Sprache als Bild (PNG oder JPG), da das Plugin mehrsprachig arbeiten kann.</p>
<p>Um nun aber das CSS zu schreiben, bedarf es einem Markup und das sieht wie folgt aus. Auf Basis dieses Markup möchte ich Stylesheets von euch.</p>
<pre><code>
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;
&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;de&quot; lang=&quot;de&quot; id=&quot;wartungsmodus&quot; &gt;

&lt;head&gt;
	&lt;title&gt;Blogname - Maintenance Mode&lt;/title&gt;
&lt;/head&gt;

&lt;body&gt;

	&lt;div id=&quot;header&quot;&gt;
		&lt;p&gt;WP Dev&lt;/p&gt;
	&lt;/div&gt;

	&lt;div id=&quot;content&quot;&gt;

		&lt;h1&gt;Maintenance Mode&lt;/h1&gt;
		&lt;p&gt;Sorry for the inconvenience.&lt;br /&gt;Our website is currently undergoing scheduled maintenance.&lt;br /&gt;&lt;strong&gt;Please try back in 231 weeks.&lt;/strong&gt;&lt;br /&gt;Thank you for your understanding.&lt;/p&gt;
		&lt;div class=&quot;admin&quot;&gt;&lt;a href=&quot;http://example.com/wp-admin/&quot;&gt;Admin-Login&lt;/a&gt;&lt;/div&gt;
	&lt;/div&gt;

	&lt;div id=&quot;footer&quot;&gt;
		&lt;p&gt;&lt;a href=&quot;http://bueltge.de/&quot;&gt;Plugin by: &lt;img src=&quot;http://bueltge.de/favicon.ico&quot; alt=&quot;bueltge.de&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
	&lt;/div&gt;

&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<h4>Was hat man davon?</h4>
<p>Diese Frage werden sich sicher wieder einige stellen und ich hoffe einfach, dass man hier den Mehrwert erkennt, mir ein Feedback gibt und seinen Anteil am Plugin leistet. Im weiteren macht CSS Spaß und so sollte es nicht schwer sein, ein so einfaches Markup zu stylen.</p>
<p>Zusätzlich werde ich natürlich die Autoren des jeweiligen Designs auf der Plugin-Seite bei <a href="http://wordpress.org/extend/plugins/wartungsmodus/">wordpress.org</a> listen, der Dank der Nutzer ist euch damit sicher. Ebenfalls wird ein Link optional auf der Site sein, die den Wartungsmodus aktiv hat; also abhängig vom Design wird das Favicon des jeweiligen Ideengebers gelistet. Da das Plugin unter GNU-Lizenz fällt, ist es möglich, diesen Link im Backend von WordPress zu deaktivieren.</p>
<h4>Gibt es was zu gewinnen?</h4>
<p>Trotzdem soll es als zusätzlichen Anreiz einige Gewinne geben und so habe ich mir überlegt, dass ich gern etwas Platz in meinen Buchregalen haben will. Daher werde ich ausmisten und einige Bücher zum Thema Web abgeben, die sicher der eine oder andere lesen möchte. Insofern denke ich, dass es lohnend ist, hier ein wenig CSS zu machen und mir ein Design für den Wartungsmodus einer Seite zukommen zu lassen.</p>
<p>Zu gewinnen gibt es:</p>
<ul>
<li><a href="http://www.amazon.de/gp/product/3836211092?ie=UTF8&#038;tag=buedebyltgde-21&#038;linkCode=as2&#038;camp=1638&#038;creative=19454&#038;creativeASIN=3836211092">Modernes Webdesign: Gestaltungsprinzipien, Webstandards, Praxis</a> von <a href="http://www.manuela-hoffmann.info/">Manuela Hoffmann</a></li>
<li><a href="https://www.amazon.de/dp/382724224X?tag=buedebyltgde-21&#038;camp=2906&#038;creative=19474&#038;linkCode=as4&#038;creativeASIN=382724224X&#038;adid=0Y3GCQJHJJ7GXHMX7HEV&#038;">Little Boxes, Teil 1. Webseiten gestalten mit CSS. Grundlagen</a> von <a href="http://infotekten.de/">Peter Müller</a></li>
<li><a href="https://www.amazon.de/dp/3827243076?tag=buedebyltgde-21&#038;camp=2906&#038;creative=19474&#038;linkCode=as4&#038;creativeASIN=3827243076&#038;adid=0Q6X0NY8VDNPGPGTCC71&#038;">Little Boxes, Teil 2. Webseiten gestalten mit CSS. Navigation, Inhalte, YAML &#038; mehr</a> von <a href="http://infotekten.de/">Peter Müller</a></li>
<li><a href="https://www.amazon.de/dp/3826616162?tag=buedebyltgde-21&#038;camp=2906&#038;creative=19474&#038;linkCode=as4&#038;creativeASIN=3826616162&#038;adid=044WRRV87EKQ8RPKFT5X&#038;">CSS - Webdesign mit Style. Praxis, standardkonforme Lösungen, Referenz</a> von Ralph Schulz</li>
<li><a href="https://www.amazon.de/dp/3898645231?tag=buedebyltgde-21&#038;camp=2906&#038;creative=19474&#038;linkCode=as4&#038;creativeASIN=3898645231&#038;adid=18CP1A3W7X2ZP8F309CA&#038;">Der CSS-Problemlöser: Über 100 Lösungen für Cascading Stylesheets</a> von <a href="http://www.rachelandrew.co.uk/">Rachel Andrew</a></li>
</ul>
<p>Die Bücher werde ich per Zufall verlosen und im Anschluss versenden.</p>
<h4>Zeitrahmen?</h4>
<p>Prinzipiell kann man mir immer gern neue Designs zukommen lassen; ich werde die dann einbauen. Das Gewinnspiel wird bis zum letzten Tag des Monats gehen, also <strong>bis zum 31. August 2009</strong>.</p>
<p>Sendet mir also eure Stylesheets, noch besser ein Zip mit allen Daten und ich sage schon jetzt <strong>vielen Dank</strong> dafür.</p>
<p>Noch der Hinweis: sollten sehr viele Design-Vorschläge kommen, so werde ich die besten auswählen lassen und dann in das Plugin übernehmen. Aber bis dahin bin ich erst mal auf eure Ideen und Umsetzungen gespannt und hoffe, dass ihr trotz Sommerloch ein wenig Lust auf CSS habt oder gern eines der Bücher gewinnen wollt.<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/gewinnspiel-neue-designs-wartungsmodus-gesucht/997/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/gewinnspiel-neue-designs-wartungsmodus-gesucht/997/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/thumb-wartungsmodus-truck.png" />
		<media:content url="http://bueltge.de/wp-content/images/thumb-wartungsmodus-truck.png" medium="image">
			<media:title type="html">Wartungsmodus mit dem Design The Truck</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>Debug Objects - WordPress Plugin</title>
		<link>http://bueltge.de/debug-objects-wordpress-plugin/966/</link>
		<comments>http://bueltge.de/debug-objects-wordpress-plugin/966/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 10:46:28 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Plugin]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[StyleSheet]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[Theme]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=966</guid>
		<description><![CDATA[Das Plugin <em>Debug objects</em> gibt dem User, der die entsprechenden Rechte mitbringt, im Standard der Administrator, eine große Anzahl von Informationen an die Hand. Es werden Werte und Inhalte ausgelesen und im Frontend des Blog dargestellt um Fehler zu analysieren aber auch um WordPress besser zu verstehen und an die Anforderungen anzupassen. Daher ist es für Entwickler und Leute, die WordPress besser verstehen wollen, geeignet.]]></description>
			<content:encoded><![CDATA[<p>Das Plugin <em>Debug objects</em> gibt dem User, der die entsprechenden Rechte mitbringt, im Standard der Administrator, eine große Anzahl von Informationen an die Hand. Es werden Werte und Inhalte ausgelesen und im Frontend des Blog dargestellt um Fehler zu analysieren aber auch um WordPress besser zu verstehen und an die Anforderungen anzupassen. Daher ist es für Entwickler und Leute, die WordPress besser verstehen wollen, geeignet.<br />
<span id="more-966"></span><br />
Das Plugin gibt in diversen Tabs Informationen zu; im folgenden eine Liste von diversen Möglichkeiten, auch wenn das Plugin wesentlich mehr ausgibt. Je nach Arbeitsweise können diverse Reiter besonders interessant sein oder weg fallen. Aktuell habe ich aber keine Optionen hinterlegt, die das steuern sollen.</p>
<ul>
<li>PHP</li>
<li>Speichernutzung</li>
<li>Betriebssystem</li>
<li>Server</li>
<li>WordPress Version</li>
<li>Sprache</li>
<li>sehr umfangreiche Definitionen von diversen Konstanten</li>
<li>Cookie Definitionen</li>
<li>Dateirechte</li>
<li>Eigene User- und Usermeta-Tabellen</li>
<li>FTP- und SSH Definitionen</li>
<li>Query informationen</li>
<li>Conditional Tags; wert des Tags</li>
<li>Theme informationen</li>
<li>Template informationen</li>
<li>Cache inhalte</li>
<li>Hooks und Filter</li>
<li>Funktionen, die auf Hooks und Filter ansprechen</li>
<li>inhalte von Arrays zu Hooks und Filtern</li>
<li>alle definierten Konstanten</li>
</ul>
<p>Das Plugin kann mit meinem Plugin <a href="http://bueltge.de/wordpress-performance-analysieren-plugin/558/">Debug Queries</a> zusammen arbeiten und damit die Analyse und Optimierung des Blog genutzt werden. <a href="http://bueltge.de/wordpress-performance-analysieren-plugin/558/">Debug Queries</a> wird in die Ausleitung integriert und ist auch nur für User mit den entsprechenden Rechten möglich. Damit kann die Analyse und Optimierung der Performance an WordPress verbessert werden.</p>
<p>Das Plugin filtert keinerlei Werte und sollte nur zur Information und Optimierung eingesetzt werden, es ist nicht im Livebetrieb des Blog empfohlen. Für Entwickler kann es schnell Daten liefern, die die Einsatz in einer Entwicklungsumgebung befürworten.</p>
<h3>Beispielscreenshot des ersten Tab</h3>
<p><img class="centered" src="http://bueltge.de/wp-content/images/wp/debug_objects.png" alt="Screenshot Debug Objects Tab 1" /></p>
<h3>Download:</h3>
<form class="spenden" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="amount" id="eins" value="" />
<input type="hidden" name="cmd" value="_xclick" />
<input type="hidden" name="business" value="frank@bueltge.de" />
<input type="hidden" name="item_name" value="Spende bueltge.de Debug Objects" />
<input type="hidden" name="no_shipping" value="1" />
<input type="hidden" name="return" value="http://bueltge.de/" />
<input type="hidden" name="cancel_return" value="http://bueltge.de/" />
<input type="hidden" name="currency_code" value="EUR" />
<input type="hidden" name="tax" value="0" />
<input type="hidden" name="bn" value="PP-DonationsBF" />
<input type="image" src="http://bueltge.de/wp-content/images/donate.png" style="border:0" name="submit" alt="Zahlen Sie mit PayPal - schnell, kostenlos und sicher!" /></form>
<p><strong>Ist die Arbeit nicht 1 Euro wert?</strong><br />
Jede Spende wird dankbar angenommen und ermöglicht das weitere Arbeiten an freier Software.<br />
Möchtest du mehr oder anders spenden, so besuche meine <a href="http://bueltge.de/wunschliste/">Wunschliste</a>.</p>
<p>Der Download ist im offiziellen Repository von WP zu finden: <a href="http://wordpress.org/extend/plugins/debug-objects/">wordpress.org/extend/plugins/debug-objects/</a> oder nutzt den Installer direkt im Administrationsbereich von WordPress</p>
<h3>Historie</h3>
<p>Seit geraumer Zeit bietet das WordPress Plugin Repository die Möglichkeit der Ausgabe des Changelog an und so werde ich direkt am Plugin, in der Readme die Historie pflegen - daher bitte ich, dass ihr euch <a href="http://wordpress.org/extend/plugins/debug-objects/changelog/">dort die Änderungen anschaut</a>, so dass ich ein wenig hier pflegen muss: <a href="http://wordpress.org/extend/plugins/debug-objects/changelog/">Changelog</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/debug-objects-wordpress-plugin/966/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/debug-objects-wordpress-plugin/966/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/wp/debug_objects.png" />
		<media:content url="http://bueltge.de/wp-content/images/wp/debug_objects.png" medium="image">
			<media:title type="html">Screenshot Debug Objects Tab 1</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>Entwürfe aller Autoren in WordPress</title>
		<link>http://bueltge.de/entwuerfe-aller-autoren-in-wordpress/960/</link>
		<comments>http://bueltge.de/entwuerfe-aller-autoren-in-wordpress/960/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 09:29:07 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Feed]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=960</guid>
		<description><![CDATA[Nicht selten wird WordPress mit Inhalt durch unterschiedliche Autoren befüllt; dabei kann es hilfreich sein, wenn man einen schnellen und aktuellen Blick auf die Entwürfe der aller Autoren hat. In unserem gemeinsamen Blog WPEnginer ist das so und so hatten wir in der Vergangenheit einen Feed ergänzt, der uns alle Entwürfe aller Autoren liefert und uns damit immer auf dem aktuellen Stand hält.]]></description>
			<content:encoded><![CDATA[<p>Nicht selten wird WordPress mit Inhalt durch unterschiedliche Autoren befüllt; dabei kann es hilfreich sein, wenn man einen schnellen und aktuellen Blick auf die Entwürfe der aller Autoren hat. In unserem gemeinsamen Blog <a href="http://wpengineer.com/">WP Engineer</a> ist das so und so hatten wir in der Vergangenheit einen Feed ergänzt, der uns alle Entwürfe aller Autoren liefert und uns damit immer auf dem aktuellen Stand hält.</p>
<p>Nun ist die Arbeitsweise jedes Autors anders und das Dashboard ist Zentrum der Information. Daher haben wir uns entschlossen, ein Widget im Dashboard zu ergänzen, welches die letzten fünf Entwürfe aller Autoren zeigt. Dabei wurde das bestehende Plugin <a href="http://bueltge.de/wordpress-feed-fuer-entwuerfe/829/">Draft Feed</a> ausgebaut und die kann nun.</p>
<ul>
<li>einen Feed aller Entwürfe liefern</li>
<li>und die letzten 5 Entwürfe aller Autoren im Dashboard anzeigen.</li>
</ul>
<p><span id="more-960"></span><br />
<img class="centered" src="http://bueltge.de/wp-content/images/wp/recents_draft.png" alt="Screenshot des Dashbaord Widget der letzten Entwürfe aller Autoren" /></p>
<p>Wer ebenso diese Möglichkeit benötigt, der kann das entstandene Plugin im <a href="http://bueltge.de/wordpress-feed-fuer-entwuerfe/829/">Blogbeitrag</a> herunter laden und nutzen. Es gibt absichtlich keine Optionen und auch keine Ablage im SVN von WordPress - wer mag nutzt es und ergänzt es um seine Wünsche oder fragt in meinen Kommentaren an, ob man es ausbauen könnte. Viel Freude damit.</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/entwuerfe-aller-autoren-in-wordpress/960/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/entwuerfe-aller-autoren-in-wordpress/960/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/wp/recents_draft.png" />
		<media:content url="http://bueltge.de/wp-content/images/wp/recents_draft.png" medium="image">
			<media:title type="html">Screenshot des Dashbaord Widget der letzten Entwürfe aller Autoren</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>WordPress Hooks definieren und nutzen</title>
		<link>http://bueltge.de/wordpress-hooks-definieren-und-nutzen/909/</link>
		<comments>http://bueltge.de/wordpress-hooks-definieren-und-nutzen/909/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 23:49:01 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Themes]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Hook]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[Theme]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=909</guid>
		<description><![CDATA[WordPress basiert auf dem sogenannten Hook-System. Dieses dient WordPress und allen Erweiterungen um Funktionen an bestimmter Stelle einzubringen. Hintergründe und Verständnis habe ich versucht in unzähligen Blogartikeln zu verbreiten und aktuell im <a href="http://t3n.yeebase.com/magazin/vorschau-t3n-nr-16/">t3n-Magazin</a>. Die Hooks sind aber nicht nur zum einhaken, sondern können ebenso in eigene Erweiterungen genutzt werden und so mehr Übersicht schaffen und zusätzliche Schnittstellen für weitere Entwicklungen bieten. Gerade die zweite Möglichkeit ist interessant, wenn man ein Theme erstellt, welches diverse Schnittstellen bieten soll oder ein Plugin kreiert, was durch andere Autoren erweitert werden kann oder als Framework dienen soll.]]></description>
			<content:encoded><![CDATA[<p>WordPress basiert auf dem sogenannten Hook-System. Dieses dient WordPress und allen Erweiterungen um Funktionen an bestimmter Stelle einzubringen. Hintergründe und Verständnis habe ich versucht in unzähligen Blogartikeln zu verbreiten und aktuell im <a href="http://t3n.yeebase.com/magazin/vorschau-t3n-nr-16/">t3n-Magazin</a>. Die Hooks sind aber nicht nur zum einhaken, sondern können ebenso in eigene Erweiterungen genutzt werden und so mehr Übersicht schaffen und zusätzliche Schnittstellen für weitere Entwicklungen bieten. Gerade die zweite Möglichkeit ist interessant, wenn man ein Theme erstellt, welches diverse Schnittstellen bieten soll oder ein Plugin kreiert, was durch andere Autoren erweitert werden kann oder als Framework dienen soll.<br />
<span id="more-909"></span></p>
<p>Um die <a href="http://bueltge.de/wp-hinweise-fuer-das-schreiben-eines-wordpress-plugins/150/">Möglichkeit der Hooks</a> zu nutzen, kann man die gleiche Funktion wie WordPress (<code><a href="http://codex.wordpress.org/Function_Reference/do_action">do_action()</a></code>) einsetzen und muss sich nicht eigene Funktionen oder Methoden erstellen.</p>
<p>In der folgenden Beispiel-Funktion, welche ich beim Theme in der <code>functions.php</code> ablege, meines Footer <code>my_footer()</code> wird ein Hook definiert mit Hilfe der Funktion <code>do_action()</code>. Dieser kann nun genutzt werden und das einhaken ist von Außen möglich. </p>
<pre><code>
function my_footer() {
    do_action('my_footer');
}
</code></pre>
<p>Die eigentliche Funktion rufen ich im Template des Theme auf, in diesem Fall natürlich in der <code>footer.php</code> des Themes, im Beispiel direkt vor dem schließenden body-Tag.</p>
<pre><code>
&lt;?php my_footer(); ?&gt;

&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>Nun möchte ich bei einem Plugin oder einer beliebigen Funktion im Theme auf diesen Bereich zugreifen und hake mich dort ein. Dazu schreibe ich meine eigene Funktion, zum Beispiel eine Funktion um die ganzen Code-Schnipsel für die Statistik-Tools zu hinterlegen und lege diese Schnipsel in dieser einen Funktion ab. Diese neue Funktion nenne ich <code>example_function()</code>. Um nun diese Funktion an der betreffenden Stelle meines Hooks einzuhaken, muss ich lediglich die klassische Hook-Funktionalität von WordPress nutzen. Mit Hilfe von <code><a href="http://codex.wordpress.org/Function_Reference/add_action">add_action()</a></code> wähle ich also den Hook, der es sein soll und übergebe die Funktion, die ich erstellt habe. Im Anschluss gebe ich noch einen dritten Parameter mit, der mir die Priorität des Einhaken gewährleistet, was nicht zwingend ist. Der Standard-Wert für die Priorität ist 10 und hat hier weiter keinen Einfluss, da ich bisher nur diese eine Funktion via Hook anspreche.</p>
<pre><code>
add_action('my_footer', 'example_function', 1);
</code></pre>
<p>Um das Verständnis der Priorität besser zu verstehen, erstellen wir eine weitere Funktion, die mir weiteren Inhalt an die Stelle meines Hook bringt und haken diesen Funktion <code>example_function_2()</code> ebenso ein, aber mit einer niedrigeren Priorität als die erste Funktion und damit wird sie nach der Funktion <code>example_function()</code> gehakt.</p>
<pre><code>
add_action('my_footer', 'example_function_2', 2);
</code></pre>
<p>Nicht selten können mit Hilfe dieser Möglichkeit sehr saubere Lösungen geschaffen werden und so ist es vielleicht für den einen oder anderen Leser nützlich. Gerade viele kleine Code-Schnipsel, die man im Footer ablegt, können so sauber in eine Funktion ausgelagert werden und je nach Bedarf einfacher deaktiviert werden. gesteuert wird damit alles über Hooks und in der <code>functions.php</code> oder gar einer Options-Seite zum Theme im Backend.<br />
Diese Möglichkeit steht im übrigen in allen WordPress Versionen zur Verfügung, einschließlich der kommenden Version 2.8.<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-hooks-definieren-und-nutzen/909/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-hooks-definieren-und-nutzen/909/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>Meta Links bei WordPress Plugins</title>
		<link>http://bueltge.de/meta-links-bei-wordpress-plugins/950/</link>
		<comments>http://bueltge.de/meta-links-bei-wordpress-plugins/950/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 12:22:08 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[WP]]></category>
		<category><![CDATA[WP2.8]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=950</guid>
		<description><![CDATA[In der Vergangenheit habe ich schon im Artikel &#8222;<a href="http://bueltge.de/wordpress-plugins-bereichern/811/">WordPress Plugins bereichern</a>&#8220; erläutert, wie man Plugins um einige nützliche Funktionen erweitert und so die Nutzung optimiert. Dabei gib es unter anderem um den Absprung mit Hilfe eines einfachen Links zur Options-Seite des Plugins.
Mit WordPress 2.8 wird die Plugin-Seite ein wenig verändert sein und so gibt es einen Hook, den man bequem mit dem Link befüllen kann und den Komfort ein wenig erhöht.]]></description>
			<content:encoded><![CDATA[<p>In der Vergangenheit habe ich schon im Artikel &#8222;<a href="http://bueltge.de/wordpress-plugins-bereichern/811/">WordPress Plugins bereichern</a>&#8220; erläutert, wie man Plugins um einige nützliche Funktionen erweitert und so die Nutzung optimiert. Dabei gib es unter anderem um den Absprung mit Hilfe eines einfachen Links zur Options-Seite des Plugins.<br />
Mit WordPress 2.8 wird die Plugin-Seite ein wenig verändert sein und so gibt es einen Hook, den man bequem mit dem Link befüllen kann und den Komfort ein wenig erhöht.<br />
<span id="more-950"></span><br />
Die Möglichkeit, die hier im Tutorial erklärt wird, klappt erst ab Version 2.8 von WordPress, in der Version 2.7 musste das anders geschehen, dazu dient der schon erwähnte Artikel &#8222;<a href="http://bueltge.de/wordpress-plugins-bereichern/811/">WordPress Plugins bereichern</a>&#8220; oder ohne große Erklärung der folgende Schnipsel.</p>
<pre><code>
/**
 * @version WP 2.7
 * Add action link(s) to plugins page
 */
function set_plugin_meta27($links) {

	$plugin = plugin_basename(__FILE__);

	$settings_link = sprintf( '&lt;a href=&quot;options-general.php?page=%s&quot;&gt;%s&lt;/a&gt;', $plugin, __('Settings') );
	array_unshift( $links, $settings_link );

	return $links;
}

add_filter( 'plugin_action_links_' . $plugin, 'set_plugin_meta27' );
</code></pre>
<p>Ab Version 2.8 sieht das Backend leicht verändert aus und so werden auch die Meta Links zu Plugins anders präsentiert. Dazu gibt es aber einen Hook, so dass man den Inhalt zu den Plugins und die Links zum Plugin selbst erweitern kann. Der folgende Screenshot sollte das verdeutlichen.</p>
<p><a href="http://bueltge.de/wp-content/images/wp28/28_plugin_meta_link.png" title="Klick für Zoom"><img class="centered" src="http://bueltge.de/wp-content/images/wp28/28_plugin_meta_link-thumb.png" alt="Screenshot Beispiel Link am Plugin" title="Screenshot eines Beispiel-Link am Plugin in der Plugin-Site des WordPress Backend" /></a></p>
<p>Um nun den Link zur Options-Site zu setzen, dient der folgenden Code, der die URL des Links aus den Plugin-Daten nutzt und der Begriff &#8222;Settings&#8220; muss in dem Fall nicht für die Mehrsprachigkeit erweitert werden, da er im Sprachpaket von WordPress dabei ist und somit automatisch beim Umstellen des Backend auf eine neue Sprache übersetzt wird.</p>
<pre><code>
function set_plugin_meta($links, $file) {

	$plugin = plugin_basename(__FILE__);

	// create link
	if ($file == $plugin) {
		return array_merge(
			$links,
			array( sprintf( '&lt;a href=&quot;options-general.php?page=%s&quot;&gt;%s&lt;/a&gt;', $plugin, __('Settings') ) )
		);
	}

	return $links;
}

add_filter( 'plugin_row_meta', 'set_plugin_meta', 10, 2 );
</code></pre>
<p>Alternativ kann folgenden Funktion aufgerufen werden, die den Link vor die Links von WP setzt, was ich für übersichtlicher halte. Die Funktion wird im Anschluss je nach Version von WordPress aufgerufen, dabei kann die Funktion für 2.7 und 2.8 genutzt werden; ich hooke lediglich bei 2.8 nochmal, so dass der Link auch im rechten Bereich vorhanden ist.</p>
<pre><code>
// plugin definitions
define( 'FB_BASENAME', plugin_basename( __FILE__ ) );
define( 'FB_BASEFOLDER', plugin_basename( dirname( __FILE__ ) ) );
define( 'FB_FILENAME', str_replace( FB_BASEFOLDER.'/', '', plugin_basename(__FILE__) ) );

function filter_plugin_meta($links, $file) {

	/* create link */
	if ( $file == FB_BASENAME ) {
		array_unshift(
			$links,
			sprintf( '&lt;a href=&quot;options-general.php?page=%s&quot;&gt;%s&lt;/a&gt;', FB_FILENAME, __('Settings') )
		);
	}

	return $links;
}

global $wp_version;
if ( version_compare( $wp_version, '2.8alpha', '&gt;' ) )
	add_filter( 'plugin_row_meta', 'filter_plugin_meta', 10, 2 ); // only 2.8 and higher
add_filter( 'plugin_action_links', 'filter_plugin_meta', 10, 2 );
</code></pre>
<p>Diese kleine Erweiterung im Plugin macht nicht viel Mühe und stellt aus meiner Sicht trotzdem einen Mehrwert dar, der es dem Nutzer einfach macht, die Options-Seite zum Plugin aufzusuchen. Schade nur, dass die Entwickler von WordPress jedesmal diesen Hook ändern und man nun schon fast zu jeder neuen Version von WordPress eine eigene Funktion benötigt um diesen kleinen Mehrwert zu setzen.<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/meta-links-bei-wordpress-plugins/950/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/meta-links-bei-wordpress-plugins/950/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/wp28/28_plugin_meta_link-thumb.png" />
		<media:content url="http://bueltge.de/wp-content/images/wp28/28_plugin_meta_link-thumb.png" medium="image">
			<media:title type="html">Screenshot eines Beispiel-Link am Plugin in der Plugin-Site des WordPress Backend</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>FirePHP und WordPress</title>
		<link>http://bueltge.de/firephp-und-wordpress/944/</link>
		<comments>http://bueltge.de/firephp-und-wordpress/944/#comments</comments>
		<pubDate>Thu, 07 May 2009 20:14:39 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Webdeveloper]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=944</guid>
		<description><![CDATA[Um die Arbeit in meinen Entwicklungen zu erleichtern und zu beschleunigen habe ich immer ein Plugin aktiv, mit dem ich mir diverse Inhalte ausgebe, direkt über die <a href="http://bueltge.de/firephp-verwenden-einfuehrung/720/">Ausgabe von FirePHP</a>. Dabei ist ein kleines Plugin entstanden, welches nun eine ganze Reihe von Konstanten und Variablen enthält, die ich auf Basis der kommenden Version 2.8 von WordPress realisiert habe. Da ich denke, dass das nützlich sein kann, hier der Download zum Plugin und die Inhalte, die ich ausgebe, falls jemand selbst eine Lösung hat und nur die Konstanten und Variablen benötigt.]]></description>
			<content:encoded><![CDATA[<p><em>If you want the information in english - please have a look on <a href="http://wordpress.org/extend/plugins/wp-firephp/">this page</a>.</em></p>
<p>WordPress benutzt eine ganze Reihe von <a href="http://bueltge.de/test/wp/wp-konstanten.html">Konstanten</a> und Variablen, die nützlich sein können. Um so besser, wenn man weis, was sich darin befindet. Eine saubere Ausgabe der Inhalte lässt sich hervorragend mit der Firefox-Erweiterung <a href="http://www.firephp.org/">FirePHP</a> für <a href="http://www.getfirebug.com/">Firebug</a> realisieren.</p>
<p>Um die Arbeit in meinen Entwicklungen zu erleichtern und zu beschleunigen habe ich immer ein Plugin aktiv, mit dem ich mir diverse Inhalte ausgebe, direkt über die <a href="http://bueltge.de/firephp-verwenden-einfuehrung/720/">Ausgabe von FirePHP</a>. Dabei ist ein kleines Plugin entstanden, welches nun eine ganze Reihe von Konstanten und Variablen enthält, die ich auf Basis der kommenden Version 2.8 von WordPress realisiert habe. Da ich denke, dass das nützlich sein kann, hier der Download zum Plugin und die Inhalte, die ich ausgebe, falls jemand selbst eine Lösung hat und nur die Konstanten und Variablen benötigt.</p>
<p><a href="http://bueltge.de/wp-content/images/firephp/wp-firephp2.png" title="Klick für Zoom"><img class="centered" src="http://bueltge.de/wp-content/images/firephp/wp-firephp2_thumb.png" alt="FirePHP und WordPress" /></a><br />
<span id="more-944"></span></p>
<h3>Plugin WP FirePHP</h3>
<p>Um einfach und schnell in WordPress mit FirePHP zu arbeiten kann das Plugin genutzt werden. Es setzt keine Einstellungen oder ähnliches in der Datenbank, der Code ist beispielhaft, so dass man einfach erweitern kann und Bereiche auskommentieren kann, die man nicht benötigt. Aktuell sind diverse Inhalte drin, die in WordPress nützlich sind, dazu gehören die Konstanten, globale Variablen und von PHP vordefinierte Variablen.</p>
<p>Das Plugin im SVN von WordPress geladen werden: <a href="http://wordpress.org/extend/plugins/wp-firephp/">WP FirePHP</a>. Die Installation ist wie gewohnt, ab in den Plugin-Ordner und im Backend der Umgebung aktivieren.</p>
<p>Das Plugin arbeitet mindestens mit WordPress Version 1.5, getestet bis 2.9-rare.</p>
<h3>Download:</h3>
<form class="spenden" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="amount" id="eins" value="" />
<input type="hidden" name="cmd" value="_xclick" />
<input type="hidden" name="business" value="frank@bueltge.de" />
<input type="hidden" name="item_name" value="Spende bueltge.de" />
<input type="hidden" name="no_shipping" value="1" />
<input type="hidden" name="return" value="http://bueltge.de/" />
<input type="hidden" name="cancel_return" value="http://bueltge.de/" />
<input type="hidden" name="currency_code" value="EUR" />
<input type="hidden" name="tax" value="0" />
<input type="hidden" name="bn" value="PP-DonationsBF" />
<input type="image" src="http://bueltge.de/wp-content/images/donate.png" style="border:0" name="submit" alt="Zahlen Sie mit PayPal - schnell, kostenlos und sicher!" /></form>
<p><strong>Ist die Arbeit nicht 1 Euro wert?</strong><br />
Jede Spende wird dankbar angenommen und ermöglicht das weitere Arbeiten an freier Software.<br />
Möchtest du mehr oder anders spenden, so besuche meine <a href="http://bueltge.de/wunschliste/">Wunschliste</a>.</p>
<p>Download als zip-Datei:<br />
<a href="http://downloads.wordpress.org/plugin/wp-firephp.zip">downloads.wordpress.org/plugin/wp-firephp.zip</a> - ~80 kByte</p>
<h4>WordPress Konstanten und Variablen</h4>
<pre><code>
$wp_constants = array(
'ABSPATH'                            => ABSPATH,
'ADMIN_COOKIE_PATH'                  => ADMIN_COOKIE_PATH,
'APP_REQUEST'                        => APP_REQUEST,
'ARRAY_A'                            => ARRAY_A,
'ARRAY_N'                            => ARRAY_N,
'ATOM'                               => ATOM,
'AUTH_COOKIE'                        => AUTH_COOKIE,
'AUTH_KEY'                           => AUTH_KEY,
'AUTOSAVE_INTERVAL'                  => AUTOSAVE_INTERVAL,
'COMMENTS_TEMPLATE'                  => COMMENTS_TEMPLATE,
'COOKIEHASH'                         => COOKIEHASH,
'COOKIEPATH'                         => COOKIEPATH,
'COOKIE_DOMAIN'                      => COOKIE_DOMAIN,
'CRLF'                               => CRLF,
'CUSTOM_TAGS'                        => CUSTOM_TAGS,
'DB_CHARSET'                         => DB_CHARSET,
'DB_COLLATE'                         => DB_COLLATE,
'DB_HOST'                            => DB_HOST,
'DB_NAME'                            => DB_NAME,
'DB_PASSW'                           => DB_PASSW,
'DB_PASSWORD'                        => DB_PASSWORD,
'DB_USER'                            => DB_USER,
'DOING_AJAX'                         => DOING_AJAX,
'DOING_AUTOSAVE'                     => DOING_AUTOSAVE,
'DOING_CRON'                         => DOING_CRON,
'EP_ALL'                             => EP_ALL,
'EP_ATTACHMENT'                      => EP_ATTACHMENT,
'EP_AUTHORS'                         => EP_AUTHORS,
'EP_CATEGORIES'                      => EP_CATEGORIES,
'EP_COMMENTS'                        => EP_COMMENTS,
'EP_DATE'                            => EP_DATE,
'EP_DAY'                             => EP_DAY,
'EP_MONTH'                           => EP_MONTH,
'EP_NONE'                            => EP_NONE,
'EP_PAGES'                           => EP_PAGES,
'EP_PERMALINK'                       => EP_PERMALINK,
'EP_ROOT'                            => EP_ROOT,
'EP_SEARCH'                          => EP_SEARCH,
'EP_TAGS'                            => EP_TAGS,
'EP_YEAR'                            => EP_YEAR,
'EZSQL_VERSION'                      => EZSQL_VERSION,
'FORCE_SSL_ADMIN'                    => FORCE_SSL_ADMIN,
'FORCE_SSL_LOGIN'                    => FORCE_SSL_LOGIN,
'FTP_ASCII'                          => FTP_ASCII,
'FTP_AUTOASCII'                      => FTP_AUTOASCII,
'FTP_BINARY'                         => FTP_BINARY,
'FTP_FORCE'                          => FTP_FORCE,
'IS_PROFILE_PAGE'                    => IS_PROFILE_PAGE,
'JSON_BOOL'                          => JSON_BOOL,
'JSON_END_ARRAY'                     => JSON_END_ARRAY,
'JSON_END_OBJ'                       => JSON_END_OBJ,
'JSON_FLOAT'                         => JSON_FLOAT,
'JSON_INT'                           => JSON_INT,
'JSON_IN_ARRAY'                      => JSON_IN_ARRAY,
'JSON_IN_BETWEEN'                    => JSON_IN_BETWEEN,
'JSON_IN_OBJECT'                     => JSON_IN_OBJECT,
'JSON_KEY'                           => JSON_KEY,
'JSON_NULL'                          => JSON_NULL,
'JSON_SKIP'                          => JSON_SKIP,
'JSON_START_ARRAY'                   => JSON_START_ARRAY,
'JSON_START_OBJ'                     => JSON_START_OBJ,
'JSON_STR'                           => JSON_STR,
'LANGDIR'                            => LANGDIR,
'LOGGED_IN_COOKIE'                   => LOGGED_IN_COOKIE,
'LOGGED_IN_KEY'                      => LOGGED_IN_KEY,
'MAGPIE_CACHE_AGE'                   => MAGPIE_CACHE_AGE,
'MAGPIE_CACHE_DIR'                   => MAGPIE_CACHE_DIR,
'MAGPIE_CACHE_FRESH_ONLY'            => MAGPIE_CACHE_FRESH_ONLY,
'MAGPIE_CACHE_ON'                    => MAGPIE_CACHE_ON,
'MAGPIE_DEBUG'                       => MAGPIE_DEBUG,
'MAGPIE_FETCH_TIME_OUT'              => MAGPIE_FETCH_TIME_OUT,
'MAGPIE_INITALIZED'                  => MAGPIE_INITALIZED,
'MAGPIE_USER_AGENT'                  => MAGPIE_USER_AGENT,
'MAGPIE_USE_GZIP'                    => MAGPIE_USE_GZIP,
'MAX_EXECUTION_TIME'                 => MAX_EXECUTION_TIME,
'MAX_RESULTS'                        => MAX_RESULTS,
'MC_LOGGER_DEBUG'                    => MC_LOGGER_DEBUG,
'MC_LOGGER_ERROR'                    => MC_LOGGER_ERROR,
'MC_LOGGER_FATAL'                    => MC_LOGGER_FATAL,
'MC_LOGGER_INFO'                     => MC_LOGGER_INFO,
'MC_LOGGER_WARN'                     => MC_LOGGER_WARN,
'OBJECT'                             => OBJECT,
'OBJECT_K'                           => OBJECT_K,
'PASS_COOKIE'                        => PASS_COOKIE,
'PCLZIP_ATT_FILE_NAME'               => PCLZIP_ATT_FILE_NAME,
'PCLZIP_ATT_FILE_NEW_FULL_NAME'      => PCLZIP_ATT_FILE_NEW_FULL_NAME,
'PCLZIP_ATT_FILE_NEW_SHORT_NAME'     => PCLZIP_ATT_FILE_NEW_SHORT_NAME,
'PCLZIP_CB_POST_ADD'                 => PCLZIP_CB_POST_ADD,
'PCLZIP_CB_POST_DELETE'              => PCLZIP_CB_POST_DELETE,
'PCLZIP_CB_POST_EXTRACT'             => PCLZIP_CB_POST_EXTRACT,
'PCLZIP_CB_POST_LIST'                => PCLZIP_CB_POST_LIST,
'PCLZIP_CB_PRE_ADD'                  => PCLZIP_CB_PRE_ADD,
'PCLZIP_CB_PRE_DELETE'               => PCLZIP_CB_PRE_DELETE,
'PCLZIP_CB_PRE_EXTRACT'              => PCLZIP_CB_PRE_EXTRACT,
'PCLZIP_CB_PRE_LIST'                 => PCLZIP_CB_PRE_LIST,
'PCLZIP_ERROR_EXTERNAL'              => PCLZIP_ERROR_EXTERNAL,
'PCLZIP_ERR_ALREADY_A_DIRECTORY'     => PCLZIP_ERR_ALREADY_A_DIRECTORY,
'PCLZIP_ERR_BAD_CHECKSUM'            => PCLZIP_ERR_BAD_CHECKSUM,
'PCLZIP_ERR_BAD_EXTENSION'           => PCLZIP_ERR_BAD_EXTENSION,
'PCLZIP_ERR_BAD_EXTRACTED_FILE'      => PCLZIP_ERR_BAD_EXTRACTED_FILE,
'PCLZIP_ERR_BAD_FORMAT'              => PCLZIP_ERR_BAD_FORMAT,
'PCLZIP_ERR_DELETE_FILE_FAIL'        => PCLZIP_ERR_DELETE_FILE_FAIL,
'PCLZIP_ERR_DIRECTORY_RESTRICTION'   => PCLZIP_ERR_DIRECTORY_RESTRICTION,
'PCLZIP_ERR_DIR_CREATE_FAIL'         => PCLZIP_ERR_DIR_CREATE_FAIL,
'PCLZIP_ERR_FILENAME_TOO_LONG'       => PCLZIP_ERR_FILENAME_TOO_LONG,
'PCLZIP_ERR_INVALID_ARCHIVE_ZIP'     => PCLZIP_ERR_INVALID_ARCHIVE_ZIP,
'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE' => PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE,
'PCLZIP_ERR_INVALID_OPTION_VALUE'    => PCLZIP_ERR_INVALID_OPTION_VALUE,
'PCLZIP_ERR_INVALID_PARAMETER'       => PCLZIP_ERR_INVALID_PARAMETER,
'PCLZIP_ERR_INVALID_ZIP'             => PCLZIP_ERR_INVALID_ZIP,
'PCLZIP_ERR_MISSING_FILE'            => PCLZIP_ERR_MISSING_FILE,
'PCLZIP_ERR_MISSING_OPTION_VALUE'    => PCLZIP_ERR_MISSING_OPTION_VALUE,
'PCLZIP_ERR_NO_ERROR'                => PCLZIP_ERR_NO_ERROR,
'PCLZIP_ERR_READ_OPEN_FAIL'          => PCLZIP_ERR_READ_OPEN_FAIL,
'PCLZIP_ERR_RENAME_FILE_FAIL'        => PCLZIP_ERR_RENAME_FILE_FAIL,
'PCLZIP_ERR_UNSUPPORTED_COMPRESSION' => PCLZIP_ERR_UNSUPPORTED_COMPRESSION,
'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION'  => PCLZIP_ERR_UNSUPPORTED_ENCRYPTION,
'PCLZIP_ERR_USER_ABORTED'            => PCLZIP_ERR_USER_ABORTED,
'PCLZIP_ERR_WRITE_OPEN_FAIL'         => PCLZIP_ERR_WRITE_OPEN_FAIL,
'PCLZIP_OPT_ADD_COMMENT'             => PCLZIP_OPT_ADD_COMMENT,
'PCLZIP_OPT_ADD_PATH'                => PCLZIP_OPT_ADD_PATH,
'PCLZIP_OPT_BY_EREG'                 => PCLZIP_OPT_BY_EREG,
'PCLZIP_OPT_BY_INDEX'                => PCLZIP_OPT_BY_INDEX,
'PCLZIP_OPT_BY_NAME'                 => PCLZIP_OPT_BY_NAME,
'PCLZIP_OPT_BY_PREG'                 => PCLZIP_OPT_BY_PREG,
'PCLZIP_OPT_COMMENT'                 => PCLZIP_OPT_COMMENT,
'PCLZIP_OPT_EXTRACT_AS_STRING'       => PCLZIP_OPT_EXTRACT_AS_STRING,
'PCLZIP_OPT_EXTRACT_DIR_RESTRICTION' => PCLZIP_OPT_EXTRACT_DIR_RESTRICTION,
'PCLZIP_OPT_EXTRACT_IN_OUTPUT'       => PCLZIP_OPT_EXTRACT_IN_OUTPUT,
'PCLZIP_OPT_NO_COMPRESSION'          => PCLZIP_OPT_NO_COMPRESSION,
'PCLZIP_OPT_PATH'                    => PCLZIP_OPT_PATH,
'PCLZIP_OPT_PREPEND_COMMENT'         => PCLZIP_OPT_PREPEND_COMMENT,
'PCLZIP_OPT_REMOVE_ALL_PATH'         => PCLZIP_OPT_REMOVE_ALL_PATH,
'PCLZIP_OPT_REMOVE_PATH'             => PCLZIP_OPT_REMOVE_PATH,
'PCLZIP_OPT_REPLACE_NEWER'           => PCLZIP_OPT_REPLACE_NEWER,
'PCLZIP_OPT_SET_CHMOD'               => PCLZIP_OPT_SET_CHMOD,
'PCLZIP_OPT_STOP_ON_ERROR'           => PCLZIP_OPT_STOP_ON_ERROR,
'PCLZIP_READ_BLOCK_SIZE'             => PCLZIP_READ_BLOCK_SIZE,
'PCLZIP_SEPARATOR'                   => PCLZIP_SEPARATOR,
'PCLZIP_TEMPORARY_DIR'               => PCLZIP_TEMPORARY_DIR,
'PLUGINDIR'                          => PLUGINDIR,
'PLUGINS_COOKIE_PATH'                => PLUGINS_COOKIE_PATH,
'RSS'                                => RSS,
'SECURE_AUTH_COOKIE'                 => SECURE_AUTH_COOKIE,
'SECURE_AUTH_KEY'                    => SECURE_AUTH_KEY,
'SITECOOKIEPATH'                     => SITECOOKIEPATH,
'STATUS_INTERVAL'                    => STATUS_INTERVAL,
'STYLESHEETPATH'                     => STYLESHEETPATH,
'TEMPLATEPATH'                       => TEMPLATEPATH,
'TEST_COOKIE'                        => TEST_COOKIE,
'USER_COOKIE'                        => USER_COOKIE,
'WPINC'                              => WPINC,
'WPLANG'                             => WPLANG,
'WP_ADMIN'                           => WP_ADMIN,
'WP_CONTENT_DIR'                     => WP_CONTENT_DIR,
'WP_CONTENT_URL'                     => WP_CONTENT_URL,
'WP_IMPORTING'                       => WP_IMPORTING,
'WP_INSTALLING'                      => WP_INSTALLING,
'WP_LANG_DIR'                        => WP_LANG_DIR,
'WP_MEMORY_LIMIT'                    => WP_MEMORY_LIMIT,
'WP_PLUGIN_DIR'                      => WP_PLUGIN_DIR,
'WP_PLUGIN_URL'                      => WP_PLUGIN_URL,
'WP_USE_THEMES'                      => WP_USE_THEMES,
'WXR_VERSION'                        => WXR_VERSION,
'XMLRPC_REQUEST'                     => XMLRPC_REQUEST
);

$wp_globals_a_l = array(
'$admin_page_hooks'                  => $admin_page_hooks,
'$ajax_results'                      => $ajax_results,
'$all_links'                         => $all_links,
'$allowedposttags'                   => $allowedposttags,
'$allowedtags'                       => $allowedtags,
'$authordata'                        => $authordata,
'$bgcolor'                           => $bgcolor,
'$cache_categories'                  => $cache_categories,
'$cache_lastcommentmodified'         => $cache_lastcommentmodified,
'$cache_lastpostdate'                => $cache_lastpostdate,
'$cache_lastpostmodified'            => $cache_lastpostmodified,
'$cache_userdata'                    => $cache_userdata,
'$category_cache'                    => $category_cache,
'$class'                             => $class,
'$comment'                           => $comment,
'$comment_cache'                     => $comment_cache,
'$comment_count_cache'               => $comment_count_cache,
'$commentdata'                       => $commentdata,
'$current_user'                      => $current_user,
'$day'                               => $day,
'$debug'                             => $debug,
'$descriptions'                      => $descriptions,
'$error'                             => $error,
'$feeds'                             => $feeds,
'$id'                                => $id,
'$is_apache'                         => $is_apache,
'$is_IIS'                            => $is_IIS,
'$is_macIE'                          => $is_macIE,
'$is_winIE'                          => $is_winIE,
'$l10n'                              => $l10n,
'$locale'                            => $locale,
'$link'                              => $link
);
$wp_globals_m_r = array(
'$m'                                 => $m,
'$map'                               => $map,
'$max_num_pages'                     => $max_num_pages,
'$menu'                              => $menu,
'$mode'                              => $mode,
'$month'                             => $month,
'$month_abbrev'                      => $month_abbrev,
'$monthnum'                          => $monthnum,
'$more'                              => $more,
'$multipage'                         => $multipage,
'$names'                             => $names,
'$newday'                            => $newday,
'$numpages'                          => $numpages,
'$page'                              => $page,
'$page_cache'                        => $page_cache,
'$paged'                             => $paged,
'$pagenow'                           => $pagenow,
'$pages'                             => $pages,
'$parent_file'                       => $parent_file,
'$preview'                           => $preview,
'$previousday'                       => $previousday,
'$previousweekday'                   => $previousweekday,
'$plugin_page'                       => $plugin_page,
'$post'                              => $post,
'$post_cache'                        => $post_cache,
'$post_default_category'             => $post_default_category,
'$post_default_title'                => $post_default_title,
'$post_meta_cache'                   => $post_meta_cache,
'$postc'                             => $postc,
'$postdata'                          => $postdata,
'$posts'                             => $posts,
'$posts_per_page'                    => $posts_per_page,
'$previousday'                       => $previousday,
'$request'                           => $request,
'$result'                            => $result,
'$richedit'                          => $richedit
);
$wp_globals_s_v = array(
'$single'                            => $single,
'$submenu'                           => $submenu,
'$table_prefix'                      => $table_prefix,
'$targets'                           => $targets,
'$timedifference'                    => $timedifference,
'$timestart'                         => $timestart,
'$timeend'                           => $timeend,
'$updated_timestamp'                 => $updated_timestamp,
'$urls'                              => $urls,
'$user_ID'                           => $user_ID,
'$user_email'                        => $user_email,
'$user_identity'                     => $user_identity,
'$user_level'                        => $user_level,
'$user_login'                        => $user_login,
'$user_pass_md5'                     => $user_pass_md5,
'$user_url'                          => $user_url
);
$wp_globals_w = array(
'$weekday'                           => $weekday,
'$weekday_abbrev'                    => $weekday_abbrev,
'$weekday_initial'                   => $weekday_initial,
'$withcomments'                      => $withcomments,
'$wp'                                => $wp,
'$wp_broken_themes'                  => $wp_broken_themes,
'$wp_db_version'                     => $wp_db_version,
'$wp_did_header'                     => $wp_did_header,
'$wp_did_template_redirect'          => $wp_did_template_redirect,
'$wp_file_description'               => $wp_file_description,
'$wp_filter'                         => $wp_filter,
'$wp_importers'                      => $wp_importers,
'$wp_plugins'                        => $wp_plugins,
'$wp_themes'                         => $wp_themes,
'$wp_object_cache'                   => $wp_object_cache,
'$wp_query'                          => $wp_query,
'$wp_queries'                        => $wp_queries,
'$wp_rewrite'                        => $wp_rewrite,
'$wp_roles'                          => $wp_roles,
'$wp_similiesreplace'                => $wp_similiesreplace,
'$wp_smiliessearch'                  => $wp_smiliessearch,
'$wp_version'                        => $wp_version,
'$wpcommentspopupfile'               => $wpcommentspopupfile,
'$wpcommentsjavascript'              => $wpcommentsjavascript
);
</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/firephp-und-wordpress/944/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/firephp-und-wordpress/944/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/firephp/wp-firephp2_thumb.png" />
		<media:content url="http://bueltge.de/wp-content/images/firephp/wp-firephp2_thumb.png" medium="image">
			<media:title type="html">FirePHP und WordPress</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>WordPress Design Tweaks</title>
		<link>http://bueltge.de/wordpress-design-tweaks/939/</link>
		<comments>http://bueltge.de/wordpress-design-tweaks/939/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 07:27:08 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[StyleSheet]]></category>
		<category><![CDATA[Theme]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Webdeveloper]]></category>
		<category><![CDATA[WP]]></category>
		<category><![CDATA[WP2.8]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=939</guid>
		<description><![CDATA[Mit WordPress 2.7 wurde uns ein neues Design im Backend beschert, diesmal mit viel Aufwand und Analyse um ein angenehmes Arbeiten zu ermöglichen und möglichst viel Inhalt strukturiert darzustellen. Aus meiner Sicht ist das gelungen und die Arbeit mit WordPress war für mich persönlich noch nie so angenehm. Da ich aber WordPress vorrangig im Unternehmensumfeld einsetze, die Corporate Identity auch im Backend realisiere und Anwender von Laie bis Profi habe, sind die Anforderungen doch extrem unterschiedlich. Dabei habe ich bisher auf mein Plugin Adminimize gesetzt, das Backend auf die Anforderungen reduziert und das Design dem Corporate Design angepasst.]]></description>
			<content:encoded><![CDATA[<p>Mit WordPress 2.7 wurde uns ein neues Design im Backend beschert, diesmal mit viel Aufwand und Analyse um ein angenehmes Arbeiten zu ermöglichen und möglichst viel Inhalt strukturiert darzustellen. Aus meiner Sicht ist das gelungen und die Arbeit mit WordPress war für mich persönlich noch nie so angenehm. Da ich aber WordPress vorrangig im Unternehmensumfeld einsetze, die Corporate Identity auch im Backend realisiere und Anwender von Laie bis Profi habe, sind die Anforderungen doch extrem unterschiedlich. Dabei habe ich bisher auf mein Plugin <a href="http://bueltge.de/wordpress-admin-theme-adminimize/674/">Adminimize</a> gesetzt, das Backend auf die Anforderungen reduziert und das Design dem Corporate Design angepasst.</p>
<p>Aktuell macht Jane Wells im WordPress Team sich einige <a href="http://wordpress.org/development/2009/04/design-tweaks-whos-in-an-idea-in-three-acts/">Gedanken zum Backend Design und ruft zu Ideen auf</a>, die das Backend nicht neu gestalten, nur optimieren, so dass Nutzer nicht verschreckt werden. Aus meiner Sicht ist es gerade da sinnvoll, dass man die Hooks in WordPress nutzt und optionale Design einbringt, die der jeweilige Nutzer wählen kann. SO hole ich auch diverse Designs in Backend und überlasse die Wahl dem Nutzer. Lediglich die übergeordneten Themen, wie Farben und Logo, gebe ich im Rahmen des Corporate Designs vor. Da ich <a href="http://bueltge.de/wordpress-admin-theme-adminimize/674/">Adminimize</a> in den letzten Nächten erweitert haben, besonders gepuscht durch den Spendenmarathon der lieben Leserin <a href="http://tevarra.net">Samantha Phoumarath</a>.<br />
<span id="more-939"></span><br />
<a href="http://bueltge.de/wp-content/images/adminimize/fb_fixed_head_navi_open_menu.png" title="klick für Zoom"><img class="centered" src="http://bueltge.de/wp-content/images/adminimize/fb_fixed_head_navi_open_menu450.png" alt="Screenshot Fixed Design" /></a></p>
<p>Der obige Screenshot mag auf den ersten Blick nicht sonderlich das Design von WordPress verändern, aber es ist anders, anders in der Arbeitsweise - Header und Menu sind fix, so dass man aus jeder Scrollposition darauf zugreifen kann. Eine ganze Reihe von Nutzern empfinden das Arbeiten so besser und angenehmer. Als Hinweis sei aber vermerkt, dass meine jetzige Lösung nur in Browsern funktioniert, die <code>fixed</code> via CSS akzeptieren.</p>
<p>Im weiteren habe ich diverse Bereiche verkleinert, so sind Meta Boxen wesentlich schmaler; es ist mehr Platz ohne den Whitespace zu reduzieren.</p>
<p>Im weiteren habe ich ein alternatives Design im Plugin untergebracht, welches den Header verändert und die Navi damit um 50 Pixel nach oben holt. Auch dies wird gern genutzt, wobei hier schon der Wunsch des fixed Menu aufkam, aber bisher nicht umgesetzt wurde.</p>
<p><img class="centered" src="http://bueltge.de/wp-content/images/adminimize/fb_fixed_head_navi_tweak.png" alt="Screenshot Fixed Design" /></p>
<p>Vielleicht hat der eine oder andere Ideen, Wünsche und Hinweise zum Plugin, zum Design, die Kommentarfunktion steht offen.</p>
<p>Das <a href="http://bueltge.de/wordpress-admin-theme-adminimize/674/">Plugin</a> selbst ist vorrangig für andere Zwecke erstellt und verfügt aktuell über sehr viele Optionen, so kann man den Bereich Schreiben Beitrage und Seiten einschränken, die Oberfläche der Links beeinflussen, globale Bereiche verändern, HEader-Bereiche einschränken, verändern, Dashboard und Footer deaktivieren, umleiten mit eigenen Inhalten befüllen oder auch eigene Optionen hinzubringen, in dem man Klassen und IDs hinterlegt, einen Namen vergibt und diese dann wieder abhängig von der Benutzerrolle, wobei auch eigene Rollen unterstützt werden, deaktivierbar sind.<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-design-tweaks/939/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-design-tweaks/939/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/adminimize/fb_fixed_head_navi_open_menu450.png" />
		<media:content url="http://bueltge.de/wp-content/images/adminimize/fb_fixed_head_navi_open_menu450.png" medium="image">
			<media:title type="html">Screenshot Fixed Design</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/adminimize/fb_fixed_head_navi_tweak.png" medium="image">
			<media:title type="html">Screenshot Fixed Design</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>
	</channel>
</rss>

