<?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; HowTo</title>
	<atom:link href="http://bueltge.de/tag/howto/feed/" rel="self" type="application/rss+xml" />
	<link>http://bueltge.de</link>
	<description>Frank Bültge schreibt auf bueltge.de zu den Themen Webentwicklung &#38; design, WordPress, Literatur und andere Themen bezüglich Internet und Development</description>
	<lastBuildDate>Tue, 22 May 2012 20:02:25 +0000</lastBuildDate>
	<language>de-DE</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>WordPress WYSIWYG-Editor TinyMCE erweitern #2</title>
		<link>http://bueltge.de/wordpress-wysiwyg-editor-tinymce-erweitern-2/1100/</link>
		<comments>http://bueltge.de/wordpress-wysiwyg-editor-tinymce-erweitern-2/1100/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 00:12:03 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Anleitung]]></category>
		<category><![CDATA[Editor]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[TinyMCE]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1100</guid>
		<description><![CDATA[Das schöne am Leben ist ja: man lernt immer dazu und nie aus. Auch in diesem Bereich ist das mal wieder so, denn ein alter Artikel auf diesem meinem kleinen Blog hier, hat mal erklärt, wie man den Editor TinyMCE in WordPress an seine Bedürfnisse anpassen kann - sträflich, denn ich habe damals die Core-Dateien von WordPress angefasst.

Um so wichtiger, dass ich eine bessere Lösung aufzeige und wiedermal, in dem Fall auch mich, darauf hinweise, dass man die Core-Dateien von Systemen nicht anfasst! Aber der Artikel scheint recht beliebt und scheinbar wollen auch viele Nutzer diesen Editor anpassen. Im ersten Schritt sucht man dann nach Plugins und nicht immer wird man fündig. Es gibt also noch immer Bedarf im Plugin-Sektor von WordPress; wie im übrigen auch meine Mails zeigen.]]></description>
			<content:encoded><![CDATA[<p>Das schöne am Leben ist ja: man lernt immer dazu und nie aus. Auch in diesem Bereich ist das mal wieder so, denn ein <a href="http://bueltge.de/wordpress-wysiwyg-editor-tinymce-erweitern/402/">alter Artikel</a> auf diesem meinem kleinen Blog hier, hat mal erklärt, wie man den Editor TinyMCE in WordPress an seine Bedürfnisse anpassen kann - sträflich, denn ich habe damals die Core-Dateien von WordPress angefasst.</p>
<p>Um so wichtiger, dass ich eine bessere Lösung aufzeige und wiedermal, in dem Fall auch mich, darauf hinweise, dass man die Core-Dateien von Systemen nicht anfasst! Aber <a href="http://bueltge.de/wordpress-wysiwyg-editor-tinymce-erweitern/402/">der Artikel</a> scheint recht beliebt und scheinbar wollen auch viele Nutzer diesen Editor anpassen. Im ersten Schritt sucht man dann nach Plugins und nicht immer wird man fündig. Es gibt also noch immer Bedarf im Plugin-Sektor von WordPress; wie im übrigen auch meine Mails zeigen.<br />
<span id="more-1100"></span><br />
Nun aber zum eigentlichen Inhalt des Beitrags, das Anpassen des Editor TinyMCE via Hook, also unabhängig der Core-Dateien von WordPress. Die folgenden Code-Schnippsel legt man in die <code>functions.php</code> des Themes oder lagert sie in ein Plugin aus. Es gibt eine ganze Reihe von Möglichkeiten und ich möchte nur eine Auswahl aufzeigen. Das Anpassen der Buttons ist sicher recht bequem über das Plugin <a href="http://wordpress.org/extend/plugins/tinymce-advanced/">TinyMCE Advanced</a> zu erledigen.</p>
<h4>Den HTML-Filter anpassen</h4>
<p>Im Standard ist der Editor so eingestellt, dass immer xHTML 1.0 erzeugt wird und damit werden nicht alle Tags erlaubt; klassisches Beispiel sind iframes, die man Beispielsweise mit Google Map im Boot hat. Auch dafür gibt es andere Ansätze via Shortcode etc., aber darum soll es hier nicht gehen. Lediglich als Beispiel soll das Erlauben des Tag <code>iframe</code> mit diversen Attributen hier stehen und die Tags müssen zur Variable <code>$ext</code> ergänzt werden.</p>
<pre><code class="php">
function fb_change_mce_options($initArray) {
	// Comma separated string od extendes tags
	// Command separated string of extended elements
	$ext = 'pre[id|name|class|style],iframe[align|longdesc|name|width|height|frameborder|scrolling|marginheight|marginwidth|src]';

	if ( isset( $initArray['extended_valid_elements'] ) ) {
		$initArray['extended_valid_elements'] .= ',' . $ext;
	} else {
		$initArray['extended_valid_elements'] = $ext;
	}
	// maybe; set tiny paramter verify_html
	//$initArray['verify_html'] = false;

	return $initArray;
}
add_filter('tiny_mce_before_init', 'fb_change_mce_options');
</code></pre>
<h4>Anpassen der Funktion, der Buttons im Editor</h4>
<p>Im weiteren eine kleine Möglichkeit um die Blockformate (<code>theme_advanced_blockformats</code>) zu erweitern bzw. zu verändern und einige Buttons im Editor zu deaktivieren (<code>theme_advanced_disable</code>).</p>
<p><img class="centered" src="http://bueltge.de/wp-content/images/wp/mytinymce.png" alt="TinyMCE in WordPress angepasst" /></p>
<pre><code class="php">
function fb_change_mce_buttons( $initArray ) {
	//@see http://wiki.moxiecode.com/index.php/TinyMCE:Control_reference
	$initArray['theme_advanced_blockformats'] = 'p,address,pre,code,h3,h4,h5,h6';
	$initArray['theme_advanced_disable'] = 'forecolor,bold,italic';

	return $initArray;
}
add_filter('tiny_mce_before_init', 'fb_change_mce_buttons');
</code></pre>
<h4>Sprachen der Rechtschreibprüfung ändern</h4>
<p>Im dritten Fall passen wir die Sprachen der Rechtschreibprüfung an, im Beispiel wird nun nur noch Deutsch und Englisch zugelassen.</p>
<pre><code class="php">
function fb_mce_external_languages($initArray){
	$initArray['spellchecker_languages'] = '+German=de, English=en';

	return $initArray;
}
add_filter('tiny_mce_before_init', 'fb_mce_external_languages');
</code></pre>
<h4>Die Standard-Werte von WordPress</h4>
<p>Im Anschluss die Werte, die im Standard von WordPress genutzt werden und die einen Einblick in die Möglichkeiten für die Übergabe des Arrays geben.</p>
<pre><code class="php">
'mode' =&gt; 'specific_textareas'
'editor_selector' =&gt; 'theEditor'
'width' =&gt; '100%'
'theme' =&gt; 'advanced'
'skin' =&gt; 'wp_theme'
'theme_advanced_buttons1' =&gt; 'bold,italic,strikethrough,|,bullist,numlist,blockquote,|,justifyleft,justifycenter,justifyright,|,link,unlink,wp_more,|,spellchecker,fullscreen,wp_adv'
'theme_advanced_buttons2' =&gt; 'formatselect,underline,justifyfull,forecolor,|,pastetext,pasteword,removeformat,|,media,charmap,|,outdent,indent,|,undo,redo,wp_help'
'theme_advanced_buttons3' =&gt; ''
'theme_advanced_buttons4' =&gt; ''
'language' =&gt; 'de'
'spellchecker_languages' =&gt; 'English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,+German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv'
'theme_advanced_toolbar_location' =&gt; 'top'
'theme_advanced_toolbar_align' =&gt; 'left'
'theme_advanced_statusbar_location' =&gt; 'bottom'
'theme_advanced_resizing' =&gt; true
'theme_advanced_resize_horizontal' =&gt; false
'dialog_type' =&gt; 'modal'
'relative_urls' =&gt; false
'remove_script_host' =&gt; false
'convert_urls' =&gt; false
'apply_source_formatting' =&gt; false
'remove_linebreaks' =&gt; true
'gecko_spellcheck' =&gt; true
'entities' =&gt; '38,amp,60,lt,62,gt'
'accessibility_focus' =&gt; true
'tabfocus_elements' =&gt; 'major-publishing-actions'
'media_strict' =&gt; false
'paste_remove_styles' =&gt; true
'paste_remove_spans' =&gt; true
'paste_strip_class_attributes' =&gt; 'all'
'wpeditimage_disable_captions' =&gt; false
'plugins' =&gt; 'safari,inlinepopups,spellchecker,paste,wordpress,media,fullscreen,wpeditimage,wpgallery,tabfocus'
</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-wysiwyg-editor-tinymce-erweitern-2/1100/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-wysiwyg-editor-tinymce-erweitern-2/1100/feed/</wfw:commentRss>
		<slash:comments>37</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/wp/mytinymce.png" />
		<media:content url="http://bueltge.de/wp-content/images/wp/mytinymce.png" medium="image">
			<media:title type="html">TinyMCE in WordPress angepasst</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 Artikel Veröffentlichung nutzen</title>
		<link>http://bueltge.de/wordpress-artikel-veroeffentlichung-nutzen/873/</link>
		<comments>http://bueltge.de/wordpress-artikel-veroeffentlichung-nutzen/873/#comments</comments>
		<pubDate>Sat, 09 May 2009 23:52:14 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Beitrag]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Post]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=873</guid>
		<description><![CDATA[Nicht immer will man alles so lösen wie es WordPress vorsieht und sucht eine andere Lösung. Nicht selten muss man für diverse Anwendungen das Backend nicht nutzen um Beiträge zu veröffentlichen. Ein einfaches Beispiel wäre ein Formular, egal wo, mit dem ein Artikel veröffentlicht wird, in dem der Inhalt der Formular an WordPress übertragen wird und automatisch veröffentlicht wird. Alternativ könnte man ihn mit einem anderen Status senden und so erst frei geben, wenn die Redaktion den Artikel frei gibt. Um nicht bei Null mit der Überlegung zu starten, hier die Funktion die diese Mächtigkeit inne hat und für alle Prozesse der Veröffentlichung verantwortlich ist.]]></description>
			<content:encoded><![CDATA[<p>Nicht immer will man alles so lösen wie es WordPress vorsieht und sucht eine andere Lösung. Nicht selten muss man für diverse Anwendungen das Backend nicht nutzen um Beiträge zu veröffentlichen.<br />
Ein einfaches Beispiel wäre ein Formular, egal wo, mit dem ein Artikel veröffentlicht wird, in dem der Inhalt der Formular an WordPress übertragen wird und automatisch veröffentlicht wird. Alternativ könnte man ihn mit einem anderen Status senden und so erst frei geben, wenn die Redaktion den Artikel frei gibt.<br />
Um nicht bei Null mit der Überlegung zu starten, hier die Funktion die diese Mächtigkeit inne hat und für alle Prozesse der Veröffentlichung verantwortlich ist.</p>
<p><code>wp_insert_post($postarr = array(), $wp_error = false)</code><br />
<span id="more-873"></span><br />
Viele Infos liefert auch der <a href="http://codex.wordpress.org/Function_Reference/wp_insert_post">Codex zur Funktion</a>.</p>
<h3>Mögliche Parameter <code>$postarr</code></h3>
<pre><code>
comment_status    [ 'closed' | 'open' ] // 'closed' means no comments.
ID                [ &lt;post id&gt; ] //Are you updating an existing post?
menu_order        [ &lt;order&gt; ] //If new post is a page, sets the order should it appear in the tabs, Default is 0
page_template     [ &lt;template file&gt; ] //Sets the template for the page.
ping_status       [ value of default_ping_status ] //Ping status?, Default is empty string
pinged            [ empty ] //?
             
post_author       [ $user_ID ] //The user ID number of the author.
post_category     [ array(&lt;category id&gt;, &lt;...&gt;) ] //Add some categories.
post_content      [ &lt;the text of the post&gt; ] //The full text of the post.
post_date         [ Y-m-d H:i:s ] //The time post was made.
post_date_gmt     [ Y-m-d H:i:s ] //The time post was made, in GMT.
post_excerpt      [ &lt;an excerpt&gt; ] //For all your post excerpt needs.
post_parent       [ &lt;post ID&gt; ] //Sets the parent of the new post, Default is 0
post_password     [ empty ] //password for post?, Default is empty string
post_status       [ 'draft' | 'publish' | 'pending' ] //Set the status of the new post., Default is 'draft'
post_title        [ &lt;the title&gt; ] //The title of your post.
post_type         [ 'post' | 'page' ] //Sometimes you want to post a page, Default is 'post'.
tags_input        [ '&lt;tag&gt;, &lt;tag&gt;, &lt;...&gt;' ] //For tags.
to_ping           [ whetever ] //Whether to ping.
</code></pre>
<h3>Beispiel</h3>
<p>Im einfachsten Fall übergibt man die Inhalte des Formulars an das Array und dieses nutzt die Funktion, die sich dann um die Prozesse in WordPress kümmert.</p>
<p>Damit die Funktion auch außerhalb von WordPress zur Verfügung steht, muss die Funktionalität von WordPress in diesen Bereich geholt werden. Ist das genannte Formular also nicht mit einem Template in WordPress realisiert, sondern extern von WP, dann muss die Datei <code>wp-load.php</code> eingebunden werden, siehe Beitrag &#8222;<a href="http://bueltge.de/wordpress-funktionen-ausserhalb-von-wordpress-nutzen/922/">WordPress Funktionen außerhalb von WordPress nutzen</a>&#8220;.</p>
<pre><code>
require( '../my_wordpress_install_root/wp-load.php' );

// Create post object
$my_post = array();
$my_post['post_title']    = 'My post';
$my_post['post_content']  = 'This is my post.';
$my_post['post_status']   = 'publish';
$my_post['post_author']   = 1;
$my_post['post_category'] = array(0);

// Insert the post into the database
wp_insert_post( $my_post );"
</code></pre>
<p>Damit stehen sehr viele Szenarien zur Verfügung und vielleicht hilft dieser kleine Hinweis um die eine oder andere Idee zu verwirklichen.<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-artikel-veroeffentlichung-nutzen/873/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-artikel-veroeffentlichung-nutzen/873/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WordPress Plugin de-/installieren</title>
		<link>http://bueltge.de/wordpress-plugin-de-installieren/684/</link>
		<comments>http://bueltge.de/wordpress-plugin-de-installieren/684/#comments</comments>
		<pubDate>Fri, 20 Jun 2008 09:07:20 +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[Codex]]></category>
		<category><![CDATA[Hook]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=684</guid>
		<description><![CDATA[Durch die aktuelle Arbeit am Plugin Adminimize sind mir wieder einige Punkte aufgefallen, die ich sinnvoll finde und in Plugins integriere. Es ist Mehrwert, der sich aber zum Standard für Plugin-Autoren entwickeln sollte und daher lege ich es mal mit kurzer Erläuterung hier ab. Drei Lösungen sollen zeigen, wie man mit einfachen Mitteln und WordPress [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignrightob" src="http://bueltge.de/wp-content/images/wordpress-logo.png" alt="WP Logo" /></p>
<p>Durch die aktuelle Arbeit am Plugin <a href="http://bueltge.de/wordpress-admin-theme-adminimize/674/">Adminimize</a> sind mir wieder einige Punkte aufgefallen, die ich sinnvoll finde und in Plugins integriere.<br />
Es ist Mehrwert, der sich aber zum Standard für Plugin-Autoren entwickeln sollte und daher lege ich es mal mit kurzer Erläuterung hier ab. Drei Lösungen sollen zeigen, wie man mit einfachen Mitteln und WordPress Hooks die Datenbank für die Einstellungen des Plugins vornimmt, optimiert und klein hält. Ebenso ist es mir wichtig, dass die Einträge in der Datenbank gelöscht werden, wenn das Plugin deaktiviert wird.<br />
Die Nutzer des Plugins sind sicher dankbar für diese kleinen aber feinen Codeschnippsel im Plugin.<br />
<span id="more-684"></span></p>
<h3>Plugin deaktiveren, Datenbankeinträge löschen</h3>
<p>Im ersten Punkt soll es darum gehen, die Felder, welche man in der Datenbank ablegt, auch zu entfernen, wenn das Plugin deinstalliert wird. Die Datenbank sollte schlank sein und nur die Inhalte haben, die sie auch benötigt. Daher stellt WordPress auch eine Funktion bereit, die die Desintallation einfach macht - <code>register_deactivation_hook()</code>. <a href="http://codex.wordpress.org/Function_Reference/register_deactivation_hook">Dieser Hook</a> wird angesprochen, wenn das Plugin deinstalliert wird. Damit könnte die Deinstallation von Einträgen in der Tabelle options wie folgt aussehen.</p>
<pre><code>
register_deactivation_hook(__FILE__, 'my_example_deinstall');

/**
 * Delete options in database
 */
function my_example_deinstall() {
	delete_option('my_example_option_1');
	delete_option('my_example_option_n');
}
</code></pre>
<h3>Plugin aktiveren, Datenbankeinträge setzen</h3>
<p>Ähnliches gibt es auch für die Aktivierung des Plugins, der Hook <code>register_activation_hook()</code>. <a href="http://codex.wordpress.org/Function_Reference/register_activation_hook">Der Codex</a> gibt Aufschluss und die Verwendung ist analog dem obigen Beispiel mit einer Funktion für die Installation von Optionen in der Datenbank.</p>
<pre><code>
register_activation_hook(__FILE__, 'my_example_install');

/**
 * Install options in database
 */
function my_example_install() {
	add_option('my_example_option_1', '', '');
	add_option('my_example_option_n', array(), '');
}
</code></pre>
<h3>Datenbank optimieren</h3>
<p>Hat man die Einträge aus der Datenbank entfernt, dann ist es ein schöner Zug, diese wieder zu optimieren. <a href="http://dev.mysql.com/doc/refman/5.0/en/optimize-table.html">MySQL</a> stellt dafür eine Funktion zur Verfügung und das Einbinden in die Funktion zum Deinstallieren der Einträge ist schnell getan.<br />
Dazu muss die Variable der WordPress-Datenbank <code>$wpdb</code> global sein und die Optimierung via <code>OPTIMIZE TABLE</code>.</p>
<pre><code>
/**
 * Delete options in database
 */
function my_example_deinstall() {
	global $wpdb;

	add_option('my_example_option_1', '', '');
	add_option('my_example_option_n', array(), '');

	$wpdb->query("OPTIMIZE TABLE $wpdb->options");
}
</code></pre>
<p>Hat man eine Funktion innerhalb des Plugins, welches des öfteren Daten in der Datenbank verändert, dann kann man das Optimieren dieser auch öfters vornehmen. Dazu binde ich es in der Regel per Zufall ein und lasse die DB dann optimieren. Beispielsweise beim Löschen von Spam-Einträgen in der DB <code>comments</code> ist derartiges lohnend. Ich nutze es im Plugin <a href="http://bueltge.de/wp-spamviewer-zum-loeschen-und-retten-von-spam/255/">SpamViewe</a>r.</p>
<pre><code>
$n = mt_rand(1, 1000);
if ( $n == 10 )
	$wpdb->query("OPTIMIZE TABLE $wpdb->options");
</code></pre>
<h4>Update</h4>
<p>Bei der Diskussion zu diesem Theme, siehe <a href="#comments">Kommentare</a>, hat sich herausgestellt, dass man das Thema der Datenbank-Optimierung vorsichtig angehen sollte, denn Optimieren in Massen und zu ungünstigen Zeiten kann auch nachteilig sein. Daher bitten ich, diese Empfehlung überlegt zu nutzen. Ich für meinen Teil werde sie aus Deaktivierungsfunktionen entfernen und bei bspw. dem Löschen von großen Mengen von Daten, Beispiel Spam-Einträge, drin lassen.</p>
<h3>Nicht benötigte Einträge löschen</h3>
<p>Nutz das Plugin Optionen aus der Datenbank und arbeitet für jede Option einen eigenen Eintrag ab, dann ist es sinnvoll, die Einträge nicht zu speichern, die leer in den Einstellungen des Plugins sind. Am Beispiel Checkbox: wenn der User den Haken der Checkbox nicht setzt, dann wird als Übertrag 0 genommen und in der DB abgelegt, je nach Abfrage des Plugins passiert dann aufgrund dieser Einstellung etwas. Im Grunde ist es der Abfrage aber egal ob 0 oder nicht vorhandener DB-Eintrag und daher kann man diese Option auch leeren. Dies geht mir der folgenden kleinen Funktion. Dabei werden nach dem Senden der POST-Daten lediglich die Felder in der DB gespeichert, die man auch benötigt.</p>
<pre><code>
// for a smaller database
function my_example_get_update($option) {
	if ( ($_POST[$option] == '0') || $_POST[$option] == '') {
		delete_option($option);
	} else {
		update_option($option , $_POST[$option]);
	}
}

my_example_get_update('my_example_option_1');
my_example_get_update('my_example_option_n');
</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-plugin-de-installieren/684/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-plugin-de-installieren/684/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/wordpress-logo.png" />
		<media:content url="http://bueltge.de/wp-content/images/wordpress-logo.png" medium="image">
			<media:title type="html">WP 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>PHP Debugging und Profiling leicht gemacht</title>
		<link>http://bueltge.de/php-debugging-und-profiling-leicht-gemacht/520/</link>
		<comments>http://bueltge.de/php-debugging-und-profiling-leicht-gemacht/520/#comments</comments>
		<pubDate>Tue, 09 Oct 2007 21:27:01 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://bueltge.de/php-debugging-und-profiling-leicht-gemacht/520/</guid>
		<description><![CDATA[Die Entwicklung von Scripten mittels PHP bringt immer wieder Schwierigkeiten im Bereich der Fehlersuche. Editoren bzw. Entwicklungsumgebungen, die eine Debuggingfunktion mitbringen, sind teuer oder nicht unbedingt leicht zu konfigurieren. Seite geraumer Zeit arbeite ich dabei mit Xdebug, eine Erweiterung für PHP, mit der das Debuggen einfach und schnell von der Hand geht.

Damit die Konfiguration immer wieder zur Hand ist und schnell und logisch nachvollziehbar ist, erkläre ich einigen Schritten, wie man zu einer Entwicklungsumgebung mittels Xdebug kommt.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://bueltge.de/wp-content/images/phpconfig.gif" alt="PHP HowTo" /></p>
<p>Die Entwicklung von Scripten mittels PHP bringt immer wieder Schwierigkeiten im Bereich der Fehlersuche. Editoren bzw. Entwicklungsumgebungen, die eine Debuggingfunktion mitbringen, sind teuer oder nicht unbedingt leicht zu konfigurieren. Seite geraumer Zeit arbeite ich dabei mit <a href="http://www.xdebug.org/">Xdebug</a>, eine Erweiterung für PHP, mit der das Debuggen einfach und schnell von der Hand geht.</p>
<p>Damit die Konfiguration immer wieder zur Hand ist und schnell und logisch nachvollziehbar ist, erkläre ich  einigen Schritten, wie man zu einer Entwicklungsumgebung mittels <a href="http://www.xdebug.org/">Xdebug</a> kommt.<span id="more-520"></span> Als Voraussetzung dient dabei die Distribution von Apache, MySQL, PHP und Perl - <a href="http://www.apachefriends.org/de/xampp.html">XAMPP</a>, die beispielhaft unter dem Pfad <code>D:\xampp\</code> installiert ist.</p>
<p>Im ersten Schritt muss selbstverständlich ein Server laufen, dazu die Empfehlung für einfaches und unkompliziertes Aufsetzen eines Apache - <a href="http://www.apachefriends.org/de/xampp.html">XAMPP</a>. Sollte es Schwierigkeiten geben, es gibt eine Reihe von guten Tutorials zum Aufsetzen im Netz.</p>
<p>Nun soll aber die Umgebung um Xdebug erweitert werden. Dazu muss zuerst die aktuelle PHP-Version deines Apache festgestellt werden. Dazu steht steht im XAMPP-Paket schon eine Datei bereit, die den nötigen Syntax <code>phpinfo();</code> enthält und die Informationen ausgibt. Rufe im Browser die Adresse <code>http://localhost/xampp/phpinfo.php</code> auf. Nun sollte die laufende PHP-Version im Browser ausgeben werden, inklusive einiger weiterer Informationen.</p>
<p>Mit Hilfe dieser Information können wir nun die entsprechende Version von Xdebug holen. Dazu die <a href="http://pecl4win.php.net/ext.php/php_xdebug.dll">Downloadseite</a> besuchen und die entsprechende Datei downloaden.</p>
<p>Die Datei <code>xdebug.dll</code> kopieren wir nun in <code>D:\xampp\php\ext\</code>, Laufwerkpfad an eure lokale XAMPP-Installation anpassen.</p>
<p>Im weiteren muss die Datei <code>php.ini</code> bearbeitet werden, zu finden in <code>D:\xampp\apache\bin\</code>. Dazu die Datei in eurem Editor öffnen und folgenden Zeilen hinzufügen.</p>
<p>Als erstes muss der Pfad zur Datei definiert werden.<br />
<code>zend_extension_ts="D:\xampp\php\ext\php_xdebug.dll"</code></p>
<p>Achtet darauf, dass es keine andere Definition für das Merkmal <em>zend_extension_ts</em> gibt. Denn sonst wird der Apache nicht gestartet werden. Die Zeilen können prinzipiell überall in der Datei stehen, ich lege Erweiterungen immer an das Ende um die Übersicht zu waren.</p>
<p>Die folgenden Parameter dienen der Konfiguration von Xdebug. Ein ; dient zum Auskommentieren von Zeilen oder Kommentaren.</p>
<pre><code>
[xdebug]
xdebug.auto_trace = 1
xdebug.collect_includes = 1
xdebug.collect_params = 1
xdebug.collect_return = 1
xdebug.default_enable = 1
xdebug.extended_info = 1
xdebug.show_local_vars = 0
xdebug.show_mem_delta = 1
xdebug.trace_format = 1
xdebug.trace_options = 0
xdebug.trace_output_dir ="D:\xampp\tmp"

; Remote
xdebug.remote_enable=1
xdebug.remote_mode="req"
xdebug.remote_host=127.0.0.1
xdebug.remote_port=17869
xdebug.idekey=

; Mode 1
xdebug.remote_handler="gdb"
xdebug.auto_profile = 1
xdebug.auto_profile_mode = 2
xdebug.output_dir = "D:\xampp\tmp"

; Mode 2
xdebug.remote_handler="DBGp"
; Stop profiling process
;xdebug.profiler_enable = 0
xdebug.profiler_enable = 1
xdebug.profiler_output_dir = "D:\xampp\tmp"
xdebug.profiler_output_name = "debug.out"

xdebug.dump.SERVER = REMOTE_ADDR,REQUEST_METHOD
</code></pre>
<p>Wird das Merkmal <em>xdebug.profiler_enable</em> auf 0 gesetzt, dann ist das Profiling deaktiviert. Die Datei, die beim Profiling entsteht kann schnell recht groß werden, so dass ein Profiling nicht immer gewünscht ist. Um Xdebug zu nutzen, muss das Merkmal den Wert <em>1</em> bekommen.</p>
<p>Sollte euer Apache im Vorfeld schon gelaufen sein, so muss er nun neu gestartet werden. Um die Installation von Xdebug zu überprüfen, ruft ihr wieder die phpinfo auf: <code>http://localhost/xampp/phpinfo.php</code>. Dort sollte nach dem ersten Abschnitt die Information zu Version von Xdebug stehen.</p>
<p><img class="centered instant" src="http://bueltge.de/wp-content/images/xdebug/phpinfo.jpg" alt="Xdebug phpinfo" /></p>
<p>Auf Grund der Definition in der <code>php.ini</code>, wird eine Datei in <code>D:\xampp\tmp</code> erzeugt und mit Inhalt gefüllt - <em>cachegrind.out.*</em>.</p>
<p>Um diesen Inhalt komfortabel und benutzerfreundlich auszulesen und zu nutzen, empfiehlt sich die Verwendung einer weiteren Applikation - <a href="http://sourceforge.net/projects/wincachegrind/">WinCacheGrid</a>, allerdings nur für Windows verfügbar.</p>
<p><a title="Klick für Zoom" href="http://bueltge.de/wp-content/images/xdebug/wincachegrid.jpg"><img class="centered" src="http://bueltge.de/wp-content/images/xdebug/wincachegrid-thumb.jpg" alt="WinCacheGrid" /></a></p>
<p>Mit dieser Software kann die Datei einfach und schnell ausgelesen werden. Ebenso stehen eine Reihe von Optionen zur Verfügung. In den Optionen definiert ihr den „Working Folder” - <code>D:\xampp\tmp</code> und schon steht die erstelle Datei zum Auslesen im unteren Frame des Programms bereit.</p>
<p>Das eigentliche Debugging läuft direkt in der Anwendung. im folgenden Screenshot habe ich eine Variable, welche nicht gesetzt wird und so folgende Anforderungen nicht erfüllt werden. Die Fehlermeldung leitet auf die entsprechende Zeile bzw. Funktion kann untersucht werden.</p>
<p><a title="Klick für Zoom" href="http://bueltge.de/wp-content/images/xdebug/xdebug.jpg"><img class="centered" src="http://bueltge.de/wp-content/images/xdebug/xdebug-thumb.jpg" alt="Xdebug Debuggen" /></a></p>
<div class="contentdiv">
<h4>Ein Tipp am Rande</h4>
<p>Um die PHP-Datei direkt im Editor auf Syntax-Fehler zu parsen, nutze ich die <code>php.exe</code> in <code>D:\xampp\php\</code>, die als Anwendung in meinen Editor UltraEdit eingebunden habe. Dazu habe lediglich ein neues Werkzeug definiert welches die aktuelle Datei, welche ich bearbeite, parst. Dazu wurde folgender Syntax hinterlegt: <em>D:\xampp\php\php.exe -l %f</em>.<br />
Aber auch dafür gibt es andere Lösungen, zum Beispiel <a href="http://www.jedit.org/">jEdit</a> mit Pluginerweiterung <a href="http://plugins.jedit.org/plugins/?PHPParser">PHPParser</a>.</div>
<p>Mit diesem kleinen aber spektakulärem Einsatz steht eine Umgebung bereit, mit der eine recht umfangreiche Fehleranalyse möglich ist, ohne großen Aufwand und Kosten. Vielleicht hat ja der eine oder andere einen netten Tipp zu Xdebug und PHP  -ich freue mich auf Kommentare.<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/php-debugging-und-profiling-leicht-gemacht/520/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/php-debugging-und-profiling-leicht-gemacht/520/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/phpconfig.gif" />
		<media:content url="http://bueltge.de/wp-content/images/phpconfig.gif" medium="image">
			<media:title type="html">PHP HowTo</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/xdebug/phpinfo.jpg" medium="image">
			<media:title type="html">Xdebug phpinfo</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/xdebug/wincachegrid-thumb.jpg" medium="image">
			<media:title type="html">WinCacheGrid</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/xdebug/xdebug-thumb.jpg" medium="image">
			<media:title type="html">Xdebug Debuggen</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>10 Punkte bevor der Beitrag öffentlich wird</title>
		<link>http://bueltge.de/10-punkte-bevor-der-beitrag-oeffentlich-wird/457/</link>
		<comments>http://bueltge.de/10-punkte-bevor-der-beitrag-oeffentlich-wird/457/#comments</comments>
		<pubDate>Mon, 16 Jul 2007 07:21:35 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Webküche]]></category>
		<category><![CDATA[Artikel]]></category>
		<category><![CDATA[Beitrag]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[HowTo]]></category>

		<guid isPermaLink="false">http://bueltge.de/10-punkte-bevor-der-beitrag-oeffentlich-wird/457/</guid>
		<description><![CDATA[Lies es noch mal und korrigiere eventuell. Im Zweifelsfall den Beitrag einige Tage liegen lassen und dann nochmals lesen - oft sehen dann logische Schlüsse anders aus. Rechtschreibung prüfen – als Hilfe kann der Google-Toolbar dienen. Fehler kommen immer vor, aber je weniger – desto besser. Der Titel des Beitrags sollte aussagekräftig sein – nicht [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://bueltge.de/wp-content/images/wp_puplish.gif" alt="Veröffentlichen in WP" />
<ol>
<li>Lies es noch mal und korrigiere eventuell.<br />
Im Zweifelsfall den Beitrag einige Tage liegen lassen und dann nochmals lesen - oft sehen dann logische Schlüsse anders aus.</li>
<li>Rechtschreibung prüfen – als Hilfe kann der Google-Toolbar dienen. Fehler kommen immer vor, aber je weniger – desto besser.</li>
<li>Der Titel des Beitrags sollte aussagekräftig sein – nicht immer leicht, aber sehr sehr hilfreich.</li>
<li>Bilder sagen nur dem etwas, der sie sieht. Denke an die User, die den Feed ohne Bilder lesen ohne mit anderen Mitteln lesen. Ähnliches gilt für die Größe der Bilder, nicht jeder hat eine DSL6000-Verbindung. Überlege also, wie sinnvoll ist die Qualität im Vergleich zur Größe. Außerdem gehört zu jedem! Bild ein Alt-Tag.</li>
<li>Die ersten Zeilen des Beitrags sollten Aussagekräftig sein, denn der „Teaser“ ist der Einstieg und in einigen Ansichten im Blog oder externen Services werden nur die ersten Zeilen gelistet.</li>
<li>Du nutzt Inhalt einer anderen Quelle oder zitiertes, dann vergiss die Angabe der Quelle nicht. xHTML: <em>q</em>, <em>blockquote</em> und <em>cite</em></li>
<li>Links sind die Seele des Web, nutze Sie. Dazu zählen auch Links auf <a href="http://bueltge.de/optimiere-deinen-blog/232/">ältere Beiträge</a> aus deinem Blog.</li>
<li>Prüfe die Kategorie des Beitrags, ist sie sinnvoll? Einige Leser lesen nur Inhalt aus bestimmten Kategorien.</li>
<li>Du verwendest ein Tagging-Plugin, dann pflege es auch. Vergebe Tags sparsam und treffend. Überlege die Synonyme und prüfe das Tagging.</li>
<li>Gleiches gilt für die Vergabe von Meta-Keywords. Hat dein Blog eine solche Erweiterung, dann pflege sie und prüfe auf die richtigen Einträge.</li>
</ol>
<p>Diese Artikel wurde zum Projekt „<a href="http://upload-magazin.de/?p=407">Blogtipps für Einsteiger</a>“ geschrieben. Unter diesem Titel werden in den nächsten Tagen sicher eine ganze Reihe von Beiträgen erscheinen - den einen oder anderen Tipp sollte man sicher beherzigen.<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/10-punkte-bevor-der-beitrag-oeffentlich-wird/457/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/10-punkte-bevor-der-beitrag-oeffentlich-wird/457/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/wp_puplish.gif" />
		<media:content url="http://bueltge.de/wp-content/images/wp_puplish.gif" medium="image">
			<media:title type="html">Veröffentlichen in 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>WordPress Editor TinyMCE noch umfangreicher erweitern</title>
		<link>http://bueltge.de/wordpress-editor-tinymce-noch-umfangreicher-erweitern/415/</link>
		<comments>http://bueltge.de/wordpress-editor-tinymce-noch-umfangreicher-erweitern/415/#comments</comments>
		<pubDate>Mon, 26 Mar 2007 11:03:21 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[TinyMCE]]></category>
		<category><![CDATA[WP]]></category>
		<category><![CDATA[WYSIWYG]]></category>

		<guid isPermaLink="false">http://bueltge.de/wordpress-editor-tinymce-noch-umfangreicher-erweitern/415</guid>
		<description><![CDATA[Der WYSIWYG-Editor ist sicher nicht das Allheilmittel und ob und wie gern man ihn verwenden sollte, muss jeder selber wissen. Ich für meinen Teil komme immer lieber auf meine HTML-Kenntnisse zurück. Trotzdem trudeln hier immer wieder Anfragen ein und für ein Projekt, wo ich ohne WYSIWYG nicht auskomme, musste ich mich damit auseinander setzen. Wie [...]]]></description>
			<content:encoded><![CDATA[<p>Der WYSIWYG-Editor ist sicher nicht das Allheilmittel und ob und wie gern man ihn verwenden sollte, muss jeder selber wissen. Ich für meinen Teil komme immer lieber auf meine HTML-Kenntnisse zurück. Trotzdem trudeln hier immer wieder Anfragen ein und für ein Projekt, wo ich ohne WYSIWYG nicht auskomme, musste ich mich damit auseinander setzen.</p>
<p>Wie das meist so ist, haben die Anwender erst einmal das Prinzip geschluckt - so wollen Sie immer mehr. Ein Anforderung war das eigene Implementieren von Tabellen. Eine Tabelle ist mit purem HTML nicht so einfach zu integrieren, da muss man schon mal mitdenken. Der TinyMCE hat diese Möglichkeit, allerdings nicht im Umfang von WordPress.</p>
<p>Wie man Veränderungen sonst noch vornehmen kann, habe ich schonmal in einem älteren Artikel erläutert <a href="http://bueltge.de/wordpress-wysiwyg-editor-tinymce-erweitern/402">WordPress WYSIWYG-Editor TinyMCE erweitern</a>.</p>
<p>Um den Editor zu erweitern, muss man erst einmal das <a href="http://tinymce.moxiecode.com/download.php">komplette Paket downloaden</a> und darin befinden sich auch alle Plugins. Nun muss man die benötigten Plugins in das Verzeichnis <em>/wp-includes/js/tinymce/plugins/</em> kopieren.</p>
<p>Danach muss die Konfiguationsdatei <em>tiny_mce_config.php</em> bearbeitet werden, in <em>/wp-includes/js/tinymce/</em>.</p>
<p>Ich möchte hier nicht explizit jeden Part erläutern, dafür steht die <a href="http://wiki.moxiecode.com/index.php/Main_Page">Dokumentation</a> des TinyMCE-Projektes zum Thema <a href="http://wiki.moxiecode.com/index.php/TinyMCE:Plugins">Plugin</a> bereit.</p>
<p>Aber als Beispiel soll die <strong>Tabelle </strong>herhalten.</p>
<p><img class="centered" src="http://bueltge.de/wp-content/images/tinymceerweitert2.png" alt="TinyMCE und Tabellen" /></p>
<p>Nachdem das Plugin <em>table</em> in das Plugin-Verzeichnis des TinyMCE kopiert wurde, ladet die Konfigurationsdatei in euren Editor. Dort sucht ihr:</p>
<pre><code>
$plugins = array('inlinepopups', 'autosave', 'spellchecker', 'paste', 'wordpress');
</code></pre>
<p>und erweitert um das Plugin, denn diese Variable übergibt alle zu verwendeten Plugins an die Initialisierung <em>initArray</em>, <em>plugins : "&lt;?php echo $plugins; ?&gt;"</em>.</p>
<pre><code>
$plugins = array('inlinepopups', 'autosave', 'spellchecker', 'paste', 'table', 'wordpress');
</code></pre>
<p>Außerdem muss der Button <em>tablecontrols</em> geladen werden. Alle Zusatzfunktionen habe ich in die dritte Zeile <em>$mce_buttons_3</em> des Editors gelegt, so dass ein Unterschied zu erkennen ist und die Zusatzfunktionen von den Originalfunktionen getrennt sind.</p>
<pre><code>
$mce_buttons_3 = apply_filters('mce_buttons_3', array('tablecontrols'));
$mce_buttons_3 = implode($mce_buttons_3, ',');
</code></pre>
<p>Und das war es auch schon. Nun kann man per Extra-Fenster eine Tabelle integrieren.</p>
<p>Im folgenden der Code, der Datei <em>tiny_mce_config.php</em>, so dass alle Plugins immer aktiv sind und zusätzlich gibt es Tabellen - <em>table</em>, xhtml-Extras - <em>cite, ins , del, abbr, acronym</em> und Suchen &#038; Ersetzen - <em>search, replace</em>. Allerdings soll dies nur als Beispiel dienen.  TinyMCE bringt wesentlich mehr mit.</p>
<p>Eine andere Lösung, wenn man mit dem Editor nicht zufrieden ist, ist das Austauschen des Editors gegen einen anderen Editor. Erik Pöhler erklärt es - <a href="http://contactsheet.de/weg-mit-tinymce-aber-zack-zack.xhtml">Weg mit TinyMCE... aber Zack Zack!</a></p>
<pre><code>
&lt;?php
	@ require('../../../wp-config.php');

	function wp_translate_tinymce_lang($text) {
		if ( ! function_exists('__') ) {
			return $text;
		} else {
			$search1 = "/^tinyMCELang\\[(['\"])(.*)\\1\]( ?= ?)(['\"])(.*)\\4/Uem";
			$replace1 = "'tinyMCELang[\\1\\2\\1]\\3'.stripslashes('\\4').__('\\5').stripslashes('\\4')";

			$search2 = "/ : (['\"])(.*)\\1/Uem";
			$replace2 = "' : '.stripslashes('\\1').__('\\2').stripslashes('\\1')";

			$search = array($search1, $search2);
			$replace = array($replace1, $replace2);

			$text = preg_replace($search, $replace, $text);

			return $text;
		}
	}

	// Set up init variables
	$valid_elements = 'p/-div[*],-strong/-b[*],-em/-i[*],-font[*],-ul[*],-ol[*],-li[*],*[*]';
	$valid_elements = apply_filters('mce_valid_elements', $valid_elements);

	$plugins = array('inlinepopups', 'autosave', 'spellchecker', 'paste', 'table', 'xhtmlxtras', 'searchreplace', 'wordpress');
	$plugins = apply_filters('mce_plugins', $plugins);
	$plugins = implode($plugins, ',');

	$mce_buttons = apply_filters('mce_buttons', array('bold', 'italic', 'strikethrough', 'separator', 'bullist', 'numlist', 'outdent', 'indent', 'separator', 'justifyleft', 'justifycenter', 'justifyright', 'separator', 'link', 'unlink', 'image', 'wp_more', 'separator', 'spellchecker', 'separator', 'wp_help'));
	$mce_buttons = implode($mce_buttons, ',');

	$mce_buttons_2 = apply_filters('mce_buttons_2', array('formatselect', 'underline', 'justifyfull', 'forecolor', 'separator', 'pastetext', 'pasteword', 'separator', 'removeformat', 'cleanup', 'separator', 'charmap', 'separator', 'undo', 'redo'));
	$mce_buttons_2 = implode($mce_buttons_2, ',');

	$mce_buttons_3 = apply_filters('mce_buttons_3', array('tablecontrols', 'separator', 'cite', 'ins', 'del', 'abbr', 'acronym', 'separator', 'search', 'replace'));
	$mce_buttons_3 = implode($mce_buttons_3, ',');

	$mce_browsers = apply_filters('mce_browsers', array('msie', 'gecko', 'opera', 'safari'));
	$mce_browsers = implode($mce_browsers, ',');
	
	$mce_popups_css = get_option('siteurl') . '/wp-includes/js/tinymce/plugins/wordpress/popups.css';
	$mce_css = get_option('siteurl') . '/wp-includes/js/tinymce/plugins/wordpress/wordpress.css';
	$mce_css = apply_filters('mce_css', $mce_css);
	if ( $_SERVER['HTTPS'] == 'on' ) {
		$mce_css = str_replace('http://', 'https://', $mce_css);
		$mce_popups_css = str_replace('http://', 'https://', $mce_popups_css);
	}
?&gt;

initArray = {
	mode : "specific_textareas",
	editor_selector : "mceEditor",
	width : "100%",
	theme : "advanced",
	theme_advanced_buttons1 : "&lt;?php echo $mce_buttons; ?&gt;",
	theme_advanced_buttons2 : "&lt;?php echo $mce_buttons_2; ?&gt;",
	theme_advanced_buttons3 : "&lt;?php echo $mce_buttons_3; ?&gt;",
	language : "&lt;?php echo strtolower(get_locale()); ?&gt;",
	theme_advanced_toolbar_location : "top",
	theme_advanced_toolbar_align : "left",
	theme_advanced_path_location : "bottom",
	theme_advanced_resizing : true,
	browsers : "&lt;?php echo $mce_browsers; ?&gt;",
	dialog_type : "modal",
	theme_advanced_resize_horizontal : false,
	convert_urls : false,
	relative_urls : false,
	remove_script_host : false,
	force_p_newlines : true,
	force_br_newlines : false,
	convert_newlines_to_brs : false,
	remove_linebreaks : false,
	fix_list_elements : true,
	entities : "38,amp,60,lt,62,gt",
	content_css : "&lt;?php echo $mce_css; ?&gt;",
	valid_elements : "&lt;?php echo $valid_elements; ?&gt;",
	save_callback : 'TinyMCE_wordpressPlugin.saveCallback',
	imp_version : "&lt;?php echo intval($_GET['ver']); ?&gt;",
&lt;?php do_action('mce_options'); ?&gt;
	plugins : "&lt;?php echo $plugins; ?&gt;"
};

&lt;?php
	// For people who really REALLY know what they're doing with TinyMCE
	// You can modify initArray to add, remove, change elements of the config before tinyMCE.init
	do_action('tinymce_before_init');
?&gt;

tinyMCE.init(initArray);
</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-editor-tinymce-noch-umfangreicher-erweitern/415/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-editor-tinymce-noch-umfangreicher-erweitern/415/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/tinymceerweitert2.png" />
		<media:content url="http://bueltge.de/wp-content/images/tinymceerweitert2.png" medium="image">
			<media:title type="html">TinyMCE und Tabellen</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 WYSIWYG-Editor TinyMCE erweitern</title>
		<link>http://bueltge.de/wordpress-wysiwyg-editor-tinymce-erweitern/402/</link>
		<comments>http://bueltge.de/wordpress-wysiwyg-editor-tinymce-erweitern/402/#comments</comments>
		<pubDate>Tue, 06 Mar 2007 07:29:16 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Anleitung]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[TinyMCE]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/wordpress-wysiwyg-editor-tinymce-erweitern/402</guid>
		<description><![CDATA[Der Editor TinyMCE, der seit Version 2.1 von WordPress dabei ist hat eine ganze Reihe von Funktionen, die allerdings nicht standardmäßig ersichtlich sind. Außerdem gibt es die Funktion HTML-Code, die überhaupt nicht berücksichtigt wurde. Ich habe für ein Projekt den Editor verändert, so dass die Autoren leichter an die Zusatzfunktion kommen, einfach den zugehörigen Button [...]]]></description>
			<content:encoded><![CDATA[<p>Der Editor <a href="http://tinymce.moxiecode.com">TinyMCE</a>, der seit Version 2.1 von WordPress dabei ist hat eine ganze Reihe von Funktionen, die allerdings nicht standardmäßig ersichtlich sind. Außerdem gibt es die Funktion HTML-Code, die überhaupt nicht berücksichtigt wurde.</p>
<p><img class="centered" src="http://bueltge.de/wp-content/images/tinymceerweitert.png" alt="TinyMCE erweitert" /></p>
<p>Ich habe für ein Projekt den Editor verändert, so dass die Autoren leichter an die Zusatzfunktion kommen, einfach den zugehörigen Button klicken, und einen zusätzlichen Button für die Bearbeitung des kompletten HTML-Codes haben, in einem extra Fester.</p>
<p>Dazu muss die Konfigurationsdatei vom Editor bearbeitet werden: <em>/wp-includes/js/tinymce/tiny_mce_config.php</em></p>
<p>Ändert den Code bei <em>$mce_button</em>s in folgenden, oder passt ihn an.</p>
<pre><code>
$mce_buttons = apply_filters( 'mce_buttons', array( 'bold', 'italic', 'strikethrough', 'separator', 'bullist', 'numlist', 'outdent', 'indent', 'separator', 'justifyleft', 'justifycenter', 'justifyright', 'separator', 'link', 'unlink', 'image', 'wp_more', 'separator', 'spellchecker', 'separator', 'wp_help', 'wp_adv', 'wp_adv_start', 'formatselect', 'underline', 'justifyfull', 'forecolor', 'separator', 'pastetext', 'pasteword', 'separator', 'removeformat', 'cleanup', 'separator', 'charmap', 'separator', 'undo', 'redo', 'separator', 'code', 'wp_adv_end' ) );
$mce_buttons = implode( $mce_buttons, ',' );
</code></pre>
<p>Der Button HTML kommt durch die Erweiterung von <em>code</em>. Der Button für das Ein-/Ausschalten der Zusatzfunktionen kommt daher, weil ich den Tag <em>wp_adv</em> vorgezogen habe, vor <em>wp_ad_start</em>.</p>
<h3>Weitere Links:</h3>
<ul>
<li><a href="http://blog.cheshire-online.de/2007/02/tutorial-tiny-mce-in-wordpress-21-zusaetzliche-schaltflaechen">Tutorial - Tiny MCE in WordPress 2.1 - Zusätzliche Schaltflächen</a> - Icons und Schlüsselwörter erklärt</li>
<li><a href="http://www.barbarajany.de/wp1-5/2007/02/12/tinymce-editor-in-wordpress-erweitern/">TinyMCE-Editor in WordPress erweitern</a> - weitere Plugins für TinyMCE integrieren</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/wordpress-wysiwyg-editor-tinymce-erweitern/402/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-wysiwyg-editor-tinymce-erweitern/402/feed/</wfw:commentRss>
		<slash:comments>53</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/tinymceerweitert.png" />
		<media:content url="http://bueltge.de/wp-content/images/tinymceerweitert.png" medium="image">
			<media:title type="html">TinyMCE erweitert</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 Track- und Pingbacks seperat listen, ohne Plugin</title>
		<link>http://bueltge.de/wordpress-track-und-pingbacks-seperat-listen-ohne-plugin/299/</link>
		<comments>http://bueltge.de/wordpress-track-und-pingbacks-seperat-listen-ohne-plugin/299/#comments</comments>
		<pubDate>Fri, 08 Dec 2006 13:02:10 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Anleitung]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Kommentar]]></category>
		<category><![CDATA[Trackback]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/wordpress-track-und-pingbacks-seperat-listen-ohne-plugin/299</guid>
		<description><![CDATA[Will man die Track- und Pingbacks im Kommentarbereich extra darstellen so kann man mit dem Plugin <a href="http://jackosh.com/wpplugins/trackbacklist/">Trackbacklist</a> arbeiten und dabei hilft einem die <a href="http://www.perun.net/2006/12/07/track-und-pingbacks-separat-auflisten/">Anleitung von Peruns Weblog</a>.
Man kann aber auch das Theme bearbeiten und dabei die Template-Datei comments.php anpassen, in dem man mit <a href="http://bueltge.de/wp-wordpress-cheat-sheet-fuer-theme-tags-und-plugin-api/205">WordPress-Template-Tags</a> arbeitet.]]></description>
			<content:encoded><![CDATA[<p>Will man die Track- und Pingbacks im Kommentarbereich extra darstellen so kann man mit dem Plugin <a href="http://jackosh.com/wpplugins/trackbacklist/">Trackbacklist</a> arbeiten und dabei hilft einem die <a href="http://www.perun.net/2006/12/07/track-und-pingbacks-separat-auflisten/">Anleitung von Peruns Weblog</a>.<br />
Man kann aber auch das Theme bearbeiten und dabei die Template-Datei comments.php anpassen, in dem man mit <a href="http://bueltge.de/wp-wordpress-cheat-sheet-fuer-theme-tags-und-plugin-api/205">WordPress-Template-Tags</a> arbeitet.</p>
<p>Im folgenden ein kleines Beispiel, wie man die Trackbacks und Pingbacks zu einem Beitrag seperat auflisten kann. Da sind der Phantasie und Abfragemechanismen keine Grenzen gesetzt. Ansehen kann man das Ganze auf dieser aktuellen Website zum Beispiel unter <a href="http://bueltge.de/wp-spamviewer-zum-loeschen-und-retten-von-spam/255#postmetadata2">diesem Link</a>. Die Track- und Pingbacks befinden sich innerhalb der Kommentare, sehen aber anders aus und enthalten keinen Text. Aus der Liste wollte ich sie nicht entfernen, da dann die Kommentare mt Bezug auf eine Kommentarnummer nicht mehr stimmen. Um die Ping- und Trackbacks komplett auszulagern, habe ich am Ende ein Code-Beispiel für eine komplette comments.php hinterlegt.<br />
Noch mehr Tipps und vorallem Diskussion gibt es bei Robert's Artikel „<a href="http://www.basicthinking.de/blog/2006/12/08/trackbacks-von-kommentaren-kennen/">Trackbacks von Kommentaren kennen</a>“ in den <a href="http://www.basicthinking.de/blog/2006/12/08/trackbacks-von-kommentaren-kennen/#comment-121403">Kommentaren</a>.</p>
<p>Übrigens, wer noch ein wenig Nachhilfe bei dem Begriff Trackback benötigt, der findet eine tolle Erklärung  bei Michael - <a href="http://sw-guide.de/weblog/2006-11-11/was-sind-trackbacks-erklaerung-im-sendung-mit-der-maus-stil/">Was sind Trackbacks? Erklärung im Sendung-mit-der-Maus-Stil</a></p>
<p>Zuerst fragen wir ab, ob es Kommentare zu Beitrag gibt:</p>
<pre><code>if ($comments)</code></pre>
<p>Nun bauen wir die foreach-Schleife aus, in dem wir eine weitere Abfrage einbauen:</p>
<pre><code>if ((get_comment_type() == "trackback") || (get_comment_type() == "pingback"))</code></pre>
<p>Der Tag <em>get_comment_type</em> übergibt uns, um was für einen Kommentar es sich handelt, und in dem Fall lassen wir alle Kommentare zu, die per Trackback oder Pingback kommen. Im Ganzen sieht der Code dann folgendermaßen aus.</p>
<pre><code>
&lt;?php if ($comments) : ?&gt;
	&lt;ol class="trackbacklist"&gt;
	&lt;?php foreach ($comments as $comment) : if ((get_comment_type() == "trackback") || (get_comment_type() == "pingback")) : ?&gt;

		&lt;li id="comment-&lt;?php comment_ID() ?&gt;" &gt;
			&lt;?php comment_type('Kommentar', 'Trackback', 'Pingback'); ?&gt;&lt;small&gt; von &lt;/small&gt;&lt;cite&gt;&lt;?php comment_author_link() ?&gt;&lt;/cite&gt;
			&lt;br /&gt;
			&lt;small class="commentmetadata"&gt;&lt;?php comment_date('j. F Y') ?&gt; um &lt;?php comment_time('H:i') ?&gt; &lt;?php edit_comment_link('&middot; bearbeiten','',''); ?&gt;&lt;/small&gt;

			&lt;?php comment_text() ?&gt;
		&lt;/li&gt;

	&lt;?php endif; endforeach; /* end for each comment */ ?&gt;
	&lt;/ol&gt;
 &lt;?php endif; ?&gt;
</code></pre>
<p>Damit nun der Kommentarbereich auch wirklich nur Kommentare aus dem Textfeld übernimmt, müssen wir die Abfrage dort noch erweitern, denn noch werden ja alle Kommentare, ob Track- oder Pingback dort dargestellt. Dazu erweitert man die Schleife.<br />
Suche nach:</p>
<pre><code>&lt;?php foreach ($comments as $comment) : ?&gt;</code></pre>
<p>und ersetze mit:</p>
<pre><code>&lt;?php foreach ($comments as $comment) : if (get_comment_type() == "comment") : ?&gt;</code></pre>
<p>Außerdem müssen wir beim Schließen der foreach-Schleife die Abfrage beenden:<br />
Suche nach:</p>
<pre><code>&lt;?php endforeach; ?&gt;</code></pre>
<p>und ersetze mit:</p>
<pre><code>&lt;?php endif; endforeach; ?&gt;</code></pre>
<p>Die Darstellung der Kommentaranzahl wird üblicherweise mit dem Tag <em>comments_number()</em> erstellt, die aber alle Kommentare zählt, egal ob Track-, Pingback oder Kommentar. Dagegen hilft nur eine weiter Abfrage - <a href="http://bueltge.de/wp-trackbacks-und-kommentare-getrennt-zaehlen/314">WP - Trackbacks und Kommentare getrennt zählen</a>. In diesem Artikel erkläre ich dann diese Funktion näher. </p>
<p>We noch mehr Tipps zum Anpassen des Kommentarbereiches möchte, der findet drei weitere Möglichkeiten im Artikel <a href="http://bueltge.de/wp-kommentarbereich-anpassen/272">WP - Kommentarbereich anpassen</a>. Dort erläuter ich kurz, wie man einen Counter einbaut, die Kommentare des Beitragsautors hervorhebt und wie man Gravatare zu den Kommentarautoren darstellt.</p>
<h3>Beispiel einer kompletten comments.php mit Track- und Pingback am Ende</h3>
<pre><code>
&lt;?php
/*********************************************************************
comments-template mit counter, trackback, Hervorhebung des Autors 
und Trennung Kommentare zu Track- und Pingback
**********************************************************************/
?&gt;

&lt;div id=&quot;comments&quot;&gt;
&lt;?php // Do not delete these lines
	if ('comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
		die ('Bitte diese Seite nicht direkt laden. Danke !');

				if (!empty($post-&gt;post_password)) { // if there's a password
						if ($_COOKIE['wp-postpass_' . COOKIEHASH] != $post-&gt;post_password) {  // and it doesn't match the cookie
				?&gt;
				
				&lt;p class=&quot;nocomments&quot;&gt;Dieser Beitrag ist passwortgesch&amp;#252;tzt. Bitte gebe das Passwort an um die Kommentare zu sehen.&lt;/p&gt;&lt;p&gt;
				
				&lt;?php
				return;
						}
				}

		/* alternating varibale for comment background */
		$oddcomment = 'alt';
?&gt;

&lt;?php if ($comments) : ?&gt;
	&lt;h2 class=&quot;twost&quot;&gt;&lt;?php comments_number('0 Kommentare', '1 Kommentar', '% Kommentare' );?&gt; zu &amp;#8222;&lt;?php the_title(); ?&gt;&amp;#8220;&lt;/h2&gt;

	&lt;ol class=&quot;commentlist&quot;&gt;

	&lt;?php $gravatar_default = &quot;ADRESSE_ZUM_DEFAULTBILD&quot;; ?&gt;

	&lt;?php $count = 0; foreach ($comments as $comment) : if (get_comment_type() == &quot;comment&quot;) : $count++; ?&gt;

		&lt;li id=&quot;comment-&lt;?php comment_ID() ?&gt;&quot;
			&lt;?php global $comment;
				if ( ($comment-&gt;comment_author_email == get_the_author_email()) &amp;&amp; ($comment-&gt;user_id != 0) ) {
						echo &quot; class=\&quot;autor_kommentar\&quot;&quot;;
				} else {
						echo &quot; class=\&quot;&quot; . $oddcomment . &quot;\&quot;&quot;;
				}
			?&gt;&gt;
			&lt;p class=&quot;comment-number&quot;&gt;&lt;a href=&quot;#comment-&lt;?php comment_ID() ?&gt;&quot;&gt;&lt;?php echo $count; ?&gt;&lt;/a&gt;&lt;/p&gt;

			&lt;?php $gravatar_url = &quot;http://www.gravatar.com/avatar.php?gravatar_id=&quot; . md5(get_comment_author_email()) . &quot;&amp;amp;default=&quot; . urlencode($gravatar_default) . &quot;&amp;amp;size=30&quot;; ?&gt;
			&lt;img class=&quot;gravatar&quot; src=&quot;&lt;?php echo $gravatar_url ?/&gt;&quot; title=&quot;&lt;?php comment_author(); ?&gt;'s Gravatar&quot; alt=&quot;id&quot; /&gt;
	
			&lt;?php comment_type('Kommentar', 'Trackback', 'Pingback'); ?&gt;&lt;small&gt; von &lt;/small&gt;&lt;cite&gt;&lt;?php comment_author_link() ?&gt;&lt;/cite&gt;
			&lt;?php if ($comment-&gt;comment_approved == '0') : ?&gt;
			&lt;em&gt;Dein Kommentar muss noch moderiert werden.&lt;/em&gt;
			&lt;?php endif; ?&gt;
			&lt;br /&gt;
			&lt;small class=&quot;commentmetadata&quot;&gt;&lt;?php comment_date('j. F Y') ?&gt; um &lt;?php comment_time('H:i') ?&gt; &lt;?php edit_comment_link('&amp;middot; bearbeiten','',''); ?&gt;&lt;/small&gt;

			&lt;?php comment_text() ?&gt;
		&lt;/li&gt;

	&lt;?php /* Changes every other comment to a different class */  
		if ('alt' == $oddcomment) $oddcomment = '';
		else $oddcomment = 'alt';
	?&gt;

	&lt;?php endif; endforeach; /* end for each comment */ ?&gt;
	&lt;/ol&gt;

 &lt;?php else : // this is displayed if there are no comments so far ?&gt;

	&lt;?php if ('open' == $post-&gt;comment_status) : ?&gt; 
		&lt;!-- If comments are open, but there are no comments. --&gt;
		
	 &lt;?php else : // comments are closed ?&gt;

		&lt;/p&gt;&lt;p class=&quot;nocomments&quot;&gt;Kommentare sind gechlossen.&lt;/p&gt;
		
	&lt;?php endif; ?&gt;
&lt;?php endif; ?&gt;

&lt;?php if ('open' == $post-&gt;comment_status) : ?&gt;

&lt;h2 class=&quot;threest&quot; id=&quot;writecomment&quot;&gt;Kommentar schreiben&lt;/h2&gt;

&lt;?php if ( get_option('comment_registration') &amp;&amp; !$user_ID ) : ?&gt;
&lt;p&gt;Du musst &lt;a href=&quot;&lt;?php echo get_option('siteurl'); ?&gt;/wp-login.php?redirect_to=&lt;?php the_permalink(); ?&gt;&quot;&gt;angemeldet&lt;/a&gt; sein um einen Kommentar zu schreiben.&lt;/p&gt;
&lt;?php else : ?&gt;

	&lt;form action=&quot;&lt;?php echo get_option('siteurl'); ?&gt;/wp-comments-post.php&quot; method=&quot;post&quot; id=&quot;commentform&quot;&gt;
		
		&lt;?php if ( $user_ID ) : ?&gt;	
			&lt;p&gt;Angemeldet als &lt;a href=&quot;&lt;?php echo get_option('siteurl'); ?&gt;/wp-admin/profile.php&quot;&gt;&lt;?php echo $user_identity; ?&gt;&lt;/a&gt;. &lt;a href=&quot;&lt;?php echo get_option('siteurl'); ?&gt;/wp-login.php?action=logout&quot; title=&quot;Log out of this account&quot;&gt;Abmelden &amp;raquo;&lt;/a&gt;&lt;/p&gt;	
		&lt;?php else : ?&gt;
	
			&lt;p&gt;
				&lt;input type=&quot;text&quot; name=&quot;author&quot; id=&quot;author&quot; value=&quot;&lt;?php echo $comment_author; ?/&gt;&quot; size=&quot;20&quot; tabindex=&quot;1&quot; /&gt;
				&lt;label for=&quot;author&quot;&gt;Name &lt;?php if ($req) echo &quot;&lt;small&gt;Pflichtfeld&quot;; ?&gt;&lt;/label&gt;
			&lt;/p&gt;
			&lt;p&gt;
				&lt;input type=&quot;text&quot; name=&quot;email&quot; id=&quot;email&quot; value=&quot;&lt;?php echo $comment_author_email; ?/&gt;&quot; size=&quot;20&quot; tabindex=&quot;2&quot; /&gt;
				&lt;label for=&quot;email&quot;&gt;eMail (bleibt versteckt) &lt;?php if ($req) echo &quot;&lt;small&gt;Pflichtfeld&quot;; ?&gt;&lt;/label&gt;
			&lt;/p&gt;	
			&lt;p&gt;
				&lt;input type=&quot;text&quot; name=&quot;url&quot; id=&quot;url&quot; value=&quot;&lt;?php echo $comment_author_url; ?/&gt;&quot; size=&quot;20&quot; tabindex=&quot;3&quot; /&gt;
				&lt;label for=&quot;url&quot;&gt;Website&lt;/label&gt;
			&lt;/p&gt;
			&lt;?php if ( function_exists('math_comment_spam_protection') ) { $mcsp_info = math_comment_spam_protection();?&gt;
			&lt;p&gt;
				&lt;input type=&quot;text&quot; name=&quot;mcspvalue&quot; id=&quot;mcspvalue&quot; value=&quot;&quot; size=&quot;20&quot; tabindex=&quot;4&quot; /&gt;
				&lt;label for=&quot;mcspvalue&quot;&gt;Spamschutz: &lt;?php echo $mcsp_info['operand1'] . ' + ' . $mcsp_info['operand2'] . ' = ?' ?&gt; &lt;small&gt;Pflichtfeld&lt;/small&gt;&lt;/label&gt;
				&lt;input type=&quot;hidden&quot; name=&quot;mcspinfo&quot; value=&quot;&lt;?php echo $mcsp_info['result']; ?/&gt;&quot; /&gt;
			&lt;/p&gt;
			&lt;?php } ?&gt;
				
		&lt;?php endif; ?&gt;
			&lt;p class=&quot;textfeld&quot; &gt;Textfeld &amp;raquo; &lt;a href=&quot;javascript:change_textbox_size(-80);&quot; title=&quot;Textfeld verkleinern&quot; &gt;kleiner&lt;/a&gt; &amp;middot; &lt;a href=&quot;javascript:change_textbox_size(80);&quot; title=&quot;Textfeld vergr&amp;ouml;&amp;szlig;ern&quot; &gt;gr&amp;ouml;&amp;szlig;er&lt;/a&gt;&lt;/p&gt;
			&lt;p&gt;
				&lt;textarea name=&quot;comment&quot; id=&quot;comment&quot; cols=&quot;30&quot; rows=&quot;5&quot; tabindex=&quot;4&quot;&gt;&lt;/textarea&gt;
			&lt;/p&gt;
			&lt;p&gt;
				&lt;input name=&quot;submit&quot; type=&quot;submit&quot; id=&quot;submit&quot; tabindex=&quot;6&quot; value=&quot;Kommentar absenden&quot; /&gt;
				&lt;input type=&quot;hidden&quot; name=&quot;comment_post_ID&quot; value=&quot;&lt;?php echo $id; ?/&gt;&quot; /&gt;
			&lt;/p&gt;
		&lt;?php do_action('comment_form', $post-&gt;ID); ?&gt;
	&lt;/form&gt;
	&lt;?php endif; // If registration required and not logged in ?&gt;

&lt;?php endif; // if you delete this the sky will fall on your head ?&gt;

&lt;?php if ($comments) : ?&gt;
	&lt;ol class=&quot;trackbacklist&quot;&gt;

	&lt;?php foreach ($comments as $comment) : if ((get_comment_type() == &quot;trackback&quot;) || (get_comment_type() == &quot;pingback&quot;)) : $count++?&gt;

		&lt;li id=&quot;comment-&lt;?php comment_ID() ?&gt;&quot; class=&quot;&lt;?php echo $oddcomment; ?&gt;&quot;&gt;
			&lt;p class=&quot;comment-number&quot;&gt;&lt;a href=&quot;#comment-&lt;?php comment_ID() ?&gt;&quot;&gt;&lt;?php echo $count; ?&gt;&lt;/a&gt;&lt;/p&gt;
			&lt;?php comment_type('Kommentar', 'Trackback', 'Pingback'); ?&gt;&lt;small&gt; von &lt;/small&gt;&lt;cite&gt;&lt;?php comment_author_link() ?&gt;&lt;/cite&gt;
			&lt;br /&gt;
			&lt;small class=&quot;commentmetadata&quot;&gt;&lt;?php comment_date('j. F Y') ?&gt; um &lt;?php comment_time('H:i') ?&gt; &lt;?php edit_comment_link('&amp;middot; bearbeiten','',''); ?&gt;&lt;/small&gt;

			&lt;?php //comment_text() ?&gt;
		&lt;/li&gt;

	&lt;?php /* Changes every other comment to a different class */  
		if ('alt' == $oddcomment) $oddcomment = '';
		else $oddcomment = 'alt';
	?&gt;

	&lt;?php endif; endforeach; /* end for each comment */ ?&gt;
	&lt;/ol&gt;
 &lt;?php else : // this is displayed if there are no comments so far ?&gt;

	&lt;?php if ('open' == $post-&gt;comment_status) : ?&gt; 
		&lt;!-- If comments are open, but there are no comments. --&gt;
		
	 &lt;?php else : // comments are closed ?&gt;

		&lt;p class=&quot;nocomments&quot;&gt;Trackpacks/Pingbacks sind gechlossen.&lt;/p&gt;
		
	&lt;?php endif; ?&gt;
&lt;?php endif; ?&gt;

&lt;/div&gt;
</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-track-und-pingbacks-seperat-listen-ohne-plugin/299/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-track-und-pingbacks-seperat-listen-ohne-plugin/299/feed/</wfw:commentRss>
		<slash:comments>26</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>Wie fange ich an zu bloggen ?</title>
		<link>http://bueltge.de/wie-fange-ich-an-zu-bloggen/221/</link>
		<comments>http://bueltge.de/wie-fange-ich-an-zu-bloggen/221/#comments</comments>
		<pubDate>Thu, 17 Aug 2006 10:20:47 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Tipps]]></category>
		<category><![CDATA[Webküche]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Anleitung]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[HowTo]]></category>

		<guid isPermaLink="false">http://www.bueltge.de/?p=221</guid>
		<description><![CDATA[Derzeit ist es so, dass ich kaum noch zum Arbeiten an meinen privaten Projekten komme, da ich viel Zeit mit Support in Bereich WordPress verwende. Woran liegt das?  Einerseits liegt es wohl daran, dass WP ein tolles Tool ist, andererseits kommen täglich neue Blogs im WWW zum Vorschein. Es ist einfach sich einen Blog mit Hilfe von WP einzurichten und das WP-hosting tut seinen Beitrag dazu. Nicht das ich es nicht gut finde, ganz im Gegenteil, das Web ist für alle da und für alle die gleichen Rechte.
Aber leider habe ich den Eindruck, dass ständig neue Blogs auf den Markt kommen, ohne  sich Gedanken zum Thema zum machen. Sie haben kein Ziel oder Zweck ihres Blogs definiert. Bloggen ist eine Modewelle und daran wollen scheinbar viele Leute teilhaben.
Wie fange ich an zu bloggen? - Einige Anregungen soll der folgende Artikel geben.]]></description>
			<content:encoded><![CDATA[<p>Derzeit ist es so, dass ich kaum noch zum Arbeiten an meinen privaten Projekten komme, da ich viel Zeit mit Support in Bereich WordPress verwende. Woran liegt das? - Einerseits liegt es wohl daran, dass WP ein tolles Tool ist, andererseits kommen täglich neue Blogs im WWW zum Vorschein. Es ist einfach sich einen Blog mit Hilfe von WP einzurichten und das WP-hosting tut seinen Beitrag dazu. Nicht das ich es nicht gut finde, ganz im Gegenteil, das Web ist für alle da und für alle die gleichen Rechte.<br />
Aber leider habe ich den Eindruck, dass ständig neue Blogs auf den Markt kommen, ohne  sich Gedanken zum Thema zum machen. Sie haben kein Ziel oder Zweck ihres Blogs definiert. Bloggen ist eine Modewelle und daran wollen scheinbar viele Leute teilhaben.<br />
Wie fange ich an zu bloggen? - Einige Anregungen soll der folgende Artikel geben.<br />
<span id="more-221"></span></p>
<h3>Vorher</h3>
<p>Bevor du einen Blog erstellst, solltest du dir Gedanken über deinen zukünftigen Blog machen. Das gilt für persönliche, fachliche und geschäftliche Blogs. Allerdings erhebe ich keinen Anspruch auf Vollständigkeit. Für Ergänzungen oder Kritik stehen die Kommentare zur Verfügung.</p>
<ol>
<li><strong>Weshalb willst du bloggen?</strong><br />
Hinterfrage dies etwas genauer. Nur im Netz präsent zu sein erscheint mir als ein sehr kleiner Beweggrund. Wen willst du mit dem Inhalt deines Blogs erreichen? Ist deine Zielgruppe klein oder verteilt sie sich über den Erdball? Welche Sprache soll den Blog unterstützen? Wieviel Feedback möchtest du über die Site erreichen? Gibt es finanzielle Interessen?</li>
<li><strong>Welches Thema bedient dein Weblog?</strong><br />
Möchtest du zu einem Thema bloggen, willst du dich spezifisch festlegen oder stellst du alles ins Netz, was dich bewegt?<br />
Das tägliche Leben in einem Blog zu spiegeln ist ja der eigentliche Gedanke hinter einem Blog, den Online-Tagebüchern, gewesen. Ist dies der Hintergrund für deinen Blog, dann es ist schwierig mehr Leser als die Familienangehörigen oder Freunde für einen derartigen Blog zu gewinnen. Deshalb ist es so wichtig, dass du es willst und das du nicht nur einer Modewelle hinter läufst.<br />
Sollte es dein Ziel sein, mehr Leser als die Freunde und Verwandten zu erreichen, dann suche dir eine Nische  ein spezifisches Thema, aber auch ein oder auch zwei Themen, in denen du dich auskennst, die du liebst. So wirst du in Zukunft auch Freude am schreiben habe.</li>
<li><strong>Willst du Geld verdienen?</strong><br />
Ist der Hintergrund deines neuen Blogs finanzielles Interesse, dann solltest du noch intensiver über dein Thema nachdenken, denn dann bist du abhängig von einer großen Leserschaft. Möglichkeiten, wie z.B. Google Adsense, suggerieren das leichte Geld verdienen. Dies ist ein Irrtum. Der Inhalt deines Blogs ist der Schlüssel für Google Adsense und somit auch für deinen Geldbeutel. Aber nicht nur das, der Inhalt kommt zu erst, dann kommt Werbung und die ist noch lange nicht Attraktiv für den Leser deines Beitrags. Auch hier ist Geduld gefragt.</li>
<li><strong>Schreibe Inhalt</strong><br />
Bevor du deinen Blog online bekannt gibst, schreibe einige Beiträge. Wenn du genügend gute Beiträge hast, dann gehe online und mache deinen Blog bekannt. Gehst du ohne Inhalt online, so  besteht die Gefahr, dass potenzielle Leser nicht wieder kommen, sie waren enttäuscht.<br />
Halte einige Artikel zurück, veröffentliche sie im Laufe der ersten Monate. Es müssen nicht alle Artikel auf einmal erscheinen. So kannst du regelmäßig neue Artikel veröffentlichen.<br />
Um Leser zu binden, ist es eine gute Möglichkeit, in dem Beiträge über mehrere Tage gehen und in kleinere Beiträge aufgeteilt werden. Somit kommen Leser wieder, insofern der erste Artikel interessant ist oder sie abonnieren deinen Feed.<br />
Erinnere in deinen Beiträgen  setze Links auf ältere Beiträge oder liste deinen meistgelesenen Artikel.</li>
<li><strong>Netzwerk nutzen</strong><br />
Nutze Blogs, die dir bereits bekannt sind.  Baue eine Bloggernetz auf. Suche Leute, die die gleichen Interessen haben. Tausche Interessen aus und tausche ebenso Links. Über dieses Netz bauen sich Links auf, die sorgen dafür, dass dein Blog bekannter wird. Suche dir Blogs, die über deinen Blog schreiben (z.B. <a href="http://sw-guide.de/weblog/tag/blog-der-woche/">sw-guide.de</a>, <a href="http://www.basicthinking.de/blog/">basicthinking.de</a>).<br />
Setze Pings ein und informiere damit eine größere Gemeinde und lass außerdem deine Backlinks anwachsen. Dazu gibt es bestehende Service im Netz (z.B. <a href="http://technorati.com">technorati.com</a>, <a href="http://feedburner.com">feedburner.com</a>).</li>
<li><strong>Suchmaschinenoptimierung (SEO)</strong><br />
Bevor du online gehst, achte darauf und prüfe ob dein Blog Suchmaschinenfreundlich ist? Lese dazu den Artikel: <a href="http://bueltge.de/methoden-der-suchmaschinen-optimierung-seo-unter-wordpress/182/">Methoden der Suchmaschinen-Optimierung (SEO) unter WordPress</a>. Dort habe ich einige relevante Punkte zusammen getragen, damit WordPress noch Suchmaschinenfreundlicher wird.</li>
<li><strong>Design</strong><br />
Wie wird dein Blog aussehen? Liegt der Schwerpunkt deiner Site auf dem Design oder dem Inhalt? Ein Blog ist in der Regel für Inhalt bekannt, das Design sollte nicht im Vordergrund stehen oder sogar das Lesen der Inhalte erschweren. Versuche das Design eventuell an dein Thema anzupassen und  somit der Zielgruppe entgegen  zu kommen.</li>
<li><strong>Statistik</strong><br />
Na klar willst du wissen, wer, wie viel, wie und woher deine Besucher kommen, aber jedes Statistiktool was in deine Seite integriert ist, setzt die Performance mehr oder weniger herab. Überlege dir also, ob es unbedingt notwendig ist und in welchem Umfang.</li>
<li><strong>Pingservice</strong><br />
Im Punkt 5 bin ich schon kurz darauf eingegangen, warum die Verbreitung wichtig ist. Mit Hilfe von Pingservices kannst du ständig neue Besucher bekommen. Nutze verschiedene Service und lege dich nicht auf einen fest. Derzeit nutze ich folgende:</p>
<ul>
<li>http://rpc.weblogs.com/pingSiteForm?name=...</li>
<li>http://api.my.yahoo.com/RPC2</li>
<li>http://ping.feedburner.com</li>
<li>http://www.bloglines.com/ping</li>
<li>http://ping.wordblog.de/</li>
<li>http://xmlrpc.blogg.de/</li>
<li>http://ping.blogg.de/?name=...</li>
<li>http://weblogs.com/</li>
<li>http://ping.blo.gs/?name=bueltge.de&#038;url=http://bueltge.de/</li>
<li>http://pingoat.com/</li>
<li>http://rpc.pingomatic.com/</li>
<li>http://ping.blo.gs/</li>
<li>http://rpc.technorati.com/rpc/ping</li>
<li>http://geourl.org/ping/</li>
</ul>
</li>
</ol>
<h3>Nachher</h3>
<p>Wenn du nun online bist  und dein Blog läuft, dann gilt es erst einmal Geduld zu haben. Die Leser kommen nicht von heute auf morgen. Schreibe weiterhin an Beiträgen und habe Spaß daran, denn sollte der Hintergrund sein, warum du einen Blog haben wolltest. Bleibe freundlich und offen, versuche motiviert zu bleiben. Die Kommentarfunktion in einem Blog ist wichtig und sorgt für die Kommunikation  beachte alle Meinungen, dazu zählt auch Kritik. Achte dabei auf die Etikette und verletzte deine Leser nicht. Die Diskussionen sind wichtig für das Leben und Überleben deines Blogs.</p>
<h3>Weiterführende Links:</h3>
<ul>
<li><a href="http://www.einfach-persoenlich.de/2005-01-14/blogging-tipps-16-erkenntnisse-kreativer-blogger.html">Weblog-Impuls #1: 16 Erkenntnisse eines kreativen Bloggers</a></li>
<li><a href="http://www.basicthinking.de/blog/2005/10/23/wie-wird-das-eigene-blog-bekannt-update/">Wie wird das eigene Blog bekannt?</a></li>
<li><a href="http://www.trendmile.com/Blog/weblog-blogging/bloggen-aber-richtig/">Bloggen aber richtig</a></li>
<li><a href="http://labuschin.com/?d=7&#038;id=226">Entstehungs-Prozess eines Weblog-Artikels</a></li>
<li><a href="http://webdesignblog.de/seo/101-wege-seine-linkpopularitat-aufzubauen/">101 Wege seine Linkpopularität aufzubauen</a></li>
<li><a href="http://labuschin.com/?d=7&#038;id=241">7 Dinge die den Besucher zum Weiterlesen einladen</a></li>
<li><a href="http://www.wams.de/data/2003/03/23/56356.html">10 Tipps für erfolgreiches Blogge</a>n</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/wie-fange-ich-an-zu-bloggen/221/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wie-fange-ich-an-zu-bloggen/221/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
	</channel>
</rss>

