<?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>Philip Hetjens &#187; Plugin</title>
	<atom:link href="http://www.hetjens.com/tag/plugin/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hetjens.com</link>
	<description>Webworker. Blogwerker. Wahlzürcher.</description>
	<lastBuildDate>Mon, 14 May 2012 17:35:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>wpSEO: Benutzen wir bei  Blogwerk schon sehr lange</title>
		<link>http://www.hetjens.com/2009/08/06/wpseo-benutzen-wir-bei-blogwerk-schon-sehr-lange/</link>
		<comments>http://www.hetjens.com/2009/08/06/wpseo-benutzen-wir-bei-blogwerk-schon-sehr-lange/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 11:12:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Blogwerk]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[wpSEO]]></category>

		<guid isPermaLink="false">http://hetjens.com/?p=43</guid>
		<description><![CDATA[wpSEO ist ein klasse Plugin für Wordpress und der Entwickler gibt gute Hilfe. <a href="http://www.hetjens.com/2009/08/06/wpseo-benutzen-wir-bei-blogwerk-schon-sehr-lange/">Weiterlesen</a>]]></description>
			<content:encoded><![CDATA[<p>Das WordPress-Plugin wpSEO benutzen wir bei Blogwerk schon sehr lange. Vor ziemlich genau einen Jahr haben wir auf die kostenpflichtige Version gewechselt (am Anfang gab es noch eine kostenlose Version). Und wir haben es bis heute nicht bereut. Von den Funktionen her bietet WPSEO alles, was man sich wünschen kann (abgesehen vielleicht von einer automatischen Erstellung einer XML-Sitemap). Die Funktionsliste läst sich überall im Internet lesen, darauf möchte ich gar nicht eingehen.<span id="more-46"></span></p>
<p>Ich schreibe hier, weil ich mit der Unterstützung von Sergej, dem Entwickler, super zufrieden bin. Er ist (fast) immer erreichbar, nett und hilfreich. Neue Funktionswunsch? Kein Problem! Gibt&#8217;s meistens mit dem nächsten Update. Das ist genau der Vorteil von kostenpflichtiger Software im Vergleich zur open source Software. Man bekommt guten Support. Bei Open Source Software kann es passieren, dass der Entwickler keine Lust mehr hat, und das Produkt einfach von heute auf morgen einstellt. Bei bezahlter Software passiert das nicht so einfach.</p>
<p><a href="http://clix.superclix.de/cgi-bin/tclix.cgi?id=hetjens&#038;pp=14042&#038;linknr=23563">WPSEO gibt es auf www.wpseo.de (Affiliate-Link)</a>. Sergej hat auch noch ein paar andere Plugins geschrieben, u.a. die <a href="http://antispambee.com/">AntispamBee</a>. Und sein <a href="http://twitter.com/wpSEO">Twitter-Stream</a> ist auch interessant.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hetjens.com/2009/08/06/wpseo-benutzen-wir-bei-blogwerk-schon-sehr-lange/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Settings API: WordPress Standardoptionsseiten erweitern</title>
		<link>http://www.hetjens.com/2009/08/05/settings-api-wordpress-standardoptionsseiten-erweitern/</link>
		<comments>http://www.hetjens.com/2009/08/05/settings-api-wordpress-standardoptionsseiten-erweitern/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 10:46:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technologie]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Settings API]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://hetjens.com/?p=42</guid>
		<description><![CDATA[Mit der Settings-API von Wordpress ist es einfach die Optionen des eigenen Plugins in die Wordpress-Optionen einzubinden. <a href="http://www.hetjens.com/2009/08/05/settings-api-wordpress-standardoptionsseiten-erweitern/">Weiterlesen</a>]]></description>
			<content:encoded><![CDATA[<p>Die Settings-API ist ein einfacher Weg die Optionen eines Plugins in die Standardoptionsseiten von WordPress zu integrieren. Für Plugins mit vielen Optionen eignet sich die API nicht, da dann die Seiten überladen wären, aber für kleine Plugins mit wenigen Optionen ist sie ideal. <a href="http://codex.wordpress.org/Settings_API">Der Codex erklärt die Settings-API</a> schon ganz gut, aber ich hatte trotzdem ein paar Probleme und darum hier dieses Tutorial. <span id="more-45"></span></p>
<p>Alle Aufrufe der Settings-API sollten im Hook &#8216;admin_init&#8217; gemacht werden. Die zwei wichtigsten Aufrufe der API sind die beiden Funktionen <span style="font-family: courier new, courier">add_settings_field</span> zum Anzeigen einer Option und <span style="font-family: courier new, courier">register_setting</span> zum Speichern. Hier zunächst ein Beispiel. Hier wird ein Textfeld auf der &#8220;Schreiben&#8221;-Optionsseite hinzugefügt:</p>
<pre class="brush: php; title: ; notranslate">
add_action('admin_init', 'test_admin_init');
function test_admin_init() {
  add_settings_field(
    'test_option',
    '&lt;label for=&quot;test_option&quot;&gt;Test&lt;/label&gt;',
    'test_option',
    'writing',
    'default',
    array()
  );
  register_setting('writing','test_option');
}

function test_option() {
  $value = get_option('test_option');
  echo '&lt;input type=&quot;text&quot; class=&quot;regular-text&quot;
    id=&quot;test_option&quot; name=&quot;test_option&quot; value=&quot;'.$value.'&quot; /&gt;';
}
</pre>
<p>Fangen wir mit der einfachen Funktion an: <span style="font-family: courier new, courier">register_setting</span></p>
<p><span style="font-family: courier new, courier">register_setting</span> sorgt dafür, dass eine Option gespeichert wird sobald auf der entsprechenden Seite der Speichern-Button gedrückt wurde. Sie hat zwei Parameter. Der erste Parameter gibt an auf welcher Seite die Option hinzugefügt wurde und beim Speichern mitgespeichert werden soll. Der zweite Parameter ist der Name der Option. Genau unter diesem Namen wird die Option auch in der Datenbank abgelegt. In dem Fall oben ist es die Option <span style="font-family: courier new, courier">test_option</span> auf der Seite <span style="font-family: courier new, courier">writing</span>. Optionen können auf allen acht Standardoptionsseiten von WordPress hinzugefügt werden:</p>
<ul>
<li>general</li>
<li>writing</li>
<li>reading</li>
<li>discussion</li>
<li>media</li>
<li>privacy</li>
<li>permalink</li>
<li>misc</li>
</ul>
<p>Die andere Funktion <span style="font-family: courier new, courier">add_settings_field</span> hat einige Parameter mehr.</p>
<pre class="brush: php; title: ; notranslate">
add_settings_field(
  $option_name,
  '&lt;label for=&quot;'.$option_name.'&quot;&gt;'.
    $option_description.
  '&lt;/label&gt;',
  $callback_function_name,
  $page,
  'default',
  array()
);
</pre>
<p>Ich denke die meisten Parameter sind so bereits klar. Hier einige Anmerkungen:<br />
Der zweite Parameter gibt den Text vor dem Optionsfeld aus. Bei WordPress ist es üblich, dass dieser Text ein Label ist (also den Fokus an das Input-Element weitergibt). Das geschieht aber nicht automatisch und muss extra angegeben werden. Mit diesem Funktionsaufruf wird noch nicht das Eingabefeld angezeigt. Darum kümmert sich die Callback-Funktion. Hier das passende Beispiel:</p>
<pre class="brush: php; title: ; notranslate">
function test_option() {
  $value = get_option('test_option');
  echo '&lt;input type=&quot;text&quot; class=&quot;regular-text&quot;
    id=&quot;test_option&quot; name=&quot;test_option&quot; value=&quot;'.$value.'&quot; /&gt;';
}
</pre>
<p>Die Funktion muss den aktuellen Wert selbst laden und anschließend das komplette Input-Element ausgeben. Der Name des Input-Elements muss der Name der Option sein (s. <span style="font-family: courier new, courier">register_setting</span>). Bitte nicht die ID vergessen, sonst funktioniert das label nicht.</p>
<h2>Gruppieren</h2>
<p>Wenn das Plugin mehr als eine Option hat, ist es sinnvoll die Optionen zu gruppieren. Dafür muss zuerst eine Gruppe anlegt werden und anschließend können die Optionen dieser Gruppe zuordnen werden. Gruppe anlegen:</p>
<pre class="brush: php; title: ; notranslate">
add_action('admin_init', 'test_admin_init');
function test_admin_init() {
  add_settings_section(
    'test_section',
    'Test Titel',
    'test_section_description',
    'writing'
  );
  ...
}

function test_section_description() {
  echo '&lt;p&gt;info&lt;/p&gt;';
}
</pre>
<p>Die Callback-Funktion gibt die Beschreibung zu der Gruppe aus und wird vor den Optionsfeldern angezeigt. Damit sie richtig formatiert wird, sollte in der Callback-Funktion auch ein Absatz ausgegeben werden. Um ein Optionsfeld dieser Gruppe zuzuordnen, muss nur der vorletzte Parameter in der <span style="font-family: courier new, courier">add_settings_field</span> von &#8216;default&#8217; auf den Sectionname (im Beispiel &#8216;test_section&#8217;) geändert werden. Beispiel:</p>
<pre class="brush: php; title: ; notranslate">
add_settings_field(
  'test_option',
  '&lt;label for=&quot;test_option&quot;&gt;Test&lt;/label&gt;',
  'test_option',
  'writing',
  'test_section',
  array()
);
</pre>
<h2>Best Practise</h2>
<p>Ich habe jetzt schon einige male die Settings-API benutzt. Dabei wurde mir eins klar. Es ist wichtig die Bezeichner überall gleich zu wählen, sonst kommt man durcheinander. Was meine ich damit: Im Falle der test_option habe ich an allen Stelle test_option verwendet:</p>
<ul>
<li>Optionsname</li>
<li>Name der Callback-Funktion (ggf. mit einheitlichem Prefix versehen)</li>
<li>Name und ID des Input-Elements</li>
</ul>
<p>Das Gleiche gilt natürlich auch für die Section und deren Callback-Funktion. Wenn möglich sollte auch eine Vereinheitlichung über Plugingrenzen angestrebt werden.</p>
<p>Die Settings-API unterstützt auch die objekt-orientierte Programmierung. Alle Callback-Funktionen können auch als <span style="font-family: courier new, courier">array</span> mit Verweis auf <span style="font-family: courier new, courier">&#038;$this</span> angegeben werden.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hetjens.com/2009/08/05/settings-api-wordpress-standardoptionsseiten-erweitern/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Feedburner + WordPress: Neues Plugin bietet  Zugriff auf verschiedene Feeds</title>
		<link>http://www.hetjens.com/2009/08/03/feedburner-wordpress-neues-plugin-mit-besserer-integration/</link>
		<comments>http://www.hetjens.com/2009/08/03/feedburner-wordpress-neues-plugin-mit-besserer-integration/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 12:43:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Feedburner]]></category>
		<category><![CDATA[Plugin]]></category>

		<guid isPermaLink="false">http://hetjens.com/?p=46</guid>
		<description><![CDATA[Das Feedsmith-Plugin ist alt und nicht so flexibel. Mein neues Plugin räumt damit auf. <a href="http://www.hetjens.com/2009/08/03/feedburner-wordpress-neues-plugin-mit-besserer-integration/">Weiterlesen</a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://hetjens.com/wp-content/uploads/2009/08/feedburner_wpadmin2.gif" alt="Integration auf der Lesen-Seite in den WordPress-Optionen" title="Integration auf der Lesen-Seite in den WordPress-Optionen" width="490" height="152" class="aligncenter size-full wp-image-49" /></p>
<p>Das offizielle <a href="http://www.google.com/support/feedburner/bin/answer.py?hl=en&#038;answer=78483">Feedsmith-Feedburner-Plugin</a> für WordPress ist inzwischen etwas in die Jahre gekommen. Es hat ein Problem: Es leitet alle Feeds an Feedburner weiter. Wenn jemand nur einen Feed von einem Autor, einem Tag oder einer Kategorie haben möchte, kommt er nicht dran, wenn das Plugin aktiv ist. Außerdem ist es nicht mehr so schick für zwei Eingabefelder eine extra Seite im wp-admin zu haben.</p>
<p>Diese Probleme löst mein Plugin. Nach der Aktivierung findet sich die Eingabe für die zwei verschiedenen Feeds auf der &#8220;Lesen&#8221;-Seite im wp-admin. Wenn dort Feeds eingetragen wurden, wird auf diese Feeds nur weitergeleitet, wenn die generellen Feeds aufgerufen wurden. Autoren-, Kategorie-, Tags- und alle anderen Archiv-Feeds sind freizugänglich.</p>
<p>Neben diesen Neuerungen gibt es auch die Möglichkeit zu Testzwecken die Weiterleitung zu deaktivieren. Beim Feedsmith-Plugin muss man dafür den Browserstring ändern. Bei meinem Plugin muss nur der URL-Parameter &#8220;noredirect&#8221; angegeben werden. (Die Änderung des Browserstrings funktioniert natürlich auch, damit Feedburner an den Feed kommt). Beispiel: <a href="http://hetjens.com/feed/?noredirect">http://hetjens.com/feed/?noredirect</a></p>
<p><strong>Version: 0.2 &#8211; <a href="http://hetjens.com/wp-content/uploads/2009/08/Hetjens_Feedburner.zip">Download</a></strong><br />
Getestet nur mit WordPress 2.8.x</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hetjens.com/2009/08/03/feedburner-wordpress-neues-plugin-mit-besserer-integration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Privates Blog: Anmeldung bevor  das Blog angezeigt wird</title>
		<link>http://www.hetjens.com/2009/08/01/privates-blog-anmeldung-bevor-das-blog-angezeigt-wird/</link>
		<comments>http://www.hetjens.com/2009/08/01/privates-blog-anmeldung-bevor-das-blog-angezeigt-wird/#comments</comments>
		<pubDate>Sat, 01 Aug 2009 13:31:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Plugin]]></category>

		<guid isPermaLink="false">http://hetjens.com/?p=37</guid>
		<description><![CDATA[Dieses Plugin zeigt jedem nicht angemeldeten Besucher des Blogs zuerst den Wordpress-Anmeldebildschirm. Somit kann ein privates Blogs eingerichtet werden. <a href="http://www.hetjens.com/2009/08/01/privates-blog-anmeldung-bevor-das-blog-angezeigt-wird/">Weiterlesen</a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://hetjens.com/wp-content/uploads/2009/07/wplogin.gif" alt="Es wird zuerst der Login-Bildschirm gezeigt." title="Es wird zuerst der Login-Bildschirm gezeigt." width="280" height="265" class="alignleft size-full wp-image-38" />
<p>Es gibt Situationen da ist es praktisch, wenn das Blog nicht öffentlich zugänglich ist. Dafür gibt es (neben einigen anderen Plugins) jetzt auch das &#8220;Hetjens Registered Only&#8221;-Plugin. Es basiert auf der Arbeit von Carthik A. Sharma wurde aber trotz nur 20 Zeilen Code stark verändert.</p>
<p>Sobald das Plugin aktiviert ist, wird jedem nicht angemeldeten Besucher der WordPress-Anmeldebildschirm gezeigt. Nach der erfolgreichen Anmeldung wird der Besucher weitergeleitet zu der Seite, die er eigentlich aufrufen wollte (egal, ob Homepage, wp-admin oder einen Artikel) [Das ist aber in WordPress eingebaute Funktionalität und wird nicht durch das Plugin bereitgestellt].</p>
<p><strong>Version 0.3 &#8211; <a href="http://hetjens.com/wp-content/uploads/2009/07/Hetjens_Registered_Only-0.3.zip">Download</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hetjens.com/2009/08/01/privates-blog-anmeldung-bevor-das-blog-angezeigt-wird/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Default Link Widget: Eigenen Titel für das  Link-Widget einstellen</title>
		<link>http://www.hetjens.com/2009/07/31/default-link-widget-eigenen-titel-fuer-das-link-widget-einstellen/</link>
		<comments>http://www.hetjens.com/2009/07/31/default-link-widget-eigenen-titel-fuer-das-link-widget-einstellen/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 21:20:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Widget]]></category>

		<guid isPermaLink="false">http://hetjens.com/?p=31</guid>
		<description><![CDATA[Dieses Widget ermöglicht einen eigenen Titel für jedes Link-Widget einzustellen. <a href="http://www.hetjens.com/2009/07/31/default-link-widget-eigenen-titel-fuer-das-link-widget-einstellen/">Weiterlesen</a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://hetjens.com/wp-content/uploads/2009/07/title-extension1.gif" alt="Dieses Plugin ermöglicht die einfache Eingabe eines Titels für das Link-Widget" title="Dieses Plugin ermöglicht die einfache Eingabe eines Titels für das Link-Widget" width="280" height="321" class="alignleft size-full wp-image-34" />Automattic hat bei der Entwicklung von WordPress leider nicht vorgesehen, dass bei dem Link-Widget der Titel eingestellt werden kann. Es wird immer der ausgewählte Kategoriename angezeigt. </p>
<p>Manchmal kann es aber sinnvoll sein einen abweichsenden Titel einzustellen. Diese Möglichkeit bietet das <em>&#8220;Hetjens Link Widget Title Plugin&#8221;</em>. Es wurde nur mit WordPress 2.8.x getestet. Mit älteren Versionen kann es nicht funktionieren, da mit WP-2.8 die Schnittstelle für Widgets geändert wurde.<span id="more-43"></span></p>
<p>Nach der Aktivierung gibt es in dem Einstellungsdialog des Widgets eine Text-Box für den Titel. Dieser eingegebene Titel wird als Widget-Title auf dem Blog angezeigt. Wird das Feld leer gelassen, zeigt das Plugin den Standardtitel (Kategorienamen) an.</p>
<p><strong>Version: 0.1 &#8211; <a href="http://hetjens.com/wp-content/uploads/2009/07/Hetjens_Link_Widget_Title-0.1.zip">Download</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hetjens.com/2009/07/31/default-link-widget-eigenen-titel-fuer-das-link-widget-einstellen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

