<?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>AB-WebLog.com&#187; blog</title>
	<atom:link href="http://www.ab-weblog.com/en/tag/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ab-weblog.com/en</link>
	<description>Andreas Breitschopp</description>
	<lastBuildDate>Wed, 18 Mar 2015 09:47:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>WordPress Multisite: Redirect Users Based on Their Browser Language</title>
		<link>http://www.ab-weblog.com/en/wordpress-multisite-redirect-users-based-on-their-browser-language/</link>
		<comments>http://www.ab-weblog.com/en/wordpress-multisite-redirect-users-based-on-their-browser-language/#comments</comments>
		<pubDate>Fri, 22 Jun 2012 16:44:12 +0000</pubDate>
		<dc:creator>Andreas Breitschopp</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[multilingual]]></category>
		<category><![CDATA[multisite]]></category>
		<category><![CDATA[plug-in]]></category>

		<guid isPermaLink="false">http://www.ab-weblog.com/en/?p=502</guid>
		<description><![CDATA[Since I wrote the post about using the Multisite Language Switcher I got many questions asking how I &#8220;disabled&#8221; the main site &#8220;/&#8221; in my WordPress Multisite configuration. The answer is simple: I did not disable it, but just created an &#8230; <a href="http://www.ab-weblog.com/en/wordpress-multisite-redirect-users-based-on-their-browser-language/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Since I wrote the post about using the <a title="The Solution for Multilingual Blogs in WordPress" href="http://www.ab-weblog.com/en/the-solution-for-multilingual-blogs-in-wordpress/">Multisite Language Switcher</a> I got many questions asking how I &#8220;disabled&#8221; the main site &#8220;/&#8221; in my WordPress Multisite configuration.</p>
<p>The answer is simple: I did not disable it, but just created an own, small redirect theme to make sure every user accessing the main site &#8220;/&#8221; is redirected to the correct language URL &#8211; in my case either &#8220;/en/&#8221; or &#8220;/de/&#8221;.</p>
<p>The following source code isn&#8217;t completely from me. I remember that I just searched the web for a good solution and changed it as I needed it, but that&#8217;s a longer time ago. Therefore no idea where parts or this code are from originally.</p>
<p>Anyway, here is the source code of the file <em>index.php</em> of my redirect theme just as I use it on this WordPress site right now:</p>
<pre class="brush: php; gutter: true">&lt;?php
/**
 * The main template file.
 *
 * This is the most generic template file in a WordPress theme
 * and one of the two required files for a theme (the other being style.css).
 * It is used to display a page when nothing more specific matches a query.
 * E.g., it puts together the home page when no home.php file exists.
 * Learn more: http://codex.wordpress.org/Template_Hierarchy
 *
 * @package WordPress
 * @subpackage Redirect
 */

/**
 * Detect browser language.
 *
 * @param array $allowed_languages An array of languages that are available on the site.
 * @param string $default_language Default language to use if none could be detected.
 * @param string $lang_variable Custom user language support. If not specified $_SERVER[&#039;HTTP_ACCEPT_LANGUAGE&#039;] is used.
 * @param string $strict_mode If true (default) the whole language code (&quot;en-us&quot;) is used and not only the left part (&quot;en&quot;).
 * @return string The detected browser language.
 */
function get_lang_from_browser($allowed_languages, $default_language, $lang_variable = NULL, $strict_mode = TRUE) {
    // Use $_SERVER[&#039;HTTP_ACCEPT_LANGUAGE&#039;] if no language variable is available
    if (NULL === $lang_variable)
        $lang_variable = $_SERVER[&#039;HTTP_ACCEPT_LANGUAGE&#039;];

    // Any info sent?
    if (empty($lang_variable))
        return $default_language;

    // Split the header
    $accepted_languages = preg_split(&#039;/,\s*/&#039;, $lang_variable);

    // Set default values
    $current_lang = $default_language;
    $current_q    = 0;
    // Now work through all included languages
    foreach ($accepted_languages as $accepted_language) {
        // Get all info about this language
        $res = preg_match(
            &#039;/^([a-z]{1,8}(?:-[a-z]{1,8})*)&#039;.
            &#039;(?:;\s*q=(0(?:\.[0-9]{1,3})?|1(?:\.0{1,3})?))?$/i&#039;,
            $accepted_language,
            $matches
        );

        if (!$res)
            continue;

        // Get language code and split into parts immediately
        $lang_code = explode(&#039;-&#039;, $matches[1]);

        // Is there a quality set?
        if (isset($matches[2]))
            $lang_quality = (float)$matches[2];
        else
            $lang_quality = 1.0;

        // Until the language code is empty...
        while (count($lang_code)) {
            // Check if the language code is available
            if (in_array(strtolower(join(&#039;-&#039;, $lang_code)), $allowed_languages)) {
                // Check quality
                if ($lang_quality &gt; $current_q) {
                    $current_lang = strtolower(join(&#039;-&#039;, $lang_code));
                    $current_q = $lang_quality;
                    break;
                }
            }
            // If we&#039;re in strict mode we won&#039;t try to minimalize the language
            if ($strict_mode)
                break;

            // Cut the most right part of the language code
            array_pop($lang_code);
        }
    }

    return $current_lang;
}

$allowed_langs = array(&#039;en&#039;, &#039;de&#039;);
$lang = get_lang_from_browser($allowed_langs, &#039;en&#039;, NULL, FALSE);
header(&#039;Location: http://&#039; . $_SERVER[&#039;HTTP_HOST&#039;] . &quot;/$lang/&quot;);

exit();
?&gt;</pre>
<p>So just create a new theme folder and copy the PHP code above (change the allowed languages if needed, of course) into a file named <em>index.php</em>.</p>
<p>Then you just need to create an additional dummy file <em>style.css</em> with some info about the theme. Otherwise WordPress won&#8217;t recognize your theme:</p>
<pre class="brush: css; gutter: true">/*
Theme Name: Redirect
Theme URI: http://wordpress.org/extend/themes/redirect
Author: AB-WebLog.com
Author URI: http://www.ab-weblog.com
Description: Redirects
Version: 1.0
Tags: redirect
*/</pre>
<p>That&#8217;s it: after you have seleted this new theme for your main site &#8220;/&#8221;, every user will automatically be redirected to the correct language version based on the browser language settings.</p>
<p><em>Do you use the Multisite Language Switcher or your blog, too?</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ab-weblog.com/en/wordpress-multisite-redirect-users-based-on-their-browser-language/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Create New Posts With Publishing Date in WordPress Using XML-RPC and PHP</title>
		<link>http://www.ab-weblog.com/en/create-new-posts-with-publishing-date-in-wordpress-using-xml-rpc-and-php/</link>
		<comments>http://www.ab-weblog.com/en/create-new-posts-with-publishing-date-in-wordpress-using-xml-rpc-and-php/#comments</comments>
		<pubDate>Sun, 04 Sep 2011 17:51:00 +0000</pubDate>
		<dc:creator>Andreas Breitschopp</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[date]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[ISO 8601]]></category>
		<category><![CDATA[XML-RPC]]></category>

		<guid isPermaLink="false">http://www.ab-weblog.com/en/?p=215</guid>
		<description><![CDATA[To be able to add new posts to a WordPress blog I wanted to use XML-RPC interface with PHP. First of all you need to enable the checkbox &#8220;Enable the WordPress, Movable Type, MetaWeblog and Blogger XML-RPC publishing protocols.&#8221; in &#8230; <a href="http://www.ab-weblog.com/en/create-new-posts-with-publishing-date-in-wordpress-using-xml-rpc-and-php/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>To be able to add new posts to a WordPress blog I wanted to use XML-RPC interface with PHP.</p>
<p>First of all you need to enable the checkbox &#8220;Enable the WordPress, Movable Type, MetaWeblog and Blogger XML-RPC publishing protocols.&#8221; in the menu &#8220;Settings&#8221;/&#8221;Writing&#8221;.</p>
<p>Now I searched on the web for a ready-to-use solution as I was probably not the first one who wanted to accomplish that. And as expected there were also many PHP scripts doing exactly that, but with one problem:<br />
I wanted to set also the publishing date manually with the PHP request and most scripts I&#8217;ve found did not even try to do that at all.</p>
<p>Few scripts in fact did try to set the publishing date, but the result was an error message similar to:<br />
<strong>Fatal error</strong>: Call to a member function getIso() on a non-object in <strong>/var/www/wp-includes/class-wp-xmlrpc-server.php</strong> on line <strong>2373</strong></p>
<p>After reading some documents regarding this strange ISO 8601 date format that is needed there, I found a solution myself:</p>
<pre class="brush: php; gutter: true">/**
 * Performs a XML-RPC to a WordPress blog and adds a new post.
 *
 * @param string $title Title of the new post.
 * @param string $body Body text of the new post.
 * @param string $rpcurl RPC-URL of the blog (normally xmlrpc.php in the root directory).
 * @param string $username User name used to add the new post.
 * @param string $password Password used to add the new post.
 * @param string $categories Comma separated list of categories (make sure they already exist in your blog).
 * @param string $keywords Comma separated list of keywords/tags (in contrast to the categories they don't need to exist already).
 * @param string $pubdate Publishing date in ISO 8601 (with date('c') in PHP; current time is used if empty).
 * @param string $draftonly True to save as draft only, False to publish directly (default).
 * @return string The result of the XML-RPC.
 */
function wpPostXMLRPC($title, $body, $rpcurl, $username, $password, $categories, $keywords = '', $pubdate = '', $draftonly = false) {
	$content = array(
		'title' =&gt; $title,
		'description' =&gt; $body,
		'mt_allow_comments' =&gt; 1,
		'mt_allow_pings' =&gt; 1,
		'post_type' =&gt; 'post',
		'date_created_gmt' =&gt; '%pubdate%', // Just as place holder here.
		'mt_keywords' =&gt; $keywords,
		'categories' =&gt; array($categories)
	);
	$params = array(0, $username, $password, $content, !$draftonly);

	$request = xmlrpc_encode_request('metaWeblog.newPost', $params);
	// Now we need to set the real publishing date:
	$request = str_replace('&lt;string&gt;%pubdate%&lt;/string&gt;',
			       '&lt;dateTime.iso8601&gt;' . $pubdate . '&lt;/dateTime.iso8601&gt;',
			       $request);

	$ch = curl_init();
	curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
	curl_setopt($ch, CURLOPT_URL, $rpcurl);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_TIMEOUT, 1);
	$results = curl_exec($ch);
	curl_close($ch);
	return $results;
}</pre>
<p>As you can see I inserted the data structure needed for the correct ISO 8601 date format myself directly into the XML request. This is probably not the most elegant way, but it works perfectly. <img src='http://www.ab-weblog.com/en/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><em>Did you come across the same issue already yourself?</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ab-weblog.com/en/create-new-posts-with-publishing-date-in-wordpress-using-xml-rpc-and-php/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>The Solution for Multilingual Blogs in WordPress</title>
		<link>http://www.ab-weblog.com/en/the-solution-for-multilingual-blogs-in-wordpress/</link>
		<comments>http://www.ab-weblog.com/en/the-solution-for-multilingual-blogs-in-wordpress/#comments</comments>
		<pubDate>Fri, 02 Sep 2011 15:40:02 +0000</pubDate>
		<dc:creator>Andreas Breitschopp</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[multilingual]]></category>
		<category><![CDATA[multisite]]></category>
		<category><![CDATA[plug-in]]></category>

		<guid isPermaLink="false">http://www.ab-weblog.com/en/?p=209</guid>
		<description><![CDATA[After I&#8217;ve tested several options for multilingual blogs in WordPress (see this post), Dennis Ploetner called my attention to his not just yet very famous, but excellent plug-in in a comment. The Multisite Language Switcher allows you to simply use a &#8230; <a href="http://www.ab-weblog.com/en/the-solution-for-multilingual-blogs-in-wordpress/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>After I&#8217;ve tested several options for multilingual blogs in WordPress (<a title="Multilingual Blog in WordPress: qTranslate, WPML or Multisite Feature" href="http://www.ab-weblog.com/en/multilingual-blog-in-wordpress-qtranslate-wpml-or-multisite-feature/">see this post</a>), Dennis Ploetner called my attention to his not just yet very famous, but excellent plug-in in a comment.</p>
<p>The <a title="Plug-In Page of the Multisite Language Switcher" href="http://wordpress.org/extend/plugins/multisite-language-switcher/" target="_blank">Multisite Language Switcher</a> allows you to simply use a multisite WordPress configuration with one WordPress administration for every blog language and still have a relation between the language versions of your posts, categories and tags.</p>
<p>That&#8217;s really great, because this way you don&#8217;t have the problem with all these translation plug-ins that you always have to make sure that every additional plug-in you use (like a special SEO plug-in) also supports the used translation plug-in. Otherwise you cannot add let&#8217;s say a translation for your page title or description which is important for SEO reasons.</p>
<p>But not with this plug-in: as it depends only on the default and official functionality of a WordPress multisite configuration, you can use whatever plug-in that supports the WordPress multisite functionality.</p>
<p>You may say it is unfunctional that you need to login to another WordPress admin area to change a translation. But with the <a title="Multisite Language Switcher Version 0.7" href="http://lloc.de/et-voila-multisite-language-switcher-0-7.html" target="_blank">current version of this plug-in</a> each translation is linked in the admin area directly (just click on the language flag). This way it is very easy to switch between different translations in the edit mode.</p>
<p>You can see this plug-in in action here, of course:<br />
it can add a link below every post to its translations. Additionally the flags displayed on the blog pages link directly to the translations of the current page, too.</p>
<p>As a summary I can only recommend to try this plug-in if you are searching for a solution to build a multilingual blog in WordPress.</p>
<p><em>Do you know other good solutions for multilingual blogs in WordPress?</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ab-weblog.com/en/the-solution-for-multilingual-blogs-in-wordpress/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>German Translation for MailPress Plug-In</title>
		<link>http://www.ab-weblog.com/en/german-translation-for-mailpress-plug-in/</link>
		<comments>http://www.ab-weblog.com/en/german-translation-for-mailpress-plug-in/#comments</comments>
		<pubDate>Fri, 05 Aug 2011 18:30:41 +0000</pubDate>
		<dc:creator>Andreas Breitschopp</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[MailPress]]></category>
		<category><![CDATA[plug-in]]></category>
		<category><![CDATA[translation]]></category>

		<guid isPermaLink="false">http://www.ab-weblog.com/en/?p=93</guid>
		<description><![CDATA[As I am using the MailPress plug-in to support blog and comment subscriptions, I needed a German translation for it. Unfortunately the only available German translation for this plug-in was completely outdated. Therefore I decided to create one on my own. &#8230; <a href="http://www.ab-weblog.com/en/german-translation-for-mailpress-plug-in/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>As I am using the <a title="WordPress MailPress Plug-In" href="http://www.mailpress.org/wiki/index.php?title=Main_Page" target="_blank">MailPress plug-in</a> to support blog and comment subscriptions, I needed a German translation for it. Unfortunately the only available German translation for this plug-in was completely outdated. Therefore I decided to create one on my own.</p>
<p>Download the German translation file:</p>
<ul>
<li><a title="German Translation for MailPress 5.3.0" href="http://www.ab-weblog.com/en/files/MailPress-5.3.0-de_DE.zip">MailPress-5.3.0-de_DE.zip</a></li>
<li><a title="German Translation for MailPress 5.2.1" href="http://www.ab-weblog.com/en/files/MailPress-5.2.1-de_DE.zip">MailPress-5.2.1-de_DE.zip</a></li>
<li><a title="German Translation for MailPress 5.1.1" href="http://www.ab-weblog.com/en/files/MailPress-5.1.1-de_DE.zip">MailPress-5.1.1-de_DE.zip</a></li>
<li><a title="German Translation for MailPress 5.1" href="http://www.ab-weblog.com/en/files/MailPress-5.1-de_DE.zip">MailPress-5.1-de_DE.zip</a></li>
</ul>
<p>Just unzip the translation files into the folder <em>/mailpress/mp-content/languages/</em>.</p>
<p>If you find mistakes, please post below!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ab-weblog.com/en/german-translation-for-mailpress-plug-in/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Widget for Displaying Language Selection Flags in Menu and Footer</title>
		<link>http://www.ab-weblog.com/en/widget-for-displaying-language-selection-flags-in-menu-and-footer/</link>
		<comments>http://www.ab-weblog.com/en/widget-for-displaying-language-selection-flags-in-menu-and-footer/#comments</comments>
		<pubDate>Wed, 03 Aug 2011 18:37:27 +0000</pubDate>
		<dc:creator>Andreas Breitschopp</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[multilingual]]></category>
		<category><![CDATA[multisite]]></category>
		<category><![CDATA[plug-in]]></category>
		<category><![CDATA[widget]]></category>

		<guid isPermaLink="false">http://www.ab-weblog.com/en/?p=32</guid>
		<description><![CDATA[After I decided to use the WordPress Multisite feature for my multilingual blog (see this post), I wanted to display language selection flags inside the menu and in the footer. It turned out that especially the integration of images on &#8230; <a href="http://www.ab-weblog.com/en/widget-for-displaying-language-selection-flags-in-menu-and-footer/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>After I decided to use the WordPress Multisite feature for my multilingual blog (<a title="Multilingual Blog in WordPress: qTranslate, WPML or Multisite Feature" href="http://www.ab-weblog.com/en/multilingual-blog-in-wordpress-qtranslate-wpml-or-multisite-feature/">see this post</a>), I wanted to display language selection flags inside the menu and in the footer.</p>
<p>It turned out that especially the integration of images on the right side of the (by default black) menu area was not very easy in the &#8220;Twenty Eleven&#8221; theme. Therefore I decided to just create a simple widget that displays the flags in a DIV which is placed above all other content and this way can easily be positioned with relative coordinates directly from within the admin widget interface.</p>
<p>Therefore you can define these settings in the admin area:</p>
<p><a href="http://www.ab-weblog.com/en/files/flags_widget_admin.png"><img class="aligncenter size-full wp-image-33" title="Flags Widget (Admin Interface)" src="http://www.ab-weblog.com/en/files/flags_widget_admin.png" alt="Flags Widget (Admin Interface)" width="262" height="252" /></a></p>
<ul>
<li>Flag position offset (left): the relative offset of the X coordinate of the DIV.</li>
<li>Flag position offset (top): the relative offset of the Y coordinate of the DIV.</li>
<li>Flag icon URL (en): the flag icon URL for the English flag (first uploaded, of course).</li>
<li>Flag icon URL (de): the flag icon URL for the German flag (first uploaded, of course).</li>
</ul>
<p>Obviously this can be easily extended with more or other languages if needed.</p>
<p>And here is the widget source code:</p>
<pre class="brush: php; gutter: true">&lt;?php
/**
 * Flags_Widget Class
 */
class Flags_Widget extends WP_Widget {
	/** constructor */
	function Flags_Widget() {
		parent::WP_Widget(false, $name = 'Flags_Widget');
	}

	/** @see WP_Widget::widget */
	function widget($args, $instance) {
		extract($args);
		?&gt;
			&lt;div style="position: relative;"&gt;
				&lt;div style="left: &lt;?php echo $instance['flags_position_left']; ?&gt;px; top: &lt;?php echo $instance['flags_position_top']; ?&gt;px; position: absolute; z-index: 10000 !important;"&gt;
					&lt;?php echo '&lt;a href="/en/"&gt;&lt;img src="' . $instance['flag_en'] . '" width="20" height="16" title="English" alt="English" /&gt;'; ?&gt;&lt;/a&gt;  
					&lt;?php echo '&lt;a href="/de/"&gt;&lt;img src="' . $instance['flag_de'] . '" width="20" height="16" title="Deutsch" alt="Deutsch" /&gt;&lt;/a&gt;'; ?&gt;
				&lt;/div&gt;
			&lt;/div&gt;
		&lt;?php
	}

	/** @see WP_Widget::update */
	function update($new_instance, $old_instance) {
		$instance = $old_instance;
		$instance['flags_position_left'] = strip_tags($new_instance['flags_position_left']);
		if (!is_numeric($instance['flags_position_left'])) $instance['flags_position_left'] = '0';
		$instance['flags_position_top'] = strip_tags($new_instance['flags_position_top']);
		if (!is_numeric($instance['flags_position_top'])) $instance['flags_position_top'] = '0';
		$instance['flag_en'] = strip_tags($new_instance['flag_en']);
		$instance['flag_de'] = strip_tags($new_instance['flag_de']);
		return $instance;
	}

	/** @see WP_Widget::form */
	function form($instance) {
		$flags_position_left = esc_attr($instance['flags_position_left']);
		if ($flags_position_left == '') $flags_position_left = '0';
		$flags_position_top = esc_attr($instance['flags_position_top']);
		if ($flags_position_top == '') $flags_position_top = '0';
		$flag_en = esc_attr($instance['flag_en']);
		$flag_de = esc_attr($instance['flag_de']);
		?&gt;
			&lt;p&gt;
				&lt;label for="&lt;?php echo $this-&gt;get_field_id('flags_position_left'); ?&gt;"&gt;&lt;?php _e('Flag position offset (left):'); ?&gt;&lt;/label&gt;
				&lt;input class="widefat" id="&lt;?php echo $this-&gt;get_field_id('flags_position_left'); ?&gt;"
					name="&lt;?php echo $this-&gt;get_field_name('flags_position_left'); ?&gt;" type="text" value="&lt;?php echo $flags_position_left; ?&gt;" /&gt;
				&lt;label for="&lt;?php echo $this-&gt;get_field_id('flags_position_top'); ?&gt;"&gt;&lt;?php _e('Flag position offset (top):'); ?&gt;&lt;/label&gt;
				&lt;input class="widefat" id="&lt;?php echo $this-&gt;get_field_id('flags_position_top'); ?&gt;"
					name="&lt;?php echo $this-&gt;get_field_name('flags_position_top'); ?&gt;" type="text" value="&lt;?php echo $flags_position_top; ?&gt;" /&gt;
				&lt;label for="&lt;?php echo $this-&gt;get_field_id('flag_en'); ?&gt;"&gt;&lt;?php _e('Flag icon URL (en):'); ?&gt;&lt;/label&gt;
				&lt;input class="widefat" id="&lt;?php echo $this-&gt;get_field_id('flag_en'); ?&gt;"
					name="&lt;?php echo $this-&gt;get_field_name('flag_en'); ?&gt;" type="text" value="&lt;?php echo $flag_en; ?&gt;" /&gt;
				&lt;label for="&lt;?php echo $this-&gt;get_field_id('flag_de'); ?&gt;"&gt;&lt;?php _e('Flag icon URL (de):'); ?&gt;&lt;/label&gt;
				&lt;input class="widefat" id="&lt;?php echo $this-&gt;get_field_id('flag_de'); ?&gt;"
					name="&lt;?php echo $this-&gt;get_field_name('flag_de'); ?&gt;" type="text" value="&lt;?php echo $flag_de; ?&gt;" /&gt;
			&lt;/p&gt;
		&lt;?php
	}
} // class Flags_Widget
add_action('widgets_init', create_function('', 'return register_widget("Flags_Widget");'));
?&gt;</pre>
<p>I wanted to keep it simple and therefore all together in one file. Otherwise you should at least put the CSS styles inside an external style sheet file, of course.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ab-weblog.com/en/widget-for-displaying-language-selection-flags-in-menu-and-footer/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Display Only Excerpts Instead of Full Posts</title>
		<link>http://www.ab-weblog.com/en/display-only-excerpts-instead-of-full-posts/</link>
		<comments>http://www.ab-weblog.com/en/display-only-excerpts-instead-of-full-posts/#comments</comments>
		<pubDate>Wed, 03 Aug 2011 14:05:49 +0000</pubDate>
		<dc:creator>Andreas Breitschopp</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[theme]]></category>

		<guid isPermaLink="false">http://www.ab-weblog.com/en/?p=23</guid>
		<description><![CDATA[By default in the theme &#8220;Twenty Eleven&#8221; of WordPress everywhere (except for search results) full posts are displayed. But I don&#8217;t like that, because if I click on a category or tag, I just want to get an overview what &#8230; <a href="http://www.ab-weblog.com/en/display-only-excerpts-instead-of-full-posts/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>By default in the theme &#8220;Twenty Eleven&#8221; of WordPress everywhere (except for search results) full posts are displayed. But I don&#8217;t like that, because if I click on a category or tag, I just want to get an overview what posts are assigned to it. If I want to read one completely, I can still click on it.</p>
<p>Therefore I wanted to display only excerpts of posts for following pages:</p>
<ul>
<li>Search results (which is the case by default already)</li>
<li>Homepage of the blog</li>
<li>Category archive pages</li>
<li>Tag archive pages</li>
<li>Date-based archive pages (I don&#8217;t use them at all right now)</li>
</ul>
<p>To accomplish that, you just have to replace the line in the &#8220;content.php&#8221; theme file</p>
<pre class="brush: php; gutter: false">&lt;?php if ( is_search() ) : // Only display Excerpts for Search ?&gt;</pre>
<p>with this one:</p>
<pre class="brush: php; gutter: false">&lt;?php if ( is_home() || is_tag() || is_category() || is_date() || is_search() ) : ?&gt;</pre>
<p>That&#8217;s it. Now at least I think it looks better for the user and I&#8217;m sure also search engines don&#8217;t mind that (keyword: &#8220;duplicate content&#8221;). <img src='http://www.ab-weblog.com/en/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ab-weblog.com/en/display-only-excerpts-instead-of-full-posts/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Multilingual Blog in WordPress: qTranslate, WPML or Multisite Feature</title>
		<link>http://www.ab-weblog.com/en/multilingual-blog-in-wordpress-qtranslate-wpml-or-multisite-feature/</link>
		<comments>http://www.ab-weblog.com/en/multilingual-blog-in-wordpress-qtranslate-wpml-or-multisite-feature/#comments</comments>
		<pubDate>Tue, 02 Aug 2011 09:47:56 +0000</pubDate>
		<dc:creator>Andreas Breitschopp</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[multilingual]]></category>
		<category><![CDATA[multisite]]></category>
		<category><![CDATA[plug-in]]></category>
		<category><![CDATA[qTranslate]]></category>
		<category><![CDATA[WPML]]></category>

		<guid isPermaLink="false">http://www.ab-weblog.com/en/?p=47</guid>
		<description><![CDATA[As I setup this blog on a new platform, I wanted to make sure it is multilingual directly from the beginning. Disappointed I realized that WordPress still does not provide options for multilingual blogs originally. I don&#8217;t understand that, because &#8230; <a href="http://www.ab-weblog.com/en/multilingual-blog-in-wordpress-qtranslate-wpml-or-multisite-feature/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>As I setup this blog on a new platform, I wanted to make sure it is multilingual directly from the beginning.</p>
<p>Disappointed I realized that WordPress still does not provide options for multilingual blogs originally. I don&#8217;t understand that, because obviously many people have exactly this problem: how to get the WordPress blog multilingual.</p>
<p>While searching for a solution, I basically found three useful options:</p>
<ul>
<li>Plug-in qTranslate</li>
<li>Plug-in WPML</li>
<li>Using the multisite feature of WordPress itself</li>
</ul>
<h2>qTranslate</h2>
<p>When I tested this plug-in I saw quite fast that it does not provide slug translation for posts, pages, categories and tags. This way this plug-in is useless in my opinion, because without a slug translation search engine optimization is basically impossible.</p>
<p>Obviously the original plug-in developer did not like or had no time to implement that feature yet, but although there are already other guys dealing with that issue (<a title="Forum post about qTranslate and slug translation" href="http://www.qianqin.de/qtranslate/forum/viewtopic.php?f=4&amp;t=1049" target="_blank">see this forum post</a>), I don&#8217;t want to use such an incomplete plug-in right now.</p>
<h2>WPML</h2>
<p>On the first sight WPML looks like a good alternative. It is not free (anymore), but I don&#8217;t mind paying some dollars for a good plug-in.</p>
<p>But there are following reasons why I will not use it and asked for refunding my money (which is possible within 30 days):</p>
<ol>
<li>I want to have all languages (including the default one) in a subdirectory and this is not supported by WPML. The <a title="Work-around to get default language into subdirectory" href="http://forum.wpml.org/topic.php?id=4291" target="_blank">workaround provided in the forum</a> is a little bit too &#8220;hacky&#8221; (you never know which problems you&#8217;ll get with such hacks later on).</li>
<li>it is unhandy that WPML does not allow to have tags and categories with the same names and slugs for different languages. If different languages are placed in a subdirectory (or even subdomain), there is no need to have cross-language unique names and slugs.</li>
<li>there is a bug in WPML where posts are losing the translation relation to each other. <a title="Forum thread about posts loosing their translation relation" href="http://forum.wpml.org/topic.php?id=4298" target="_blank">No explanation or solution was provided therefore till now.</a></li>
</ol>
<p>But I would like to add that refunding the money was done very fast (within few hours) as promised by the company; so it&#8217;s save to test WPML yourself.</p>
<h2>WordPress Multisite</h2>
<p>Obviously there are not many options left. Therefore I go this way now.</p>
<p>Of course, there is a drawback with this solution, too: translated posts are not directly linked to each other and therefore the reader cannot switch to another language of the post easily. But maybe I&#8217;ll create a plug-in to fix this later on myself.</p>
<p>At least you don&#8217;t need to rely on other plug-ins for multilingual blogs with this solution.</p>
<p><a title="Widget for Displaying Language Selection Flags in Menu and Footer" href="http://www.ab-weblog.com/en/widget-for-displaying-language-selection-flags-in-menu-and-footer/">Here I explain how to add language selection flags although using WordPress Multisite.</a></p>
<p><em>And which option you are using for your multilingual blog?</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ab-weblog.com/en/multilingual-blog-in-wordpress-qtranslate-wpml-or-multisite-feature/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Dotclear as Alternative to WordPress</title>
		<link>http://www.ab-weblog.com/en/dotclear-as-alternative-to-wordpress/</link>
		<comments>http://www.ab-weblog.com/en/dotclear-as-alternative-to-wordpress/#comments</comments>
		<pubDate>Mon, 01 Aug 2011 13:16:00 +0000</pubDate>
		<dc:creator>Andreas Breitschopp</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[multilingual]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[plug-in]]></category>

		<guid isPermaLink="false">http://www.ab-weblog.com/en/?p=20</guid>
		<description><![CDATA[While searching for a good, new platform for this blog, the first blog software you came across obviously is WordPress. But as I was not so happy with the multi-language features of WordPress (see this other post), I searched for &#8230; <a href="http://www.ab-weblog.com/en/dotclear-as-alternative-to-wordpress/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>While searching for a good, new platform for this blog, the first blog software you came across obviously is WordPress. But as I was not so happy with the multi-language features of WordPress (see this other post), I searched for a better solution.</p>
<p>Then I found <a title="Dotclear webpage" href="http://dotclear.org" target="_blank">Dotclear</a> that looked at first sight like a interesting alternative:</p>
<ul>
<li>It looks clean and easy.</li>
<li>It’s written in PHP (as I’m developing in PHP myself, too, that’s important for me in case it should be necessary to add or change something myself).</li>
<li>It should be easily possible to use more than one language for the blog (that’s the reason why I’m unhappy with WordPress).</li>
</ul>
<p>Therefore I just gave it a try and installed it on my test server which worked without problems and errors.</p>
<p>Directly after the first login I wanted to have a look inside the documentation and the plug-in descriptions to see what plug-ins are available for this system. But then I was appalled: all plug-in descriptions and part of the documentation seem to be only available in French!</p>
<p>Maybe I could still understand it by using my school’s Latin knowledge and Google Translate, but I really don’t want to use a blogging system that’s main language is not English.</p>
<p>Although I’m a German native speaker, I even don’t think any bigger open source project should choose German as main language: if there are translations in other languages that’s great, of course, but as most of all people understand English, the main language of all projects should be English! Period.</p>
<p>Therefore I stopped testing Dotclear and stayed with WordPress.</p>
<p><em>Did you also have positive or negative experience with Dotclear yourself already?</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ab-weblog.com/en/dotclear-as-alternative-to-wordpress/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->