<?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>Ten Fingers And A Brain &#187; WordPress</title>
	<atom:link href="http://ten-fingers-and-a-brain.com/tag/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://ten-fingers-and-a-brain.com</link>
	<description>Martin Lormes on Wordpress, PHP, Nagios, XML, FileMaker, BlackBerry, Arduino</description>
	<lastBuildDate>Tue, 27 Mar 2012 10:06:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Nagios Plugin to check a Subversion Working Copy for Modifications</title>
		<link>http://ten-fingers-and-a-brain.com/2012/01/nagios-plugin-to-check-a-subversion-working-copy-for-modifications/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=nagios-plugin-to-check-a-subversion-working-copy-for-modifications</link>
		<comments>http://ten-fingers-and-a-brain.com/2012/01/nagios-plugin-to-check-a-subversion-working-copy-for-modifications/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 22:29:28 +0000</pubDate>
		<dc:creator>Martin Lormes</dc:creator>
				<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Nagios Plugins]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[nagios]]></category>
		<category><![CDATA[nagios-plugins]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://ten-fingers-and-a-brain.com/?p=343</guid>
		<description><![CDATA[I use revision control systems for almost all of my software development, deployment, and server configuration. When using Subversion there is, technically, no difference between a working copy on my personal or development machines vs. a working copy on a production server. (Yes, you need a working copy on the production server, because exports cannot [...]]]></description>
			<content:encoded><![CDATA[<div><div style="float: left; margin: 0 0px 5px 0;"><g:plusone size="medium" href="http://ten-fingers-and-a-brain.com/2012/01/nagios-plugin-to-check-a-subversion-working-copy-for-modifications/"></g:plusone></div><div style="float: left; margin: 0 30px 5px 0;"><a class="FlattrButton" style="display:none;" title="Nagios Plugin to check a Subversion Working Copy for Modifications" rev="flattr;uid:tfnab;category:text;language:en_GB;button:compact;" href="http://ten-fingers-and-a-brain.com/2012/01/nagios-plugin-to-check-a-subversion-working-copy-for-modifications/">I use revision control systems for almost all of my software development, deployment, and server configuration. When using Subversion there is, technically, no difference between a working copy on my personal or development machines vs. a working copy on a production server. (Yes, you need a working copy on the production server, because exports cannot be updated that easily.) However, modifications of the checked out code or config files on a production server can cause problems with the next round of updates. Sometimes you just don't notice that there are conflicts that need to be resolved. To make sure I notice when a colleague or I have fallen back into the bad habit of changing things on a production server directly, rather than checking in changes to the repository, I have created a Nagios Plugin: it's called "check_svnstatus" You can download, clone, or fork the plugin from my GitHub repository for Nagios plugins. (I know it's a bit ironic to host this here.) If you're unfami...</a></div><div style="float: left; margin: 0 15px 5px 0;"><a style="display:none;" href="http://twitter.com/share?url=http%3A%2F%2Ften-fingers-and-a-brain.com%2F2012%2F01%2Fnagios-plugin-to-check-a-subversion-working-copy-for-modifications%2F&amp;via=10fnab&amp;text=Nagios%20Plugin%20to%20check%20a%20Subversion%20Working%20Copy%20for%20Modifications&amp;count=horizontal" class="twitter-share-button">Tweet</a></div><div style="float: left; margin: 0 0px 5px 0;"><fb:like href="http://ten-fingers-and-a-brain.com/2012/01/nagios-plugin-to-check-a-subversion-working-copy-for-modifications/" layout="button_count"></fb:like></div></div><div style="clear: both;"></div><p>I use <a href="http://en.wikipedia.org/wiki/Revision_control">revision control</a> systems for almost all of my software development, deployment, and server configuration. When using <a href="http://subversion.apache.org/">Subversion</a> there is, technically, no difference between a working copy on my personal or development machines vs. a working copy on a production server. (Yes, you need a working copy on the production server, because exports cannot be updated that easily.) However, modifications of the checked out code or config files on a production server can cause problems with the next round of updates. Sometimes you just don&#8217;t notice that there are conflicts that need to be resolved.</p>
<p>To make sure I notice when a colleague or I have fallen back into the bad habit of changing things on a production server directly, rather than checking in changes to the repository, I have created a Nagios Plugin: it&#8217;s called &#8220;check_svnstatus&#8221;</p>
<p><span id="more-343"></span></p>
<p>You can <a href="https://github.com/tfnab/tfnab-nagios-plugins" title="My Nagios Plugins on GitHub">download, clone, or fork the plugin from my GitHub repository for Nagios plugins</a>. (I know it&#8217;s a bit ironic to host this here.) If you&#8217;re unfamiliar with GitHub: <a href="https://github.com/tfnab/tfnab-nagios-plugins/zipball/master" title="My Nagios Plugins on GitHub, .zip download">here&#8217;s a .zip version</a>, and <a href="https://github.com/tfnab/tfnab-nagios-plugins/tarball/master" title="My Nagios Plugins on GitHub, .tar.gz download">here&#8217;s a .tar.gz version</a>.</p>
<h3>Installation and Configuration</h3>
<p>Copy <code>check_svnstatus.sh</code> to your Nagios plugins directory. Usually this will be <code>/usr/lib/nagios/plugins</code> or <code>/usr/local/nagios/libexec</code> but your environment may be different. The plugin needs to be copied to the same server as your working copy, i.e. if you&#8217;re watching working copies on different servers you need the plugin on all of those servers.</p>
<p>Make <code>check_svnstatus.sh</code> executable:</p>
<pre class="brush: bash; title: ; notranslate">
chmod +x check_svnstatus.sh
</pre>
<p>You can test the plugin now by manually invoking it:</p>
<pre class="brush: bash; title: ; notranslate">
/path/to/check_svnstatus.sh -d /your/working-copy
</pre>
<p>You should see &#8220;OK: working copy at /your/working-copy is unmodified&#8221;, but &#8220;CRITICAL: working copy at /your/working-copy contains modifications&#8221; would also be OK for the moment; you can clean up later.</p>
<p>Now we need this to be run from Nagios&#8230; Things will be slightly different depending on whether your working copy resides on the same server as Nagios or on a different server. Lets start with a local working copy, i.e. one that&#8217;s on the same server as your Nagios install.</p>
<p>First you need a Nagios command. If you&#8217;re still using a modified version of the sample configuration files (nothing wrong with that!) append this to <code>commands.cfg</code>:</p>
<pre class="brush: plain; title: ; notranslate">
define command{
  command_name check_local_svnstatus
  command_line $USER1$/check_svnstatus.sh -d $ARG1$
}
</pre>
<p>Then you can add a service definition, e.g. append these lines to <code>localhost.cfg</code>:</p>
<pre class="brush: plain; title: ; notranslate">
define service{
  use                 local-service
  host_name           localhost
  service_description SVN ST /your/working-copy
  check_command       check_local_svnstatus!/your/working-copy
}
</pre>
<p>Reload the Nagios configuration (or, if you get the hint: check in the config changes to your Subversion repository, then run <code>svn update</code> on the config directory on your Nagios server, then run something like <code>service nagios reload</code>) and Nagios will schedule the first check of your working copy&#8230; Things will be very straightforward and self-explaining from here.</p>
<p>Now if your working copy is on a different server than your Nagios install, you need a method to invoke the plugin remotely. There are various methods for doing so, and there tend to be lengthier discussions about the pros and cons, but please keep in mind that this post is <em>not</em> about remote invocation methods. For this example I&#8217;ll be using <a href="http://nagiosplugins.org/man/check_by_ssh">check_by_ssh</a> but <a href="http://nagios.sourceforge.net/docs/nrpe/NRPE.pdf" title="NRPE Documentation (PDF)">NRPE</a> or other methods will work as well. If you&#8217;re unfamiliar with remote invocation and/or you&#8217;ve never run &#8220;check_by_ssh&#8221; before you should get this sorted out first, e.g. by reading <a href="http://www.techrepublic.com/blog/opensource/remotely-monitor-servers-with-the-nagios-checkbyssh-plugin/321" title="Remotely monitor servers with the Nagios check_by_ssh plugin">this post on TechRepublic</a>.</p>
<div class="insert" style="background-color:#fe0;">The following example relies on &#8220;check_by_ssh&#8221; and thus requires additional configuration which is not covered in this article!</div>
<p>Again you need a Nagios command. Append this to <code>commands.cfg</code>:</p>
<pre class="brush: plain; title: ; notranslate">
define command{
  command_name check_ssh_svnstatus
  command_line $USER1$/check_by_ssh -H $HOSTADDRESS$ -C &quot;/path/to/check_svnstatus.sh -d $ARG1$&quot;
}
</pre>
<p>Note: <code>/path/to/check_svnstatus.sh</code> should be the location on the remote server. This path may be a different than the location of your plugins on the Nagios server itself.</p>
<p>Then you can add a service definition the server&#8217;s .cfg file:</p>
<pre class="brush: plain; title: ; notranslate">
define service{
  use                 generic-service
  host_name           servername
  service_description SVN ST /your/working-copy
  check_command       check_ssh_svnstatus!/your/working-copy
}
</pre>
<p>Once again: reload the Nagios configuration and Nagios will schedule the first check of your working copy&#8230; Things will be as straightforward and self-explaining as they were for a local working copy.</p>
<p>By the way: You can also call this a poor-man&#8217;s <a href="http://en.wikipedia.org/wiki/Intrusion_detection_system" title="Intrusion detection system">IDS</a> as it will trigger alerts when someone exploits your website and drops or alters PHP or other files in your htdocs directory (if you&#8217;re using Subversion to deploy).</p>
<p>Oh, and think about this: It might be good idea to put your Nagios configuration in a Subversion repository. Whether or not you end up monitoring the working copy on the Nagios server.</p>
<h3>Additional reading</h3>
<p>If you&#8217;ve been scratching your head over the &#8220;deployment&#8221; remark in my opening sentence you might want to follow these links:</p>
<ul>
<li><a href="http://josephscott.org/archives/2009/02/installing-wordpress-as-a-subversion-checkout-or-external-in-a-subdirectory/">Joseph Scott: Installing WordPress As A Subversion Checkout (Or External) In A Subdirectory</a></li>
<li><a href="http://codex.wordpress.org/Installing_WordPress_With_Clean_Subversion_Repositories">WordPress Codex: Installing WordPress With Clean Subversion Repositories</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ten-fingers-and-a-brain.com/2012/01/nagios-plugin-to-check-a-subversion-working-copy-for-modifications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress 3.3 Admin Bar: Make &#8220;+New&#8221; Default to New Page Instead of New Post</title>
		<link>http://ten-fingers-and-a-brain.com/2011/12/wordpress-3-3-admin-bar-make-new-default-to-new-page-instead-of-new-post/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=wordpress-3-3-admin-bar-make-new-default-to-new-page-instead-of-new-post</link>
		<comments>http://ten-fingers-and-a-brain.com/2011/12/wordpress-3-3-admin-bar-make-new-default-to-new-page-instead-of-new-post/#comments</comments>
		<pubDate>Sun, 18 Dec 2011 12:01:51 +0000</pubDate>
		<dc:creator>Martin Lormes</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[CMS]]></category>

		<guid isPermaLink="false">http://ten-fingers-and-a-brain.com/?p=269</guid>
		<description><![CDATA[Some of my clients are using their WordPress installs with pages only, i.e. without any posts, and with comments turned off completely. This is often referred to as "WordPress as a CMS". To free the screen from clutter I like to remove the comments link from the new/revised WordPress 3.3 Admin Bar. I also usually [...]]]></description>
			<content:encoded><![CDATA[<div><div style="float: left; margin: 0 0px 5px 0;"><g:plusone size="medium" href="http://ten-fingers-and-a-brain.com/2011/12/wordpress-3-3-admin-bar-make-new-default-to-new-page-instead-of-new-post/"></g:plusone></div><div style="float: left; margin: 0 30px 5px 0;"><a class="FlattrButton" style="display:none;" title="WordPress 3.3 Admin Bar: Make &quot;+New&quot; Default to New Page Instead of New Post" rev="flattr;uid:tfnab;category:text;language:en_GB;button:compact;" href="http://ten-fingers-and-a-brain.com/2011/12/wordpress-3-3-admin-bar-make-new-default-to-new-page-instead-of-new-post/">Some of my clients are using their WordPress installs with pages only, i.e. without any posts, and with comments turned off completely. This is often referred to as "WordPress as a CMS". To free the screen from clutter I like to remove the comments link from the new/revised WordPress 3.3 Admin Bar. I also usually change the "+ New" link to default to creating a new page instead of creating a new post. To accomplish this you can drop the following lines into your theme's functions.php file: 1 To find out more about the Admin Bar API you should check out this post by Andrew Nacin on the official WordPress Development Blog.</a></div><div style="float: left; margin: 0 15px 5px 0;"><a style="display:none;" href="http://twitter.com/share?url=http%3A%2F%2Ften-fingers-and-a-brain.com%2F2011%2F12%2Fwordpress-3-3-admin-bar-make-new-default-to-new-page-instead-of-new-post%2F&amp;via=10fnab&amp;text=WordPress%203.3%20Admin%20Bar%3A%20Make%20%26%238220%3B%2BNew%26%238221%3B%20Default%20to%20New%20Page%20Instead%20of%20New%20Post&amp;count=horizontal" class="twitter-share-button">Tweet</a></div><div style="float: left; margin: 0 0px 5px 0;"><fb:like href="http://ten-fingers-and-a-brain.com/2011/12/wordpress-3-3-admin-bar-make-new-default-to-new-page-instead-of-new-post/" layout="button_count"></fb:like></div></div><div style="clear: both;"></div><p>Some of my clients are using their WordPress installs with pages only, i.e. without any posts, and with comments turned off completely. This is often referred to as &#8220;WordPress as a CMS&#8221;. To free the screen from clutter I like to remove the comments link from the new/revised WordPress 3.3 Admin Bar. I also usually change the &#8220;+ New&#8221; link to default to creating a new page instead of creating a new post.</p>
<p><img src="http://ten-fingers-and-a-brain.com/wp-content/uploads/2011/12/wp330adminbar_new.png" alt="" title="&quot;+New&quot; in WordPress 3.3 Admin Bar" width="140" height="28" class="alignnone size-full wp-image-270" /></p>
<p>To accomplish this you can drop the following lines into your theme&#8217;s <code>functions.php</code> file:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
function my_admin_bar_menu( $wp_admin_bar )
{
  $wp_admin_bar-&gt;remove_node( 'comments' );
  $newpage = $wp_admin_bar-&gt;get_node( 'new-page' );
  $wp_admin_bar-&gt;add_node( array( 'id' =&gt; 'new-content', 'href' =&gt; $newpage-&gt;href, ) );
}
add_action( 'admin_bar_menu', 'my_admin_bar_menu', 100 );
</pre>
<p>To find out more about the Admin Bar API you should check out <a href="http://wpdevel.wordpress.com/2011/12/07/admin-bar-api-changes-in-3-3/">this post by Andrew Nacin on the official WordPress Development Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ten-fingers-and-a-brain.com/2011/12/wordpress-3-3-admin-bar-make-new-default-to-new-page-instead-of-new-post/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Keeping your debug output out of the way</title>
		<link>http://ten-fingers-and-a-brain.com/2011/06/keeping-your-debug-output-out-of-the-way/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=keeping-your-debug-output-out-of-the-way</link>
		<comments>http://ten-fingers-and-a-brain.com/2011/06/keeping-your-debug-output-out-of-the-way/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 20:24:09 +0000</pubDate>
		<dc:creator>Martin Lormes</dc:creator>
				<category><![CDATA[OOP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress Plugins]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[debug-bar]]></category>

		<guid isPermaLink="false">http://ten-fingers-and-a-brain.com/?p=222</guid>
		<description><![CDATA[Peter Westwood and some other WordPress core developers have written a great plugin for WordPress plugin and theme developers: the Debug Bar. It plugs into the Admin Bar that was introduced with WordPress 3.1 and outputs various details about the current page, but to (super) admins only. Thanks to the consequent usage of WordPress Plugin [...]]]></description>
			<content:encoded><![CDATA[<div><div style="float: left; margin: 0 0px 5px 0;"><g:plusone size="medium" href="http://ten-fingers-and-a-brain.com/2011/06/keeping-your-debug-output-out-of-the-way/"></g:plusone></div><div style="float: left; margin: 0 30px 5px 0;"><a class="FlattrButton" style="display:none;" title="Keeping your debug output out of the way" rev="flattr;uid:tfnab;category:text;language:en_GB;button:compact;" href="http://ten-fingers-and-a-brain.com/2011/06/keeping-your-debug-output-out-of-the-way/">Peter Westwood and some other WordPress core developers have written a great plugin for WordPress plugin and theme developers: the Debug Bar. It plugs into the Admin Bar that was introduced with WordPress 3.1 and outputs various details about the current page, but to (super) admins only. Thanks to the consequent usage of WordPress Plugin API functions there is a fairly easy and straightforward way of outputting your own debug information into the Debug Bar. You should create a separate file for your Debug Bar tab, let's call it my-debug-bar-panel.php, and place it in the same directory as your plugin file or your theme's functions.php file. In this file you create a child class of Debug_Bar_Panel, e.g. my_Debug_Bar_Panel, with at least one method render() in which you can output everything that should be on your tab. 1 &lt;?php class my_Debug_Bar_Panel extends Debug_Bar_Panel { function render() { echo '&lt;div id=&quot;my-debug-par-panel&quot;&gt;'; echo '&lt;h3&gt;...</a></div><div style="float: left; margin: 0 15px 5px 0;"><a style="display:none;" href="http://twitter.com/share?url=http%3A%2F%2Ften-fingers-and-a-brain.com%2F2011%2F06%2Fkeeping-your-debug-output-out-of-the-way%2F&amp;via=10fnab&amp;text=Keeping%20your%20debug%20output%20out%20of%20the%20way&amp;count=horizontal" class="twitter-share-button">Tweet</a></div><div style="float: left; margin: 0 0px 5px 0;"><fb:like href="http://ten-fingers-and-a-brain.com/2011/06/keeping-your-debug-output-out-of-the-way/" layout="button_count"></fb:like></div></div><div style="clear: both;"></div><p><a href="http://westi.wordpress.com/2011/01/05/introducing-debug-bar/">Peter Westwood and some other WordPress core developers have written a great plugin</a> for WordPress plugin and theme developers: <a href="http://wordpress.org/extend/plugins/debug-bar/">the Debug Bar</a>. It plugs into the Admin Bar that was introduced with WordPress 3.1 and outputs various details about the current page, but to (super) admins only.</p>
<p>Thanks to the consequent usage of <a href="http://codex.wordpress.org/Plugin_API">WordPress Plugin API</a> functions there is a fairly easy and straightforward way of outputting your own debug information into the Debug Bar.</p>
<p><img src="http://ten-fingers-and-a-brain.com/wp-content/uploads/2011/06/debug-bar-panel.jpg" alt="Your own Debug Bar Panel" title="Your own Debug Bar Panel" width="500" height="172" class="alignnone size-full wp-image-227" /></p>
<p>You should create a separate file for your Debug Bar tab, let&#8217;s call it <code>my-debug-bar-panel.php</code>, and place it in the same directory as your plugin file or your theme&#8217;s <code>functions.php</code> file. In this file you create a child class of <code>Debug_Bar_Panel</code>, e.g. <code>my_Debug_Bar_Panel</code>, with at least one method <code>render()</code> in which you can output everything that should be on your tab.</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
class my_Debug_Bar_Panel extends Debug_Bar_Panel
{
  function render()
  {
    echo '&lt;div id=&quot;my-debug-par-panel&quot;&gt;';
    echo '&lt;h3&gt;Some header&lt;/h3&gt;';
    echo '&lt;p&gt;Some debug output&lt;/p&gt;';
    echo '&lt;/div&gt;';
  }
}
</pre>
<p>Now back to your main plugin file or <code>functions.php</code>: You need a function that hooks into <code>debug_bar_panels</code>. I put a double check in my example to make sure the base class <code>Debug_Bar_Panel</code> exists (since you never know whether they drop this in a future release which would cause fatal runtime errors). Then you create a new instance of <code>my_Debug_Bar_Panel</code> with the title, which you would like to see on your tab, passed to the constructor:</p>
<pre class="brush: php; title: ; notranslate">
function my_debug_bar_panels($a)
{
  if (class_exists('Debug_Bar_Panel'))
  {
    require_once dirname(__FILE__).'/my-debug-bar-panel.php';
    $a[]=new my_Debug_Bar_Panel('My tab title');
  }
  return $a;
}
add_filter('debug_bar_panels', 'my_debug_bar_panels');
</pre>
<p>Believe it or not, you&#8217;re done!</p>
]]></content:encoded>
			<wfw:commentRss>http://ten-fingers-and-a-brain.com/2011/06/keeping-your-debug-output-out-of-the-way/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New WordPress plugin: Open Graph Pro</title>
		<link>http://ten-fingers-and-a-brain.com/2011/06/new-wordpress-plugin-open-graph-pro/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=new-wordpress-plugin-open-graph-pro</link>
		<comments>http://ten-fingers-and-a-brain.com/2011/06/new-wordpress-plugin-open-graph-pro/#comments</comments>
		<pubDate>Mon, 20 Jun 2011 22:24:36 +0000</pubDate>
		<dc:creator>Martin Lormes</dc:creator>
				<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Open Graph Protocol]]></category>
		<category><![CDATA[WordPress Plugins]]></category>
		<category><![CDATA[Open Graph]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://ten-fingers-and-a-brain.com/?p=188</guid>
		<description><![CDATA[Open Graph Pro is a WordPress plugin. It adds Open Graph Protocol metadata to your WordPress powered blog/website. It does not (yet) add any Facebook "Like" buttons. The Open Graph Protocol enables your website/blog to have the same functionality as a Facebook page. Open Graph Pro is hosted on wordpress.org: Download Upcoming versions Version 1.1 [...]]]></description>
			<content:encoded><![CDATA[<div><div style="float: left; margin: 0 0px 5px 0;"><g:plusone size="medium" href="http://ten-fingers-and-a-brain.com/wordpress-plugins/ogp/"></g:plusone></div><div style="float: left; margin: 0 30px 5px 0;"><a class="FlattrButton" style="display:none;" title="Open Graph Pro" rev="flattr;uid:tfnab;category:text;language:en_GB;button:compact;" href="http://ten-fingers-and-a-brain.com/wordpress-plugins/ogp/">Open Graph Pro is a WordPress plugin. It adds Open Graph Protocol metadata to your WordPress powered blog/website. It does not (yet) add any Facebook "Like" buttons. The Open Graph Protocol enables your website/blog to have the same functionality as a Facebook page. Open Graph Pro is hosted on wordpress.org: Download Upcoming versions Version 1.1 will feature an API for theme and plugin developers to access the Open Graph Protocol metadata to add "Like" buttons to their blogs and to use custom Object Types. Go to the download page and grab the Development Version if you want to try it!</a></div><div style="float: left; margin: 0 15px 5px 0;"><a style="display:none;" href="http://twitter.com/share?url=http%3A%2F%2Ften-fingers-and-a-brain.com%2F2011%2F06%2Fnew-wordpress-plugin-open-graph-pro%2F&amp;via=10fnab&amp;text=New%20WordPress%20plugin%3A%20Open%20Graph%20Pro&amp;count=horizontal" class="twitter-share-button">Tweet</a></div><div style="float: left; margin: 0 0px 5px 0;"><fb:like href="http://ten-fingers-and-a-brain.com/wordpress-plugins/ogp/" layout="button_count"></fb:like></div></div><div style="clear: both;"></div><p>I have just released my newest WordPress plugin to the public:</p>
<p><a href="http://ten-fingers-and-a-brain.com/wordpress-plugins/ogp/">Open Graph Pro</a> automagically adds <a href="http://ogp.me/">Open Graph Protocol</a> metadata to your WordPress powered blog/website. Through the Open Graph Protocol you can control how your posts and pages appear on Facebook when someone shares a link or likes your stuff.</p>
<p>The plugin does not add any &#8220;Like&#8221; buttons to your site just yet, but that&#8217;s on my to-do-list.</p>
<p>It does however give for a great deal of customization already by allowing you to change the object type of your entire site as well as the object type of individual pages, e.g. when you have a single page for each album or song of your band, or for each product of your company, etc. If you go to the settings page in the admin section of your site you can enter <a href="http://ten-fingers-and-a-brain.com/wordpress-plugins/ogp/facebook-id/">your Facebook user ID</a> and give your site/blog the full potential of a Facebook page.</p>
<p>And just in case you&#8217;re wondering: I&#8217;m not using this plugin on this site at the moment, because liking or sharing stuff on Facebook only looks good with images, or it actually looks really crappy without them, and as you may have noticed I have very little eye-candy on my site at the moment. Now that the majority of all the coding is done I will focus next on the visual aspects of this blog, and then install the plugin when things have become more graphical around here&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://ten-fingers-and-a-brain.com/2011/06/new-wordpress-plugin-open-graph-pro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>bug in function wp_count_comments in wp-includes/comment.php</title>
		<link>http://ten-fingers-and-a-brain.com/2011/03/bug-in-function-wp_count_comments-in-wp-includescomment-php/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=bug-in-function-wp_count_comments-in-wp-includescomment-php</link>
		<comments>http://ten-fingers-and-a-brain.com/2011/03/bug-in-function-wp_count_comments-in-wp-includescomment-php/#comments</comments>
		<pubDate>Thu, 17 Mar 2011 19:31:18 +0000</pubDate>
		<dc:creator>Martin Lormes</dc:creator>
				<category><![CDATA[blurts]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[bugfix]]></category>

		<guid isPermaLink="false">http://ten-fingers-and-a-brain.com/?p=150</guid>
		<description><![CDATA[bug in function wp_count_comments in wp-includes/comment.php (with patch for WordPress 3.1)]]></description>
			<content:encoded><![CDATA[<p><a href="http://core.trac.wordpress.org/ticket/16879">bug in function wp_count_comments in wp-includes/comment.php</a> (with patch for WordPress 3.1)</p>
]]></content:encoded>
			<wfw:commentRss>http://ten-fingers-and-a-brain.com/2011/03/bug-in-function-wp_count_comments-in-wp-includescomment-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Just updated to Reinhardt</title>
		<link>http://ten-fingers-and-a-brain.com/2011/02/just-updated-to-reinhardt/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=just-updated-to-reinhardt</link>
		<comments>http://ten-fingers-and-a-brain.com/2011/02/just-updated-to-reinhardt/#comments</comments>
		<pubDate>Thu, 24 Feb 2011 19:01:17 +0000</pubDate>
		<dc:creator>Martin Lormes</dc:creator>
				<category><![CDATA[blurts]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://ten-fingers-and-a-brain.com/?p=143</guid>
		<description><![CDATA[Just updated to Reinhardt.]]></description>
			<content:encoded><![CDATA[<p>Just updated to <a href="http://wordpress.org/news/2011/02/threeone/">Reinhardt</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ten-fingers-and-a-brain.com/2011/02/just-updated-to-reinhardt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Securing WordPress for BlackBerry access with BlackBerry Enterprise Server</title>
		<link>http://ten-fingers-and-a-brain.com/2011/02/securing-wordpress-for-blackberry-access-with-blackberry-enterprise-server/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=securing-wordpress-for-blackberry-access-with-blackberry-enterprise-server</link>
		<comments>http://ten-fingers-and-a-brain.com/2011/02/securing-wordpress-for-blackberry-access-with-blackberry-enterprise-server/#comments</comments>
		<pubDate>Sun, 13 Feb 2011 14:33:56 +0000</pubDate>
		<dc:creator>Martin Lormes</dc:creator>
				<category><![CDATA[BlackBerry]]></category>
		<category><![CDATA[WordPress for BlackBerry]]></category>
		<category><![CDATA[mobile apps]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[XML-RPC]]></category>

		<guid isPermaLink="false">http://ten-fingers-and-a-brain.com/?p=129</guid>
		<description><![CDATA[I had always been a bit reluctant to enable the XML-RPC publishing feature on my blogs because this can be just an extra attack vector to a site. It is, however, required when you want to manage a WordPress blog using WordPress for BlackBerry. When your BlackBerry is connected to a corporate network using BlackBerry [...]]]></description>
			<content:encoded><![CDATA[<div><div style="float: left; margin: 0 0px 5px 0;"><g:plusone size="medium" href="http://ten-fingers-and-a-brain.com/2011/02/securing-wordpress-for-blackberry-access-with-blackberry-enterprise-server/"></g:plusone></div><div style="float: left; margin: 0 30px 5px 0;"><a class="FlattrButton" style="display:none;" title="Securing WordPress for BlackBerry access with BlackBerry Enterprise Server" rev="flattr;uid:tfnab;category:text;language:en_GB;button:compact;" href="http://ten-fingers-and-a-brain.com/2011/02/securing-wordpress-for-blackberry-access-with-blackberry-enterprise-server/">I had always been a bit reluctant to enable the XML-RPC publishing feature on my blogs because this can be just an extra attack vector to a site. It is, however, required when you want to manage a WordPress blog using WordPress for BlackBerry. When your BlackBerry is connected to a corporate network using BlackBerry Enterprise Server, and your organization's admins are OK with you using your mobile device and the corporate server to manage your blog (or if it's a company website anyway), you can add the following lines to your .htaccess file to block any XML-RPC access to your blog which is not coming from your corporate server: 1 You will have to replace 198.51.100.27 with the IP address of your BlackBerry Enterprise Server. Now you will also need to setup the WordPress app on your mobile device to use the BlackBerry Enterprise Server to connect to your blogs. In the app hit the BlackBerry ...</a></div><div style="float: left; margin: 0 15px 5px 0;"><a style="display:none;" href="http://twitter.com/share?url=http%3A%2F%2Ften-fingers-and-a-brain.com%2F2011%2F02%2Fsecuring-wordpress-for-blackberry-access-with-blackberry-enterprise-server%2F&amp;via=10fnab&amp;text=Securing%20WordPress%20for%20BlackBerry%20access%20with%20BlackBerry%20Enterprise%20Server&amp;count=horizontal" class="twitter-share-button">Tweet</a></div><div style="float: left; margin: 0 0px 5px 0;"><fb:like href="http://ten-fingers-and-a-brain.com/2011/02/securing-wordpress-for-blackberry-access-with-blackberry-enterprise-server/" layout="button_count"></fb:like></div></div><div style="clear: both;"></div><p>I had always been a bit reluctant to enable the <a href="http://codex.wordpress.org/XML-RPC_Support">XML-RPC publishing feature</a> on my blogs because this can be just an extra attack vector to a site. It is, however, required when you want to manage a WordPress blog using <a href="http://blackberry.wordpress.org/">WordPress for BlackBerry</a>. When your BlackBerry is connected to a corporate network using BlackBerry Enterprise Server, and your organization&#8217;s admins are OK with you using your mobile device <em>and the corporate server</em> to manage your blog (or if it&#8217;s a company website anyway), you can add the following lines to your .htaccess file to block any XML-RPC access to your blog which is not coming from your corporate server:</p>
<pre class="brush: plain; title: ; notranslate">&lt;Files xmlrpc.php&gt;
Order allow,deny
allow from 198.51.100.27
&lt;/Files&gt;</pre>
<p>You will have to replace 198.51.100.27 with the IP address of your BlackBerry Enterprise Server.</p>
<p>Now you will also need to setup the WordPress app on your mobile device to use the BlackBerry Enterprise Server to connect to your blogs. In the app hit the BlackBerry key and click on &#8220;Setup&#8221;:</p>
<p><img class="alignnone size-full wp-image-130" title="WordPress for BlackBerry menu" src="http://ten-fingers-and-a-brain.com/wp-content/uploads/2011/02/wp-bb-setup1e_300.jpg" alt="" width="300" height="225" /></p>
<p>In the setup screen disable all other Connection Options and enable only &#8220;BlackBerry Enterprise Server&#8221; (this appears to be off by default):</p>
<p><img class="alignnone size-full wp-image-131" title="WordPress for BlackBerry Connection Options" src="http://ten-fingers-and-a-brain.com/wp-content/uploads/2011/02/wp-bb-setup2_300.jpg" alt="" width="300" height="225" /></p>
<p>Now Apache will allow only your BlackBerry (well, and any other BlackBerry in the same organization) to connect to your blog.</p>
]]></content:encoded>
			<wfw:commentRss>http://ten-fingers-and-a-brain.com/2011/02/securing-wordpress-for-blackberry-access-with-blackberry-enterprise-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New WordPress plugin: Comment E-Mail Verification</title>
		<link>http://ten-fingers-and-a-brain.com/2010/02/new-wordpress-plugin-comment-e-mail-verification/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=new-wordpress-plugin-comment-e-mail-verification</link>
		<comments>http://ten-fingers-and-a-brain.com/2010/02/new-wordpress-plugin-comment-e-mail-verification/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 21:19:10 +0000</pubDate>
		<dc:creator>Martin Lormes</dc:creator>
				<category><![CDATA[E-Mail]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress Plugins]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[email verification]]></category>

		<guid isPermaLink="false">http://ten-fingers-and-a-brain.com/?p=69</guid>
		<description><![CDATA[Comment E-Mail Verification is a WordPress Plugin. It sends an e-mail message to the comment author when a comment is held for moderation. The e-mail message contains a link to verify the comment author's e-mail address. When the comment author clicks on that link the comment gets approved immediately. This makes discussions more lively as [...]]]></description>
			<content:encoded><![CDATA[<div><div style="float: left; margin: 0 0px 5px 0;"><g:plusone size="medium" href="http://ten-fingers-and-a-brain.com/wordpress-plugins/comment-email-verify/"></g:plusone></div><div style="float: left; margin: 0 30px 5px 0;"><a class="FlattrButton" style="display:none;" title="Comment E-Mail Verification" rev="flattr;uid:tfnab;category:text;language:en_GB;button:compact;" href="http://ten-fingers-and-a-brain.com/wordpress-plugins/comment-email-verify/">Comment E-Mail Verification is a WordPress Plugin. It sends an e-mail message to the comment author when a comment is held for moderation. The e-mail message contains a link to verify the comment author's e-mail address. When the comment author clicks on that link the comment gets approved immediately. This makes discussions more lively as users don't have to wait for the blog admin to approve the comment. This plugin is in still in early development. The current version number is 0.4.2 Please go to http://wordpress.org/extend/plugins/comment-email-verify/ to download and test it! A list of shortcodes for the message template is available here.</a></div><div style="float: left; margin: 0 15px 5px 0;"><a style="display:none;" href="http://twitter.com/share?url=http%3A%2F%2Ften-fingers-and-a-brain.com%2F2010%2F02%2Fnew-wordpress-plugin-comment-e-mail-verification%2F&amp;via=10fnab&amp;text=New%20WordPress%20plugin%3A%20Comment%20E-Mail%20Verification&amp;count=horizontal" class="twitter-share-button">Tweet</a></div><div style="float: left; margin: 0 0px 5px 0;"><fb:like href="http://ten-fingers-and-a-brain.com/wordpress-plugins/comment-email-verify/" layout="button_count"></fb:like></div></div><div style="clear: both;"></div><p><a href="http://www.enderra.com/">Nils</a> asked me whether I knew about a WordPress plugin that would verify a comment author&#8217;s e-mail address. I didn&#8217;t, so I <a href="http://ten-fingers-and-a-brain.com/wordpress-plugins/comment-email-verify/">wrote one myself</a>.</p>
<p>The plugin is in its early stages, the current version number is 0.1 – you are welcome to test-drive it and watch it grow, or watch me procrastinate and forget about it over my day-job :/ if I do, go ahead and nag!</p>
]]></content:encoded>
			<wfw:commentRss>http://ten-fingers-and-a-brain.com/2010/02/new-wordpress-plugin-comment-e-mail-verification/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>WordPress Plugin updated: Top Spammers (0.4)</title>
		<link>http://ten-fingers-and-a-brain.com/2009/09/wordpress-plugin-updated-top-spammers-0-4/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=wordpress-plugin-updated-top-spammers-0-4</link>
		<comments>http://ten-fingers-and-a-brain.com/2009/09/wordpress-plugin-updated-top-spammers-0-4/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 19:47:52 +0000</pubDate>
		<dc:creator>Martin Lormes</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress Plugins]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[L10n]]></category>
		<category><![CDATA[Spam]]></category>

		<guid isPermaLink="false">http://ten-fingers-and-a-brain.com/?p=54</guid>
		<description><![CDATA[Block Top Spammers is a WordPress Plugin. Block Top Spammers displays a list of your top spammers' IP addresses, based on all comments in your database that are marked as spam. It also generates a blacklist for your .htaccess file to block those spammers from your website entirely, thus taking load off the server. You will need [...]]]></description>
			<content:encoded><![CDATA[<div><div style="float: left; margin: 0 0px 5px 0;"><g:plusone size="medium" href="http://ten-fingers-and-a-brain.com/wordpress-plugins/top-spammers/"></g:plusone></div><div style="float: left; margin: 0 30px 5px 0;"><a class="FlattrButton" style="display:none;" title="Block Top Spammers" rev="flattr;uid:tfnab;category:text;language:en_GB;button:compact;" href="http://ten-fingers-and-a-brain.com/wordpress-plugins/top-spammers/">Block Top Spammers is a WordPress Plugin. Block Top Spammers displays a list of your top spammers' IP addresses, based on all comments in your database that are marked as spam. It also generates a blacklist for your .htaccess file to block those spammers from your website entirely, thus taking load off the server. You will need another plugin (like Akismet) to identify the spam. Top Spammers requires PHP 5 Top Spammers is hosted on wordpress.org: Installation instructions Download FAQ As with any plugin hosted on wordpress.org you can also get the plugin using subversion: 1</a></div><div style="float: left; margin: 0 15px 5px 0;"><a style="display:none;" href="http://twitter.com/share?url=http%3A%2F%2Ften-fingers-and-a-brain.com%2F2009%2F09%2Fwordpress-plugin-updated-top-spammers-0-4%2F&amp;via=10fnab&amp;text=WordPress%20Plugin%20updated%3A%20Top%20Spammers%20%280.4%29&amp;count=horizontal" class="twitter-share-button">Tweet</a></div><div style="float: left; margin: 0 0px 5px 0;"><fb:like href="http://ten-fingers-and-a-brain.com/wordpress-plugins/top-spammers/" layout="button_count"></fb:like></div></div><div style="clear: both;"></div><p><a title="Download Top Spammers 0.4 (WordPress Plugin, ZIP)" href="http://downloads.wordpress.org/plugin/top-spammers.0.4.zip">Download the latest version</a> (ZIP).</p>
<p>If you have a question about the plugin please go to <a title="Top Spammers (WordPress Plugin)" href="http://ten-fingers-and-a-brain.com/wordpress-plugins/top-spammers/">the plugin&#8217;s homepage</a>.</p>
<p>This release has been internationalized. I have created a German language file myself. If you would like to create a language file in your language you are more than welcome to do so (POT file is included with the plugin). Please contact me by posting a comment on this post (and be sure to provide the correct e-mail address so I can write back) to have it included in the next release.</p>
]]></content:encoded>
			<wfw:commentRss>http://ten-fingers-and-a-brain.com/2009/09/wordpress-plugin-updated-top-spammers-0-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New WordPress Plugin: Top Spammers (0.3)</title>
		<link>http://ten-fingers-and-a-brain.com/2009/09/new-wordpress-plugin-top-spammers-0-3/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=new-wordpress-plugin-top-spammers-0-3</link>
		<comments>http://ten-fingers-and-a-brain.com/2009/09/new-wordpress-plugin-top-spammers-0-3/#comments</comments>
		<pubDate>Sat, 05 Sep 2009 09:12:53 +0000</pubDate>
		<dc:creator>Martin Lormes</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress Plugins]]></category>
		<category><![CDATA[Spam]]></category>

		<guid isPermaLink="false">http://ten-fingers-and-a-brain.com/?p=48</guid>
		<description><![CDATA[Block Top Spammers is a WordPress Plugin. Block Top Spammers displays a list of your top spammers' IP addresses, based on all comments in your database that are marked as spam. It also generates a blacklist for your .htaccess file to block those spammers from your website entirely, thus taking load off the server. You will need [...]]]></description>
			<content:encoded><![CDATA[<div><div style="float: left; margin: 0 0px 5px 0;"><g:plusone size="medium" href="http://ten-fingers-and-a-brain.com/wordpress-plugins/top-spammers/"></g:plusone></div><div style="float: left; margin: 0 30px 5px 0;"><a class="FlattrButton" style="display:none;" title="Block Top Spammers" rev="flattr;uid:tfnab;category:text;language:en_GB;button:compact;" href="http://ten-fingers-and-a-brain.com/wordpress-plugins/top-spammers/">Block Top Spammers is a WordPress Plugin. Block Top Spammers displays a list of your top spammers' IP addresses, based on all comments in your database that are marked as spam. It also generates a blacklist for your .htaccess file to block those spammers from your website entirely, thus taking load off the server. You will need another plugin (like Akismet) to identify the spam. Top Spammers requires PHP 5 Top Spammers is hosted on wordpress.org: Installation instructions Download FAQ As with any plugin hosted on wordpress.org you can also get the plugin using subversion: 1</a></div><div style="float: left; margin: 0 15px 5px 0;"><a style="display:none;" href="http://twitter.com/share?url=http%3A%2F%2Ften-fingers-and-a-brain.com%2F2009%2F09%2Fnew-wordpress-plugin-top-spammers-0-3%2F&amp;via=10fnab&amp;text=New%20WordPress%20Plugin%3A%20Top%20Spammers%20%280.3%29&amp;count=horizontal" class="twitter-share-button">Tweet</a></div><div style="float: left; margin: 0 0px 5px 0;"><fb:like href="http://ten-fingers-and-a-brain.com/wordpress-plugins/top-spammers/" layout="button_count"></fb:like></div></div><div style="clear: both;"></div><p>I have written a WordPress Plugin: Top Spammers displays a list of your top spammers’ IP addresses, based on all comments in your database that are marked as spam. It also generates a blacklist for your .htaccess file to block those spammers from your website entirely, thus taking load off the server. You will need another plugin (like <a href="http://akismet.com/">Akismet</a>) to identify the spam.</p>
<p><a title="Download Top Spammers 0.3 (WordPress Plugin, ZIP)" href="http://downloads.wordpress.org/plugin/top-spammers.0.3.zip">Download the latest version</a> (ZIP).</p>
<p>If you have a question about the plugin please go to <a title="Top Spammers (WordPress Plugin)" href="http://ten-fingers-and-a-brain.com/wordpress-plugins/top-spammers/">the plugin&#8217;s homepage</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ten-fingers-and-a-brain.com/2009/09/new-wordpress-plugin-top-spammers-0-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

