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

<channel>
	<title>Simbo.de &#187; Wordpress</title>
	<atom:link href="http://simbo.de/blog/tag/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://simbo.de</link>
	<description>Digitales Allerlei.</description>
	<lastBuildDate>Mon, 21 Jun 2010 13:50:13 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>I love jazz.</title>
		<link>http://simbo.de/blog/2010/06/i-love-jazz/</link>
		<comments>http://simbo.de/blog/2010/06/i-love-jazz/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 13:43:04 +0000</pubDate>
		<dc:creator>Simbo</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://simbo.de/?p=478</guid>
		<description><![CDATA[Wordpress 3.0 &#8220;Thelonious&#8221; ist vor ein paar Tagen erschienen und bringt viele langersehnte Funktionen nun von Haus aus mit: individuelle Posts und Navigationen, Header- und Hintergrundbilder für jedes Post und vieles mehr&#8230;
Nehmt euch 3 Minuten und schaut euch das Video an!

]]></description>
			<content:encoded><![CDATA[<p>Wordpress 3.0 &#8220;Thelonious&#8221; ist vor ein paar Tagen erschienen und bringt viele langersehnte Funktionen nun von Haus aus mit: individuelle Posts und Navigationen, Header- und Hintergrundbilder für jedes Post und vieles mehr&#8230;<br />
Nehmt euch 3 Minuten und schaut euch das Video an!</p>
<p><embed src="http://v.wordpress.com/wp-content/plugins/video/flvplayer.swf?ver=1.21" type="application/x-shockwave-flash" width="640" height="360" wmode="transparent" seamlesstabbing="true" allowfullscreen="true" allowscriptaccess="always" overstretch="true" flashvars="guid=BQtfIEY1&amp;width=640&amp;height=360&amp;locksize=no&amp;dynamicseek=false&amp;qc_publisherId=p-18-mFEk4J448M" title="Introducing WordPress 3.0 &quot;Thelonious&quot;"></embed></p>
]]></content:encoded>
			<wfw:commentRss>http://simbo.de/blog/2010/06/i-love-jazz/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>AJAX Kommentare</title>
		<link>http://simbo.de/blog/2009/12/ajax-kommentare/</link>
		<comments>http://simbo.de/blog/2009/12/ajax-kommentare/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 16:44:26 +0000</pubDate>
		<dc:creator>Simbo</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Theme Entwicklung]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://simbo.de/site/?p=299</guid>
		<description><![CDATA[Es gibt zahlreiche Plugins für Wordpress, die dafür sorgen, dass Kommentare von Besuchern per AJAX eingetragen werden. Die meisten davon schaffen es nicht lange mit den aktuellen Versionen von Wordpress kompatibel zu bleiben und diejenigen die es schaffen, sind so überladen mit Schnickschnack und hässlichen Frontendgestaltungen, dass ich soviel Zeit brauche alles nach meinen Wünschen [...]]]></description>
			<content:encoded><![CDATA[<p>Es gibt zahlreiche Plugins für Wordpress, die dafür sorgen, dass Kommentare von Besuchern per AJAX eingetragen werden. Die meisten davon schaffen es nicht lange mit den aktuellen Versionen von Wordpress kompatibel zu bleiben und diejenigen die es schaffen, sind so überladen mit Schnickschnack und hässlichen Frontendgestaltungen, dass ich soviel Zeit brauche alles nach meinen Wünschen anzupasssen, da kann ich gleich alles von vornerein neu machen.</p>
<p><span id="more-299"></span></p>
<p>Zuerst mal brauche ich dafür ein PHP-Skript, dass nicht nur die Formulardaten verarbeitet und bei erfolgreicher Überprüfung ein neues Kommentar anlegt, sondern auch eine Ausgabe erzeugt, die man mit Javascript leicht verarbeiten kann.</p>
<h4>Die normale Kommentarverarbeitung in Wordpress 2.8+</h4>
<p>Ohne AJAX übernimmt die Datei <code>wp-comments-post.php</code>, die sich im Wordpress-Stammverzeichnis befindet, das Verarbeiten des Kommentarformulars. Kann ein Kommentar, aus welchen Gründen auch immer, nicht eingetragen werden, gibt das Skript über die Wordpress-interne Funktion <code>wp_die()</code> eine kleine HTML-Seite mitsamt Fehlerbeschreibung aus. Sollte nichts gegen das Erstellen des Kommentars sprechen, wird es angelegt und mit der ebenfalls Wordpress-internen Funktion <code>wp_redirect()</code> wird auf die zum Kommentar gehörende Artikelseite weitergeleitet.</p>
<p>Die Vermeidung von Doppelpostings und Flooding wird nicht direkt innerhalb von <code>wp-comment-post.php</code> geregelt, sondern im Zuge der Funktion <code>wp_new_comment()</code>. Die per Filter im Laufe der Funktion angewandten Funktionen <code>wp_allow_comment()</code> und <code>check_comment_flood_db()</code> (beide definiert in <code>wp-includes/comment.php</code>) sind dafür verantwortlich und liefern bei positivem Befund ebenfalls eine HTML-Seite per <code>wp_die()</code>. Aber hier haben die Wordpress-Entwickler bereits Vorarbeit geleistet: Ist eine Konstante namens <code>DOING_AJAX</code> definiert, wird bei Doppelpostings und Flooding stattdessen direkt <code>die()</code> verwendet und die Fehlermeldung als reiner Text ausgegeben.</p>
<h4>Los gehts&hellip;</h4>
<p>Ich nehme mir also die Datei <code>wp-comments-post.php</code> als Vorlage für mein PHP-Skript zur Formularverarbeitung mit AJAX. Dazu erstelle ich eine Kopie der Datei unter dem Namen <code>new-comment.php</code> und speichere diese im Unterverzeichnis <code>ajax</code> meines Themeordners. Falls bei einem zukünftigen Update von Wordpress die <code>wp-comments-post.php</code> verändert wird und ich somit meine <code>new-comment.php</code> neu erstellen muss, markiere ich vorsichtshalber alle geänderten Stellen im Quelltext um die Anpassungen später besser nachvollziehen und wiederholen zu können. Ich habe auf Wordpress.org auch bereits den <a href="http://wordpress.org/extend/ideas/topic.php?id=3389">Vorschlag gemacht</a>, diese Anpassungen von Haus aus in <code>wp-comments-post.php</code> zu integrieren um die Implementierung von AJAX Kommentaren in Zukunft zu vereinfachen.</p>
<p>Damit das Skript innerhalb der Wordpress-Umgebung ausgeführt wird, muss der Pfad zu <code>wp-load.php</code> ziemlich am Anfang der Datei angepasst werden. Direkt davor füge ich <code>define('DOING_AJAX',1);</code> ein. Damit anstatt der HTML-Fehlerseiten reine Textnachrichten ausgegeben werden, ersetze ich alle Vorkommen von <code>wp_die()</code> durch die Funktion <code>die()</code>. Die letzten 3 Zeilen der Datei, die verantwortlich für den Redirect sind, kommentiere ich aus. In der Variablen <code>$comment</code> ist nun das Objekt des eben erstellten Kommentars gespeichert. Nachdem ich den Content des Kommentars gefiltert und das Datum formatiert habe, verwandle ich das Objekt in einen JSON-String und gebe ihn per <code>die()</code> aus. Das PHP-Skript liefert nun also im Fehlerfall eine Textmeldung zurück und im Erfolgsfalls das eben erstellte Kommentar.</p>
<p>Meine <code>new-comment.php</code> sieht jetzt so aus:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009933; font-style: italic;">/**-----------------------------------------------------------------------------
 *	start	/wp-comments-post.php
 *	changes start with //## and end with //^^
 */</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'POST'</span> <span style="color: #339933;">!=</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REQUEST_METHOD'</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Allow: POST'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'HTTP/1.1 405 Method Not Allowed'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Content-Type: text/plain'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #990000;">exit</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009933; font-style: italic;">/** Sets up the WordPress Environment. */</span>
<span style="color: #666666; font-style: italic;">//## require( dirname(__FILE__) . '/wp-load.php' );</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'DOING_AJAX'</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">require</span>  <span style="color: #0000ff;">'../../../../wp-load.php'</span> <span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//^^</span>
&nbsp;
nocache_headers<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$comment_post_ID</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'comment_post_ID'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$status</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get_row</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">prepare</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT post_status, comment_status FROM <span style="color: #006699; font-weight: bold;">$wpdb-&gt;posts</span> WHERE ID = <span style="color: #009933; font-weight: bold;">%d</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$comment_post_ID</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$status</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">comment_status</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	do_action<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'comment_id_not_found'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$comment_post_ID</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #990000;">exit</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span>comments_open<span style="color: #009900;">&#40;</span><span style="color: #000088;">$comment_post_ID</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	do_action<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'comment_closed'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$comment_post_ID</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">//## wp_die( __('Sorry, comments are closed for this item.') );</span>
	<span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span> __<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Sorry, comments are closed for this item.'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">//^^</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">in_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$status</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">post_status</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'draft'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'pending'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	do_action<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'comment_on_draft'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$comment_post_ID</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #990000;">exit</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
	do_action<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'pre_comment_on_post'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$comment_post_ID</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000088;">$comment_author</span>       <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'author'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>  ? <span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">strip_tags</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'author'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$comment_author_email</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'email'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>   ? <span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'email'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$comment_author_url</span>   <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'url'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>     ? <span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'url'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$comment_content</span>      <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'comment'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> ? <span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'comment'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// If the user is logged in</span>
<span style="color: #000088;">$user</span> <span style="color: #339933;">=</span> wp_get_current_user<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$user</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$user</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">display_name</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
		<span style="color: #000088;">$user</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">display_name</span><span style="color: #339933;">=</span><span style="color: #000088;">$user</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">user_login</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$comment_author</span>       <span style="color: #339933;">=</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">escape</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$user</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">display_name</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$comment_author_email</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">escape</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$user</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">user_email</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$comment_author_url</span>   <span style="color: #339933;">=</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">escape</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$user</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">user_url</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> current_user_can<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'unfiltered_html'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> wp_create_nonce<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'unfiltered-html-comment_'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$comment_post_ID</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'_wp_unfiltered_html_comment'</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			kses_remove_filters<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// start with a clean slate</span>
			kses_init_filters<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// set up the filters</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> get_option<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'comment_registration'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <span style="color: #0000ff;">'private'</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$status</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">post_status</span> <span style="color: #009900;">&#41;</span>
		<span style="color: #666666; font-style: italic;">//## wp_die( __('Sorry, you must be logged in to post a comment.') );</span>
		<span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span> __<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Sorry, you must be logged in to post a comment.'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #666666; font-style: italic;">//^^</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000088;">$comment_type</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> get_option<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'require_name_email'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #339933;">!</span><span style="color: #000088;">$user</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #cc66cc;">6</span> <span style="color: #339933;">&gt;</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$comment_author_email</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <span style="color: #0000ff;">''</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$comment_author</span> <span style="color: #009900;">&#41;</span>
		<span style="color: #666666; font-style: italic;">//## wp_die( __('Error: please fill the required fields (name, email).') );</span>
		<span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span> __<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Error: please fill the required fields (name, email).'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #666666; font-style: italic;">//^^</span>
	<span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span>is_email<span style="color: #009900;">&#40;</span><span style="color: #000088;">$comment_author_email</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
		<span style="color: #666666; font-style: italic;">//## wp_die( __('Error: please enter a valid email address.') );</span>
		<span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span> __<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Error: please enter a valid email address.'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #666666; font-style: italic;">//^^</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">''</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$comment_content</span> <span style="color: #009900;">&#41;</span>
	<span style="color: #666666; font-style: italic;">//## wp_die( __('Error: please type a comment.') );</span>
	<span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span> __<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Error: please type a comment.'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">//^^</span>
&nbsp;
<span style="color: #000088;">$comment_parent</span> <span style="color: #339933;">=</span> <span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'comment_parent'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> ? absint<span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'comment_parent'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$commentdata</span> <span style="color: #339933;">=</span> <span style="color: #990000;">compact</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'comment_post_ID'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'comment_author'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'comment_author_email'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'comment_author_url'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'comment_content'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'comment_type'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'comment_parent'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'user_ID'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$comment_id</span> <span style="color: #339933;">=</span> wp_new_comment<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$commentdata</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$comment</span> <span style="color: #339933;">=</span> get_comment<span style="color: #009900;">&#40;</span><span style="color: #000088;">$comment_id</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span><span style="color: #000088;">$user</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$comment_cookie_lifetime</span> <span style="color: #339933;">=</span> apply_filters<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'comment_cookie_lifetime'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">30000000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #990000;">setcookie</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'comment_author_'</span> <span style="color: #339933;">.</span> COOKIEHASH<span style="color: #339933;">,</span> <span style="color: #000088;">$comment</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">comment_author</span><span style="color: #339933;">,</span> <span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$comment_cookie_lifetime</span><span style="color: #339933;">,</span> COOKIEPATH<span style="color: #339933;">,</span> COOKIE_DOMAIN<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #990000;">setcookie</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'comment_author_email_'</span> <span style="color: #339933;">.</span> COOKIEHASH<span style="color: #339933;">,</span> <span style="color: #000088;">$comment</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">comment_author_email</span><span style="color: #339933;">,</span> <span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$comment_cookie_lifetime</span><span style="color: #339933;">,</span> COOKIEPATH<span style="color: #339933;">,</span> COOKIE_DOMAIN<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #990000;">setcookie</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'comment_author_url_'</span> <span style="color: #339933;">.</span> COOKIEHASH<span style="color: #339933;">,</span> esc_url<span style="color: #009900;">&#40;</span><span style="color: #000088;">$comment</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">comment_author_url</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$comment_cookie_lifetime</span><span style="color: #339933;">,</span> COOKIEPATH<span style="color: #339933;">,</span> COOKIE_DOMAIN<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//##</span>
<span style="color: #666666; font-style: italic;">// $location = empty($_POST['redirect_to']) ? get_comment_link($comment_id) : $_POST['redirect_to'] . '#comment-' . $comment_id;</span>
<span style="color: #666666; font-style: italic;">// $location = apply_filters('comment_post_redirect', $location, $comment);</span>
<span style="color: #666666; font-style: italic;">// wp_redirect($location);</span>
<span style="color: #000088;">$comment</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">comment_content</span> <span style="color: #339933;">=</span> apply_filters<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'comment_text'</span><span style="color: #339933;">,</span><span style="color: #000088;">$comment</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">comment_content</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$comment</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">comment_date</span> <span style="color: #339933;">=</span> <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'l, j. F Y G:i'</span><span style="color: #339933;">,</span><span style="color: #990000;">strtotime</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$comment</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">comment_date</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">json_encode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$comment</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//^^</span>
&nbsp;
<span style="color: #009933; font-style: italic;">/**-----------------------------------------------------------------------------
 *	end	/wp-comments-post.php
 */</span></pre></td></tr></table></div>

<p>Jetzt da ich eine Datei habe, die meine AJAX-Anfrage verarbeiten und beantworten kann, kann ich das zugehörige Javascript basteln. Ein <code>div</code> wird beim Formular eingefügt um den Ladestatus oder eine Fehlermeldung anzuzeigen. Der Rest ist ein simpler <code><a href="http://docs.jquery.com/Ajax/jQuery.ajax">jQuery.ajax()</a></code>-Aufruf, der beim <code>success</code>-Event den zurückgelieferten Text als Fehlermeldung in besagtem <code>div</code> anzeigt oder, sollte der Text mit einem <code>{</code> beginnen, ihn als JSON-Objekt des neuen Kommentars behandelt. Aus den Kommentardaten lasse ich ein HTML-Konstrukt erstellen, das dem Kommentarlisteneintrag meines Templates entspricht, und füge es in dann in die Liste ein. Sollte es auf der Seite noch keine Kommentare geben, wird der gesamte notwendige Bereich mitsamt Überschrift erstellt und eingefügt. Den HTML-Teil und das Einreihen in das DOM sollte man natürlich an sein jeweiliges Theme anpassen. Bei mir sieht das dann so aus:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">jQuery<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">&#40;</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">// ajax comments</span>
	<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span> jQuery<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#commentform'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">length</span><span style="color: #339933;">&gt;</span><span style="color: #CC0000;">0</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #003366; font-weight: bold;">var</span> ac <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
			form<span style="color: #339933;">:</span> jQuery<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#commentform'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
			response<span style="color: #339933;">:</span> jQuery<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'&lt;div id=&quot;response&quot; /&gt;'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">hide</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
		ac.<span style="color: #660066;">form</span>.<span style="color: #660066;">before</span><span style="color: #009900;">&#40;</span>ac.<span style="color: #660066;">response</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">submit</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			jQuery.<span style="color: #660066;">ajax</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
				type<span style="color: #339933;">:</span> <span style="color: #3366CC;">'POST'</span><span style="color: #339933;">,</span>
				url<span style="color: #339933;">:</span> TPLDIR<span style="color: #339933;">+</span><span style="color: #3366CC;">'ajax/new-comment.php'</span><span style="color: #339933;">,</span>
				dataType<span style="color: #339933;">:</span> <span style="color: #3366CC;">'text'</span><span style="color: #339933;">,</span>
				data<span style="color: #339933;">:</span> ac.<span style="color: #660066;">form</span>.<span style="color: #660066;">serialize</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
				beforeSend<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
					ac.<span style="color: #660066;">response</span>.<span style="color: #660066;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">removeClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'error success'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'loading'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">slideDown</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'fast'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
				success<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>r<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
					<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span> r.<span style="color: #660066;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">!=</span><span style="color: #3366CC;">'{'</span> <span style="color: #009900;">&#41;</span>
						ac.<span style="color: #660066;">response</span>.<span style="color: #660066;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">removeClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'loading'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'error'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">text</span><span style="color: #009900;">&#40;</span>r<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					<span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
						ac.<span style="color: #660066;">form</span>.<span style="color: #660066;">find</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'textarea'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span>
						ac.<span style="color: #660066;">response</span>.<span style="color: #660066;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">removeClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'loading'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'success'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">text</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Dein Kommentar wurde erfolgreich eingetragen.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
						c <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">eval</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'('</span><span style="color: #339933;">+</span>r<span style="color: #339933;">+</span><span style="color: #3366CC;">')'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
						<span style="color: #003366; font-weight: bold;">var</span> comment_count <span style="color: #339933;">=</span> jQuery<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'ol.commentlist li'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">length</span><span style="color: #339933;">;</span>
						<span style="color: #003366; font-weight: bold;">var</span> comment_html <span style="color: #339933;">=</span> <span style="color: #3366CC;">'&lt;li id=&quot;comment-'</span><span style="color: #339933;">+</span>c.<span style="color: #660066;">comment_ID</span><span style="color: #339933;">+</span><span style="color: #3366CC;">'&quot; class=&quot;comment'</span><span style="color: #339933;">+</span><span style="color: #009900;">&#40;</span>c.<span style="color: #660066;">user_id</span><span style="color: #339933;">&gt;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">?</span><span style="color: #3366CC;">' user'</span><span style="color: #339933;">:</span><span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #009900;">&#40;</span>comment_count<span style="color: #339933;">==</span><span style="color: #CC0000;">0</span><span style="color: #339933;">?</span><span style="color: #3366CC;">' first'</span><span style="color: #339933;">:</span><span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #3366CC;">'&quot;&gt;'</span>
							<span style="color: #339933;">+</span><span style="color: #3366CC;">'&lt;div class=&quot;comment-count&quot;&gt;'</span><span style="color: #339933;">+</span><span style="color: #009900;">&#40;</span>parseInt<span style="color: #009900;">&#40;</span>comment_count<span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #3366CC;">'&lt;/div&gt;'</span>
							<span style="color: #339933;">+</span><span style="color: #3366CC;">'&lt;div class=&quot;comment-author&quot;&gt;'</span><span style="color: #339933;">+</span><span style="color: #009900;">&#40;</span>c.<span style="color: #660066;">comment_author_url</span><span style="color: #339933;">!=</span><span style="color: #3366CC;">''</span><span style="color: #339933;">?</span><span style="color: #3366CC;">'&lt;a href=&quot;'</span><span style="color: #339933;">+</span>c.<span style="color: #660066;">comment_author_url</span><span style="color: #339933;">+</span><span style="color: #3366CC;">'&quot;&gt;'</span><span style="color: #339933;">+</span>c.<span style="color: #660066;">comment_author</span><span style="color: #339933;">+</span><span style="color: #3366CC;">'&lt;/a&gt;'</span><span style="color: #339933;">:</span>c.<span style="color: #660066;">comment_author</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #3366CC;">'&lt;/div&gt;'</span>
							<span style="color: #339933;">+</span><span style="color: #3366CC;">'&lt;div class=&quot;comment-date&quot; title=&quot;'</span><span style="color: #339933;">+</span>c.<span style="color: #660066;">comment_date</span><span style="color: #339933;">+</span><span style="color: #3366CC;">'&quot;&gt;vor einer Sekunde'</span><span style="color: #339933;">+</span><span style="color: #009900;">&#40;</span>c.<span style="color: #660066;">comment_approved</span><span style="color: #339933;">==</span><span style="color: #CC0000;">0</span><span style="color: #339933;">?</span><span style="color: #3366CC;">' (noch nicht freigeschaltet)'</span><span style="color: #339933;">:</span><span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #3366CC;">'&lt;/div&gt;'</span>
							<span style="color: #339933;">+</span><span style="color: #3366CC;">'&lt;div class=&quot;entry&quot;&gt;'</span><span style="color: #339933;">+</span>c.<span style="color: #660066;">comment_content</span><span style="color: #339933;">+</span><span style="color: #3366CC;">'&lt;/div&gt;'</span>
							<span style="color: #339933;">+</span><span style="color: #3366CC;">'&lt;/li&gt;'</span><span style="color: #339933;">;</span>
						<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span> comment_count <span style="color: #339933;">==</span> <span style="color: #CC0000;">0</span> <span style="color: #009900;">&#41;</span>
							jQuery<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'&lt;div class=&quot;comments&quot;&gt;&lt;h3 class=&quot;post-title&quot;&gt;Bisher eine Reaktion&lt;/h3&gt;&lt;ol class=&quot;commentlist&quot;&gt;'</span><span style="color: #339933;">+</span>comment_html<span style="color: #339933;">+</span><span style="color: #3366CC;">'&lt;/ol&gt;&lt;/div&gt;'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">hide</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">insertBefore</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#respond'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">slideDown</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'medium'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
						<span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
							jQuery<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#comments h3'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">text</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Bisher '</span><span style="color: #339933;">+</span><span style="color: #009900;">&#40;</span>parseInt<span style="color: #009900;">&#40;</span>comment_count<span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #3366CC;">' Reaktionen'</span><span style="color: #009900;">&#41;</span>
							jQuery<span style="color: #009900;">&#40;</span>comment_html<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">hide</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">appendTo</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'ol.commentlist'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">slideDown</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'medium'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
						<span style="color: #009900;">&#125;</span>
					<span style="color: #009900;">&#125;</span>
					jQuery<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#submit'</span><span style="color: #009900;">&#41;</span>.<span style="color: #000066;">blur</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
				error<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>XMLHttpRequest<span style="color: #339933;">,</span> textStatus<span style="color: #339933;">,</span> errorThrown<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
					ac.<span style="color: #660066;">response</span>.<span style="color: #660066;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">removeClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'loading'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'error'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">text</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Fehler: Die AJAX-Anfrage ist fehlgeschlagen (&quot;</span><span style="color: #339933;">+</span>textStatus<span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;)&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					jQuery<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#submit'</span><span style="color: #009900;">&#41;</span>.<span style="color: #000066;">blur</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
			<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Damit alles noch akzeptabel aussieht, braucht es noch eine Loading-Animation, die ich mir bei <a href="http://www.ajaxload.info">Ajaxload.info</a> erstelle, und eine Priese CSS:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/*----- ajax comments -----*/</span>
&nbsp;
<span style="color: #cc00cc;">#response</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">3em</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#response</span><span style="color: #6666ff;">.loading</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">transparent</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">'images/loading.gif'</span><span style="color: #00AA00;">&#41;</span> <span style="color: #000000; font-weight: bold;">top</span> <span style="color: #000000; font-weight: bold;">left</span> <span style="color: #993333;">no-repeat</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#response</span><span style="color: #6666ff;">.success</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#222222</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#response</span><span style="color: #6666ff;">.error</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#aa1010</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<h4>Fertig.</h4>
<p>Die Kommentare werden nun per AJAX eingetragen, es werden Ladestatus, Fehler- bzw. Erfolgsmeldungen am Formular angezeigt und das neue Kommentar wird direkt in die Kommentarliste eingefügt. Verschachtelte Kommentare habe ich in diesem Skript nicht beachtet, da ich sie bisher nicht nutze. Da aber im JSON-Objekt des Kommentars auch die ID des Elternkommentars enthalten ist, dürfte es ein Leichtes sein, die entsprechende Stelle im DOM zu finden und es dort einzufügen.</p>
]]></content:encoded>
			<wfw:commentRss>http://simbo.de/blog/2009/12/ajax-kommentare/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>WP-Syntax Quelltexte mit Lightbox-Effekt</title>
		<link>http://simbo.de/blog/2009/12/wp-syntax-quelltexte-mit-lightbox-effekt/</link>
		<comments>http://simbo.de/blog/2009/12/wp-syntax-quelltexte-mit-lightbox-effekt/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 17:11:44 +0000</pubDate>
		<dc:creator>Simbo</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Theme Entwicklung]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://simbo.de/site/?p=217</guid>
		<description><![CDATA[Quelltexte brauchen Platz auf dem Bildschirm &#8211; sowohl in der vertikalen als auch in der horizontalen. Ihnen innerhalb einer Webseite angemessenen Platz zu verschaffen, würde so ziemlich jedem Seitentemplate wortwörtlich den Rahmen sprengen. Trotzdem wollen Quelltexte im Detail betrachtet werden ohne ständig in zwei Achsen scrollen zu müssen. Nach dem ich mich mit diesem Problem [...]]]></description>
			<content:encoded><![CDATA[<p>Quelltexte brauchen Platz auf dem Bildschirm &#8211; sowohl in der vertikalen als auch in der horizontalen. Ihnen innerhalb einer Webseite angemessenen Platz zu verschaffen, würde so ziemlich jedem Seitentemplate wortwörtlich den Rahmen sprengen. Trotzdem wollen Quelltexte im Detail betrachtet werden ohne ständig in zwei Achsen scrollen zu müssen. Nach dem ich mich mit diesem Problem nun fast den ganzen Tag beschäftigt habe, bin ich denke ich mittlerweile zu einer sehr gute Lösung gekommen.</p>
<p><span id="more-217"></span></p>
<p>Mit Hilfe von jQuery wird zu jedem von WP-Syntax erzeugten Quelltextfeld ein Link &#8220;Fenster vergrößern&#8221; eingefügt. Klickt man auf den Link, wird ähnlich wie bei Lightbox/Thickbox-Effekten eine abdunkelnde Ebene eingeblendet, die einen Klon des betreffenden Quelltextfeldes enthält. Dieser Klon passt sich je nach Browserfenstergröße an, um die zur Verfügung stehende Fläche großzügig auszunutzen. Um das Overlay wieder auszublenden kann man entweder die Tasten ESC oder Q drücken, auf &#8220;Fenster schließen&#8221; klicken oder einfach in den abgedunkelten Hintergrund. Eine Demonstration ist an jeder Quelltextbox hier auf der Seite zu sehen.</p>
<p>Die nötigen Anpassungen der Stylesheets in der Datei <code>styles.css</code>:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/*----- wp_syntax lightbox (wsl) -----*/</span>
&nbsp;
<span style="color: #cc00cc;">#wsl-wrap</span><span style="color: #00AA00;">,</span> <span style="color: #cc00cc;">#wsl-overlay</span><span style="color: #00AA00;">,</span> <span style="color: #cc00cc;">#wsl-box</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span><span style="color: #993333;">fixed</span> !important<span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span><span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">z-index</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">9999</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;"><span style="color: #cc66cc;">100</span>%</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;"><span style="color: #cc66cc;">100</span>%</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#wsl-overlay</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">background-color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#000000</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">cursor</span><span style="color: #00AA00;">:</span><span style="color: #993333;">pointer</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#wsl-box</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">text-align</span><span style="color: #00AA00;">:</span><span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #993333;">auto</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #993333;">auto</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#wsl-close</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#222222</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">text-align</span><span style="color: #00AA00;">:</span><span style="color: #993333;">center</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#bbbbbb</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">cursor</span><span style="color: #00AA00;">:</span><span style="color: #993333;">pointer</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #933;">2px</span> <span style="color: #cc66cc;">0</span> <span style="color: #933;">2px</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#wsl-close</span>.hover<span style="color: #00AA00;">,</span>
<span style="color: #cc00cc;">#wsl-close</span><span style="color: #3333ff;">:hover </span><span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#bb5500</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#wsl-box</span> <span style="color: #6666ff;">.wp_syntax</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#ffffff</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">max-height</span><span style="color: #00AA00;">:</span><span style="color: #993333;">none</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #993333;">auto</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #993333;">auto</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #6666ff;">.wsl-open</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#666666</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">cursor</span><span style="color: #00AA00;">:</span><span style="color: #993333;">pointer</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">float</span><span style="color: #00AA00;">:</span><span style="color: #000000; font-weight: bold;">right</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span><span style="color: #933;">10px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #6666ff;">.wsl-open</span>.hover<span style="color: #00AA00;">,</span>
<span style="color: #6666ff;">.wsl-open</span><span style="color: #3333ff;">:hover </span><span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#bb5500</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>Falls nicht sowieso schon geschehen, das Registrieren und Einreihen des Javascripts, abhängig von jQuery, in der Datei <code>functions.php</code>:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">wp_register_script<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'scripts'</span><span style="color: #339933;">,</span>TPLDIR<span style="color: #339933;">.</span><span style="color: #0000ff;">'scripts.js'</span><span style="color: #339933;">,</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'jquery'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
wp_enqueue_script<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'scripts'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Zu guter Letzt das Herzstück, der Javascript-Code, in der Datei <code>scripts.js</code>:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">jQuery<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">&#40;</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">// wp-syntax lightbox (wsl)</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!/</span>android<span style="color: #339933;">|</span>iphone<span style="color: #339933;">|</span>ipod<span style="color: #339933;">|</span>series60<span style="color: #339933;">|</span>symbian<span style="color: #339933;">|</span>windows ce<span style="color: #339933;">|</span>blackberry<span style="color: #339933;">/</span>i.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span>navigator.<span style="color: #660066;">userAgent</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> jQuery<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.wp_syntax'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">length</span><span style="color: #339933;">&gt;</span><span style="color: #CC0000;">0</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #003366; font-weight: bold;">var</span> wsl <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
			wrap	<span style="color: #339933;">:</span>	jQuery<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'&lt;div id=&quot;wsl-wrap&quot;&gt;&lt;/div&gt;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
			overlay	<span style="color: #339933;">:</span>	jQuery<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'&lt;div id=&quot;wsl-overlay&quot;&gt;&lt;/div&gt;'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'opacity'</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0.7</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
			box	<span style="color: #339933;">:</span>	jQuery<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'&lt;div id=&quot;wsl-box&quot;&gt;&lt;/div&gt;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
			<span style="color: #000066;">close</span>	<span style="color: #339933;">:</span>	jQuery<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'&lt;div id=&quot;wsl-close&quot;&gt;Fenster schlie&amp;szlig;en&lt;/div&gt;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
			<span style="color: #000066;">open</span>	<span style="color: #339933;">:</span>	jQuery<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'&lt;div class=&quot;wsl-open&quot;&gt;Fenster vergr&amp;ouml;&amp;szlig;ern&lt;/div&gt;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
			speed	<span style="color: #339933;">:</span>	<span style="color: #3366CC;">'fast'</span><span style="color: #339933;">,</span>
			fadeIn	<span style="color: #339933;">:</span>	<span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>wp_syntax<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
						wsl.<span style="color: #660066;">box</span>.<span style="color: #660066;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
							.<span style="color: #660066;">append</span><span style="color: #009900;">&#40;</span>wsl.<span style="color: #000066;">close</span>.<span style="color: #660066;">clone</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
							.<span style="color: #660066;">append</span><span style="color: #009900;">&#40;</span> wp_syntax <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
						wsl.<span style="color: #660066;">fit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
						wsl.<span style="color: #660066;">wrap</span>.<span style="color: #660066;">fadeIn</span><span style="color: #009900;">&#40;</span>wsl.<span style="color: #660066;">fade</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
						<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
					<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
			fadeOut	<span style="color: #339933;">:</span>	<span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
						wsl.<span style="color: #660066;">wrap</span>.<span style="color: #660066;">fadeOut</span><span style="color: #009900;">&#40;</span>wsl.<span style="color: #660066;">fade</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
						<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
					<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
			fit	<span style="color: #339933;">:</span>	<span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
						<span style="color: #003366; font-weight: bold;">var</span> ww <span style="color: #339933;">=</span> jQuery<span style="color: #009900;">&#40;</span>window<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">width</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
							wh <span style="color: #339933;">=</span> jQuery<span style="color: #009900;">&#40;</span>window<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">height</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
							mw <span style="color: #339933;">=</span> Math.<span style="color: #660066;">floor</span><span style="color: #009900;">&#40;</span>ww<span style="color: #339933;">*</span><span style="color: #CC0000;">0.94</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
							mh <span style="color: #339933;">=</span> Math.<span style="color: #660066;">floor</span><span style="color: #009900;">&#40;</span>wh<span style="color: #339933;">*</span><span style="color: #CC0000;">0.94</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span><span style="color: #CC0000;">20</span><span style="color: #339933;">;</span>
						wsl.<span style="color: #660066;">box</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
							width<span style="color: #339933;">:</span> mw<span style="color: #339933;">+</span><span style="color: #3366CC;">'px'</span><span style="color: #339933;">,</span>
							left<span style="color: #339933;">:</span> Math.<span style="color: #660066;">floor</span><span style="color: #009900;">&#40;</span>ww<span style="color: #339933;">*</span><span style="color: #CC0000;">0.03</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #3366CC;">'px'</span><span style="color: #339933;">,</span>
							top<span style="color: #339933;">:</span> Math.<span style="color: #660066;">floor</span><span style="color: #009900;">&#40;</span>wh<span style="color: #339933;">*</span><span style="color: #CC0000;">0.03</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #3366CC;">'px'</span>
						<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">find</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.wp_syntax'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
							maxWidth<span style="color: #339933;">:</span> mw<span style="color: #339933;">+</span><span style="color: #3366CC;">'px'</span><span style="color: #339933;">,</span>
							maxHeight<span style="color: #339933;">:</span> mh<span style="color: #339933;">+</span><span style="color: #3366CC;">'px'</span>
						<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
		jQuery.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#91;</span> wsl.<span style="color: #000066;">close</span><span style="color: #339933;">,</span> wsl.<span style="color: #660066;">overlay</span> <span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #003366; font-weight: bold;">var</span> el <span style="color: #339933;">=</span> jQuery<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			el.<span style="color: #660066;">click</span><span style="color: #009900;">&#40;</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <span style="color: #000066; font-weight: bold;">return</span> wsl.<span style="color: #660066;">fadeOut</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#41;</span>
				.<span style="color: #660066;">hover</span><span style="color: #009900;">&#40;</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>el.<span style="color: #660066;">addClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'hover'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>el.<span style="color: #660066;">removeClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'hover'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		jQuery<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'body'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">append</span><span style="color: #009900;">&#40;</span> wsl.<span style="color: #660066;">wrap</span>.<span style="color: #660066;">append</span><span style="color: #009900;">&#40;</span>wsl.<span style="color: #660066;">overlay</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">append</span><span style="color: #009900;">&#40;</span>wsl.<span style="color: #660066;">box</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">hide</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		jQuery<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.wp_syntax'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #003366; font-weight: bold;">var</span> wp_syntax <span style="color: #339933;">=</span> jQuery<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			wp_syntax.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'margin-top'</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">before</span><span style="color: #009900;">&#40;</span> wsl.<span style="color: #000066;">open</span>.<span style="color: #660066;">clone</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">click</span><span style="color: #009900;">&#40;</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <span style="color: #000066; font-weight: bold;">return</span> wsl.<span style="color: #660066;">fadeIn</span><span style="color: #009900;">&#40;</span>wp_syntax.<span style="color: #660066;">clone</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		jQuery<span style="color: #009900;">&#40;</span>window<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">resize</span><span style="color: #009900;">&#40;</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			wsl.<span style="color: #660066;">fit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">keydown</span><span style="color: #009900;">&#40;</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>ev<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000066; font-weight: bold;">switch</span><span style="color: #009900;">&#40;</span>ev.<span style="color: #660066;">keyCode</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000066; font-weight: bold;">case</span> <span style="color: #CC0000;">27</span><span style="color: #339933;">:</span> <span style="color: #006600; font-style: italic;">// [Esc]</span>
				<span style="color: #000066; font-weight: bold;">case</span> <span style="color: #CC0000;">81</span><span style="color: #339933;">:</span> <span style="color: #006600; font-style: italic;">// [Q]</span>
					wsl.<span style="color: #660066;">fadeOut</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #000066; font-weight: bold;">break</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://simbo.de/blog/2009/12/wp-syntax-quelltexte-mit-lightbox-effekt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WP-Syntax und fehlerhaftes Escaping?</title>
		<link>http://simbo.de/blog/2009/12/wp-syntax-und-fehlerhaftes-escaping/</link>
		<comments>http://simbo.de/blog/2009/12/wp-syntax-und-fehlerhaftes-escaping/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 18:51:57 +0000</pubDate>
		<dc:creator>Simbo</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Konfiguration]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://simbo.de/site/?p=91</guid>
		<description><![CDATA[Der Wordpress Plugin WP-Syntax leistet bei mir hervorragende Arbeit bei der Einbindung von Quelltexten aller Art in meine Artikel. Leider wurden bisher des öfteren Zeichen wie &#60;, &#62; und &#38; innerhalb der Quelltexte im Content als die jeweiligen HTML-Sonderzeichencodes &#38;lt;, &#38;gt; und &#38;amp; angezeigt. Zuerst hatte ich fälschlicherweise den Verdacht, es liegt an den Content-Filtern [...]]]></description>
			<content:encoded><![CDATA[<p>Der Wordpress Plugin <a href="http://wordpress.org/extend/plugins/wp-syntax/">WP-Syntax</a> leistet bei mir hervorragende Arbeit bei der Einbindung von Quelltexten aller Art in meine Artikel. Leider wurden bisher des öfteren Zeichen wie <code>&lt;</code>, <code>&gt;</code> und <code>&amp;</code> innerhalb der Quelltexte im Content als die jeweiligen HTML-Sonderzeichencodes <code>&amp;lt;</code>, <code>&amp;gt;</code> und <code>&amp;amp;</code> angezeigt. Zuerst hatte ich fälschlicherweise den Verdacht, es liegt an den Content-Filtern des Plugins selbst, da dieses Thema auch auf anderen Seiten (z.B. <a href="http://blog.felho.hu/escaping-problem-with-wp-syntax-wordpress-plugin.html">hier</a> und <a href="http://blog.m-ri.de/index.php/2008/03/30/wie-man-wp-syntax-noch-etwas-tunen-kann/">hier</a>) bereits diskutiert wird.</p>
<p><span id="more-91"></span></p>
<p>Aber wie sich herausstellte, lag es nicht an WP-Syntax, sondern an der aktivierten Option &#8220;falsch verschachteltes XHTML automatisch korrigieren&#8221; unter &#8220;Einstellungen / Schreiben&#8221; in der Wordpress Konfiguration. Die ersetzte nicht nur fälschlicherweise die Sonderzeichen zweifach, wodurch am Ende die Zeichencodes im Artikel angezeigt werden, sondern fügte sogar oftmals ein zweites <code>&lt;/pre&gt;</code> hinter dem Quelltext ein und sorgte somit dafür, dass das XHTML erst recht falsch verschachtelt wurde.</p>
<p>Option deaktivert. Ein Problem weniger.</p>
]]></content:encoded>
			<wfw:commentRss>http://simbo.de/blog/2009/12/wp-syntax-und-fehlerhaftes-escaping/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nützliche Konstanten für Wordpress Templates und Plugins</title>
		<link>http://simbo.de/blog/2009/12/nutzliche-konstanten-fur-wordpress-templates-und-plugins/</link>
		<comments>http://simbo.de/blog/2009/12/nutzliche-konstanten-fur-wordpress-templates-und-plugins/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 17:20:52 +0000</pubDate>
		<dc:creator>Simbo</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin Entwicklung]]></category>
		<category><![CDATA[Theme Entwicklung]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://simbo.de/site/?p=160</guid>
		<description><![CDATA[Für wiederholt in Templatedateien und Pluginscripts verwendete Variablen und Funktionen mit konstanten Rückgabewerten lohnt es sich, in der functions.php Konstanten anzulegen und diese stattdessen zu verwenden. Das spart nicht nur Tipparbeit sondern verbessert auch die Performance.

Ich verwende meist folgenden Code-Block als Vorlage:

1
2
3
4
5
6
7
8
define&#40;'HOME', get_option&#40;'home'&#41;.'/' &#41;;
define&#40;'NAME', get_bloginfo&#40;'name'&#41; &#41;;
define&#40;'TPLPATH', ABSPATH.'wp-content/themes/'.get_option&#40;'template'&#41;.'/' &#41;;
define&#40;'TPLDIR', get_bloginfo&#40;'template_directory'&#41;.'/' &#41;;
define&#40;'IMGDIR', TPLDIR.'images/' &#41;;
define&#40;'UPLOADDIR', get_option&#40;'upload_url_path'&#41;.'/' &#41;;
define&#40;'TAGURL', HOME.get_option&#40;'tag_base'&#41;.'/' [...]]]></description>
			<content:encoded><![CDATA[<p>Für wiederholt in Templatedateien und Pluginscripts verwendete Variablen und Funktionen mit konstanten Rückgabewerten lohnt es sich, in der <code>functions.php</code> Konstanten anzulegen und diese stattdessen zu verwenden. Das spart nicht nur Tipparbeit sondern verbessert auch die Performance.</p>
<p><span id="more-160"></span></p>
<p>Ich verwende meist folgenden Code-Block als Vorlage:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'HOME'</span><span style="color: #339933;">,</span> get_option<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'home'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'/'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'NAME'</span><span style="color: #339933;">,</span> get_bloginfo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'TPLPATH'</span><span style="color: #339933;">,</span> ABSPATH<span style="color: #339933;">.</span><span style="color: #0000ff;">'wp-content/themes/'</span><span style="color: #339933;">.</span>get_option<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'template'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'/'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'TPLDIR'</span><span style="color: #339933;">,</span> get_bloginfo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'template_directory'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'/'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'IMGDIR'</span><span style="color: #339933;">,</span> TPLDIR<span style="color: #339933;">.</span><span style="color: #0000ff;">'images/'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'UPLOADDIR'</span><span style="color: #339933;">,</span> get_option<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'upload_url_path'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'/'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'TAGURL'</span><span style="color: #339933;">,</span> HOME<span style="color: #339933;">.</span>get_option<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'tag_base'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'/'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'CATURL'</span><span style="color: #339933;">,</span> HOME<span style="color: #339933;">.</span>get_option<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'category_base'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'/'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://simbo.de/blog/2009/12/nutzliche-konstanten-fur-wordpress-templates-und-plugins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wordpress Passwort-Formular anpassen</title>
		<link>http://simbo.de/blog/2009/12/wordpress-passwort-formular-anpassen/</link>
		<comments>http://simbo.de/blog/2009/12/wordpress-passwort-formular-anpassen/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 09:30:37 +0000</pubDate>
		<dc:creator>Simbo</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Theme Entwicklung]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://simbo.de/blog/2009/11/3/</guid>
		<description><![CDATA[Wird ein Artikel oder eine Seite in Wordpress mit einem Passwort versehen, erscheint anstelle des Contents ein Hinweis mitsamt Eingabeformular. Leider lässt sich dieses Formular mitsamt Text nicht über ein Template verändern. Veranwortlich für den besagten HTML-Code ist die Funktion the_password_form() bzw. get_the_password_form() in wp-includes/post-template.php.

Den Output direkt in der Funktion anzupassen ist zwar auch möglich, [...]]]></description>
			<content:encoded><![CDATA[<p>Wird ein Artikel oder eine Seite in Wordpress mit einem Passwort versehen, erscheint anstelle des Contents ein Hinweis mitsamt Eingabeformular. Leider lässt sich dieses Formular mitsamt Text nicht über ein Template verändern. Veranwortlich für den besagten HTML-Code ist die Funktion <code>the_password_form()</code> bzw. <code>get_the_password_form()</code> in <code>wp-includes/post-template.php</code>.</p>
<p><span id="more-383"></span></p>
<p>Den Output direkt in der Funktion anzupassen ist zwar auch möglich, sollte man aber vermeiden, da diese Änderung beim nächsten Wordpress-Update wieder überschrieben wird. Stattdessen wird einfach ein Filter für <code>the_password_form()</code> in der <code>functions.php</code> angelegt, die sich im jeweiligen Template-Ordner befindet. Solltest du die Datei in deinem Template-Ordner nicht vorfinden, kannst du sie einfach erstellen.</p>
<p>In die <code>functions.php</code> wird folgendes eingetragen:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> change_password_form<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$output</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'&lt;form action=&quot;'</span><span style="color: #339933;">.</span>get_option<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'siteurl'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'/wp-pass.php&quot; method=&quot;post&quot;&gt;&lt;fieldset&gt;'</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
		<span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;p&gt;'</span><span style="color: #339933;">.</span>__<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;This post is password protected. To view it please enter your password below:&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;/p&gt;'</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
		<span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;p&gt;'</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
		<span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;label for=&quot;post_password&quot;&gt;Passwort:&lt;/label&gt;'</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
		<span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;input name=&quot;post_password&quot; class=&quot;input&quot; type=&quot;password&quot; size=&quot;20&quot; /&gt;'</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
		<span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;input type=&quot;submit&quot; name=&quot;Submit&quot; class=&quot;button&quot; value=&quot;'</span><span style="color: #339933;">.</span>__<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Submit&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&quot; /&gt;'</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
		<span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;/p&gt;'</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
		<span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;/fieldset&gt;&lt;/form&gt;'</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$output</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
add_filter<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;the_password_form&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;change_password_form&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://simbo.de/blog/2009/12/wordpress-passwort-formular-anpassen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

