<?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>8MediaCentral.com</title>
	<atom:link href="http://8mediacentral.com/developments/feed/" rel="self" type="application/rss+xml" />
	<link>http://8mediacentral.com/developments</link>
	<description>Creative Developments</description>
	<lastBuildDate>Thu, 23 May 2013 12:54:07 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Image Watermarking Tools for WordPress</title>
		<link>http://8mediacentral.com/developments/image-watermarking-tools-for-wordpress/</link>
		<comments>http://8mediacentral.com/developments/image-watermarking-tools-for-wordpress/#comments</comments>
		<pubDate>Thu, 23 May 2013 12:13:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[8MediaCentral.com]]></category>
		<category><![CDATA[copyright]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[watermark]]></category>
		<category><![CDATA[watermarking]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://8mediacentral.com/developments/?p=810</guid>
		<description><![CDATA[<p>One of the best ways to prevent the casual copy and save theft of content is to use watermarking. Applying a watermark to your content identifies it as yours and helps ensure you get the credit if your image is used elsewhere. Manually adding watermarks to your [...]</p><p>The post <a href="http://8mediacentral.com/developments/image-watermarking-tools-for-wordpress/">Image Watermarking Tools for WordPress</a> appeared first on <a href="http://8mediacentral.com/developments">8MediaCentral.com</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>One of the best ways to prevent the casual copy and save theft of content is to use watermarking. Applying a watermark to your content identifies it as yours and helps ensure you get the credit if your image is used elsewhere.</p>
<p>Manually adding watermarks to your image is possible in most image manipulation programs, simply by adding watermark onto the image and saving the result. But if you have to do this for all the images on your site it’s going to take a long time and what if you want to re-watermark the image later?</p>
<p>If you are using WordPress, there are a number of watermarking plugins that automate the process of watermarking images across your site. Most work by processing the images, either at upload time or in a batch, to bind the watermark to the image.</p>
<p>A new approach, adopted by more advanced WordPress watermarking plugins such as WP Image Protect is to apply the watermark dynamically when the image is rendered. This gives you complete control, allowing the watermark to be moved, resized or changed as required.</p>
<p>Due to this dynamic nature, WP Image Protect includes advanced features not possible in other WordPress watermarking plugins such as using the image uploader’s name, date and copyright information in each watermark.</p>
<p>A basic version of WP Image Protect is available from the <a title="Watermark WP Image Protect on the WordPress.org directory" href="http://wordpress.org/plugins/wp-image-protect/" target="_blank">WordPress.org plugin directory</a>, which includes dynamic text watermarking tools for WordPress media. For those looking for even more power and functionality, <a title="WP Image Protect Premium" href="http://8mediacentral.com/developments/wp-image-protect/" target="_blank">WP Image Protect Premium</a> offers advanced WordPress text watermarks, more fonts, images as watermarks for WordPress and hotlink media protection, to prevent direct insertion of images and media on 3rd party sites.</p>
<p>WP Image Protect has already had almost 3,500 downloads and is one of the highest rated image watermarking plugins on the <a title="WP Image Protect Rating" href="http://wordpress.org/support/view/plugin-reviews/wp-image-protect" target="_blank">WordPress directory</a>. More information about the plugin can be found on the WP Image Protect plugin homepage.</p>
<p>The post <a href="http://8mediacentral.com/developments/image-watermarking-tools-for-wordpress/">Image Watermarking Tools for WordPress</a> appeared first on <a href="http://8mediacentral.com/developments">8MediaCentral.com</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://8mediacentral.com/developments/image-watermarking-tools-for-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PicTips V2 Launches</title>
		<link>http://8mediacentral.com/developments/pictips-v2-launches/</link>
		<comments>http://8mediacentral.com/developments/pictips-v2-launches/#comments</comments>
		<pubDate>Wed, 08 May 2013 15:00:26 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://8mediacentral.com/developments/?p=787</guid>
		<description><![CDATA[<p>We are excited to announce that PicTips version 2 launches today. PicTips is a WordPress plugin that allows you to use Images as ToolTips on your content. The result is a visually impressive, informative experience. Version 2 adds a new user interface to add your PicTips and [...]</p><p>The post <a href="http://8mediacentral.com/developments/pictips-v2-launches/">PicTips V2 Launches</a> appeared first on <a href="http://8mediacentral.com/developments">8MediaCentral.com</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>We are excited to announce that PicTips version 2 launches today.</p>
<p>PicTips is a WordPress plugin that allows you to use Images as ToolTips on your content. The result is a visually impressive, informative experience.</p>
<p>Version 2 adds a new user interface to add your PicTips and allows different styles to be used on each tip. At the same time, PicTips style pack one launches, which is an add-on for PicTips featuring 12 new styles for use with PicTips.</p>
<p>PicTips is available now from the <a href="http://wordpress.org/extend/plugins/pictips/" title="PicTips on the WordPress plugin directory">WordPress plugin directory</a>. PicTips style pack one is available now from the <a href="http://shop.8mediacentral.com/shop/pictips-style-pack-one/" title="PicTips style pack one">8MediaCentral online shop</a>. More details can be found on the <a href="http://8mediacentral.com/developments/plugins/pictips/" title="PicTips">PicTips home page</a>.</p>
<p>The post <a href="http://8mediacentral.com/developments/pictips-v2-launches/">PicTips V2 Launches</a> appeared first on <a href="http://8mediacentral.com/developments">8MediaCentral.com</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://8mediacentral.com/developments/pictips-v2-launches/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WP Image Protect WordPress Watermarking Plugin version 1.8 released</title>
		<link>http://8mediacentral.com/developments/wp-image-protect-wordpress-watermarking-plugin-version-1-8-released/</link>
		<comments>http://8mediacentral.com/developments/wp-image-protect-wordpress-watermarking-plugin-version-1-8-released/#comments</comments>
		<pubDate>Sat, 13 Apr 2013 22:16:26 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[8MediaCentral.com]]></category>

		<guid isPermaLink="false">http://8mediacentral.com/developments/?p=766</guid>
		<description><![CDATA[<p>Today WP Image Protect v1.8 is released. An update to the on-the-fly image watermarking WordPress plugin developed by 8MediaCentral, the website developer, specialising in the WordPress platform. Version 1.8 vastly improves compatibility and performance of this top-rated watermarking plugin. Premium users can now also add variable text [...]</p><p>The post <a href="http://8mediacentral.com/developments/wp-image-protect-wordpress-watermarking-plugin-version-1-8-released/">WP Image Protect WordPress Watermarking Plugin version 1.8 released</a> appeared first on <a href="http://8mediacentral.com/developments">8MediaCentral.com</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Today WP Image Protect v1.8 is released. An update to the on-the-fly image watermarking WordPress plugin developed by 8MediaCentral, the website developer, specialising in the WordPress platform.</p>
<p>Version 1.8 vastly improves compatibility and performance of this top-rated watermarking plugin. Premium users can now also add variable text elements to their watermarks, such as the name of the uploader and the upload date, demonstrating the ongoing development of the plugin.</p>
<p>A free, text watermarking version of the plugin is available now from the <a title="WP Image Protect Lite on the WordPress plugin directory" href="http://wordpress.org/extend/plugins/wp-image-protect/">WordPress plugin directory</a>.</p>
<p>Users requiring even more flexibility and power should look at the new version of <a title="WP Image Protect" href="http://8mediacentral.com/developments/wp-image-protect/">WP Image Protect Premium</a>, which offers a wealth of premium features.</p>
<p>The post <a href="http://8mediacentral.com/developments/wp-image-protect-wordpress-watermarking-plugin-version-1-8-released/">WP Image Protect WordPress Watermarking Plugin version 1.8 released</a> appeared first on <a href="http://8mediacentral.com/developments">8MediaCentral.com</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://8mediacentral.com/developments/wp-image-protect-wordpress-watermarking-plugin-version-1-8-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WP Image Protect Watermarking Plugin v1.7 released</title>
		<link>http://8mediacentral.com/developments/wp-image-protect-watermarking-plugin-v1-7-released/</link>
		<comments>http://8mediacentral.com/developments/wp-image-protect-watermarking-plugin-v1-7-released/#comments</comments>
		<pubDate>Sat, 23 Mar 2013 13:03:10 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[8MediaCentral.com]]></category>

		<guid isPermaLink="false">http://8mediacentral.com/developments/?p=537</guid>
		<description><![CDATA[<p>Today WP Image Protect v1.7 lite is released. An update to the on-the-fly image watermarking plugin developed by 8MediaCentral, the website developer, specialising in the WordPress platform. Version 1.7 adds an image scaling feature, allowing watermarks to be scaled to the original image size. The updated plugin [...]</p><p>The post <a href="http://8mediacentral.com/developments/wp-image-protect-watermarking-plugin-v1-7-released/">WP Image Protect Watermarking Plugin v1.7 released</a> appeared first on <a href="http://8mediacentral.com/developments">8MediaCentral.com</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Today WP Image Protect v1.7 lite is released. An update to the on-the-fly image watermarking plugin developed by 8MediaCentral, the website developer, specialising in the WordPress platform.</p>
<p>Version 1.7 adds an image scaling feature, allowing watermarks to be scaled to the original image size.</p>
<p>The updated plugin is available now from the <a title="WP Image Protect Lite on the WordPress plugin directory" href="http://wordpress.org/extend/plugins/wp-image-protect/">WordPress plugin directory</a>.</p>
<p>Users requiring even more flexibility and power should look at the new version of <a title="WP Image Protect" href="http://8mediacentral.com/developments/wp-image-protect/">WP Image Protect Premium</a>, which offers a wealth of premium features.</p>
<p>The post <a href="http://8mediacentral.com/developments/wp-image-protect-watermarking-plugin-v1-7-released/">WP Image Protect Watermarking Plugin v1.7 released</a> appeared first on <a href="http://8mediacentral.com/developments">8MediaCentral.com</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://8mediacentral.com/developments/wp-image-protect-watermarking-plugin-v1-7-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WP Image Protect Watermarking Plugin v1.5 released</title>
		<link>http://8mediacentral.com/developments/wp-image-protect-watermarking-plugin-v1-5-released/</link>
		<comments>http://8mediacentral.com/developments/wp-image-protect-watermarking-plugin-v1-5-released/#comments</comments>
		<pubDate>Mon, 18 Feb 2013 22:22:57 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[8MediaCentral.com]]></category>

		<guid isPermaLink="false">http://8mediacentral.com/developments/?p=526</guid>
		<description><![CDATA[<p>Today WP Image Protect v1.5 lite is released. An update to the on-the-fly image watermarking plugin developed by 8MediaCentral, the website developer, specialising in the WordPress platform. Version 1.5 addresses compatibility with NextGEN gallery and Contact-Form-7, two of the most popular plugins for WordPress. The updated plugin [...]</p><p>The post <a href="http://8mediacentral.com/developments/wp-image-protect-watermarking-plugin-v1-5-released/">WP Image Protect Watermarking Plugin v1.5 released</a> appeared first on <a href="http://8mediacentral.com/developments">8MediaCentral.com</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Today WP Image Protect v1.5 lite is released. An update to the on-the-fly image watermarking plugin developed by 8MediaCentral, the website developer, specialising in the WordPress platform. </p>
<p>Version 1.5 addresses compatibility with NextGEN gallery and Contact-Form-7, two of the most popular plugins for WordPress.</p>
<p>The updated plugin is available now from the WordPress <a href="http://wordpress.org/extend/plugins/wp-image-protect/" title="Image Protect Lite v1.5 on the WordPress.org plugin directory" target="_blank">plugin directory</a></p>
<p>Users requiring even more flexibility and power should look at <a href="http://8mediacentral.com/developments/wp-image-protect/" title="WP Image Protect">WP Image Protect Premium</a>, which offers a wealth of premium features.</p>
<p><a href="http://8mediacentral.com/developments/wp-content/uploads/2013/02/Image-Protect-Lite-v1.5-launched.jpg" rel="wp-prettyPhoto[526]"><img src="http://8mediacentral.com/developments/wp-content/uploads/2013/02/Image-Protect-Lite-v1.5-launched.jpg" alt="" title="Image Protect Lite v1.5 launched" width="200" height="125" class="alignnone size-full wp-image-528" /></a></p>
<p>The post <a href="http://8mediacentral.com/developments/wp-image-protect-watermarking-plugin-v1-5-released/">WP Image Protect Watermarking Plugin v1.5 released</a> appeared first on <a href="http://8mediacentral.com/developments">8MediaCentral.com</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://8mediacentral.com/developments/wp-image-protect-watermarking-plugin-v1-5-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PicTips WordPress plugin launches</title>
		<link>http://8mediacentral.com/developments/pictips-launche/</link>
		<comments>http://8mediacentral.com/developments/pictips-launche/#comments</comments>
		<pubDate>Sat, 16 Feb 2013 00:21:08 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[8MediaCentral.com]]></category>

		<guid isPermaLink="false">http://8mediacentral.com/developments/?p=501</guid>
		<description><![CDATA[<p>Bring your site to life with PicTips! &#160; Display images when users hover over text. Like Tool Tips, but with pictures. &#160; &#160; Hover over bold the words below to see a live demo. &#160; Our feature sites include   ,  and  &#160; Available now on the [...]</p><p>The post <a href="http://8mediacentral.com/developments/pictips-launche/">PicTips WordPress plugin launches</a> appeared first on <a href="http://8mediacentral.com/developments">8MediaCentral.com</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Bring your site to life with PicTips!</p>
<p>&nbsp;</p>
<p>Display images when users hover over text. Like Tool Tips, but with pictures.</p>
<p>&nbsp;</p>
<p><a href="http://8mediacentral.com/developments/wp-content/uploads/2013/02/pictips_demo2.png" rel="wp-prettyPhoto[501]"><img class="alignnone size-full wp-image-508" title="pictips_demo2" src="http://8mediacentral.com/developments/wp-content/uploads/2013/02/pictips_demo2.png" alt="" width="471" height="236" /></a></p>
<p>&nbsp;</p>
<p>Hover over bold the words below to see a live demo.</p>
<p>&nbsp;</p>
<p>Our feature sites include  <strong><div class ="pictips" id = "pictip519eec075815d" data-id= "519eec075815d" data-src = "http://8mediacentral.com/developments/wp-content/themes/u-design/scripts/timthumb.php?src=http://8mediacentral.com/developments/wp-content/uploads/2013/01/OliSansomATV-Logo-Scaled-fit.png&amp;w=248&amp;h=148&amp;zc=1&amp;q=90" data-style = "normalstyle" title = "OliSansomATV.com PicTip" width="100">OliSansomATV.com</div></strong> , <strong><div class ="pictips" id = "pictip519eec0759577" data-id= "519eec0759577" data-src = "http://8mediacentral.com/developments/wp-content/themes/u-design/scripts/timthumb.php?src=http://8mediacentral.com/developments/wp-content/uploads/2013/01/knitweardelight.png&amp;w=248&amp;h=148&amp;zc=1&amp;q=90" data-style = "normalstyle" title = "KnitwearDelight.com PicTip" width="100">KnitwearDelight.com</div></strong> and<strong> <div class ="pictips" id = "pictip519eec0759609" data-id= "519eec0759609" data-src = "http://8mediacentral.com/developments/wp-content/themes/u-design/scripts/timthumb.php?src=http://8mediacentral.com/developments/wp-content/uploads/2013/01/ChaseRacingLogo.png&amp;w=248&amp;h=148&amp;zc=1&amp;q=90" data-style = "normalstyle" title = "ChaseRacing.co.uk PicTip" width="100">ChaseRacing.co.uk</div></strong></p>
<p>&nbsp;</p>
<p><a href="http://wordpress.org/extend/plugins/pictips/" title="PicTips on the WordPress.org plugin directory" target="_blank">Available now on the WordPress plugin directory </a></p>
<p>The post <a href="http://8mediacentral.com/developments/pictips-launche/">PicTips WordPress plugin launches</a> appeared first on <a href="http://8mediacentral.com/developments">8MediaCentral.com</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://8mediacentral.com/developments/pictips-launche/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Domination continues in 2013</title>
		<link>http://8mediacentral.com/developments/wordpress-domination-continues-in-2013/</link>
		<comments>http://8mediacentral.com/developments/wordpress-domination-continues-in-2013/#comments</comments>
		<pubDate>Sat, 05 Jan 2013 18:05:46 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[8MediaCentral.com]]></category>
		<category><![CDATA[2013]]></category>
		<category><![CDATA[domination]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://8mediacentral.com/developments/?p=481</guid>
		<description><![CDATA[<p>According to W3 Techs WordPress powers 17.4% of the websites on the Internet. Total market share of the Content Management space is 54.7%*. It&#8217;s not hard to see why &#8211; WordPress is what a content management system should be. Starting life as a blogging platform, WordPress puts [...]</p><p>The post <a href="http://8mediacentral.com/developments/wordpress-domination-continues-in-2013/">WordPress Domination continues in 2013</a> appeared first on <a href="http://8mediacentral.com/developments">8MediaCentral.com</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>According to <a title="W3 Techs" href="http://w3techs.com/" target="_blank">W3 Techs</a> WordPress powers 17.4% of the websites on the Internet. Total market share of the Content Management space is 54.7%*.</p>
<p>It&#8217;s not hard to see why &#8211; WordPress is what a content management system should be. Starting life as a blogging platform, WordPress puts the content first and separates the core components of website delivery &#8211; content, look and feel, distribution and user interaction into logical sections. With the release of <a title="WordPress 3.5" href="http://wordpress.org/news/2012/12/elvin/" target="_blank">WordPress 3.5</a> last month, the WordPress developers have continued to build on the platform, focussing on media and the administration UI.</p>
<p>WordPress has a fantastic ecosystem &#8211; Themes and Plugins allows for complete control over the look and functionality of the software respectively. Want to make your site look great on mobile devices as it does on retina displays? <a title="Responsive Theme" href="http://wordpress.org/extend/themes/responsive" target="_blank">No problem</a>. Want to turn your WordPress site into a fully fledged e-commerce solution? <a title="WooCommerce" href="http://wordpress.org/extend/plugins/woocommerce/" target="_blank">Why not</a>.</p>
<p>For developers, too, WordPress is logically organised, well documented and provides a flexible API. While some of the nuances can catch folk out from time-to-time, the learning curve is fairly shallow and the filters and action hooks system works well.</p>
<p>With WordPress 3.3 downloaded over<a title="WMPU org WP statistics" href="http://wpmu.org/amazing-wordpress-statistics/" target="_blank">3.3 million times</a> and 3.5 already downloaded <a title="WP Download Counter" href="http://wordpress.org/download/counter/" target="_blank">4 million times</a> in just under a month, it&#8217;s clear that WordPress continues it&#8217;s dominance of Content Management in 2013.</p>
<p>* Figures correct at time of publication</p>
<p>The post <a href="http://8mediacentral.com/developments/wordpress-domination-continues-in-2013/">WordPress Domination continues in 2013</a> appeared first on <a href="http://8mediacentral.com/developments">8MediaCentral.com</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://8mediacentral.com/developments/wordpress-domination-continues-in-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Display Custom Messages in WordPress Plugins</title>
		<link>http://8mediacentral.com/developments/display-custom-messages-in-wordpress-plugins/</link>
		<comments>http://8mediacentral.com/developments/display-custom-messages-in-wordpress-plugins/#comments</comments>
		<pubDate>Wed, 02 Jan 2013 21:04:02 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[8MediaCentral.com]]></category>
		<category><![CDATA[Dev Tips]]></category>
		<category><![CDATA[admin_notices]]></category>
		<category><![CDATA[cURL]]></category>
		<category><![CDATA[strip tags]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://8mediacentral.com/developments/?p=317</guid>
		<description><![CDATA[<p>In the process of creating WP Image Protect Premium, I had the opportunity to explore the notification actions and filters within WordPress. WordPress provides a nice API hook for displaying messages in the administration menu. add_action('admin_notices', array( $my_messaging_class, 'my_function')); For my purposes I wanted to display ‘news’ [...]</p><p>The post <a href="http://8mediacentral.com/developments/display-custom-messages-in-wordpress-plugins/">Display Custom Messages in WordPress Plugins</a> appeared first on <a href="http://8mediacentral.com/developments">8MediaCentral.com</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>In the process of creating WP Image Protect Premium, I had the opportunity to explore the notification actions and filters within WordPress.</p>
<p>WordPress provides a nice API hook for displaying messages in the administration menu.</p>
<div>
<pre class="html">add_action('admin_notices', array( $my_messaging_class, 'my_function'));</pre>
</div>
<p>For my purposes I wanted to display ‘news’ for the plugin I’ve been developing, which would read html content from a 3<sup>rd</sup> party site – the plugin’s news page. This would be displayed on the administration dashboard and plugin menus. The user would be able to dismiss the item. Unlike an RSS feed, there is only intended to be one item at a time. Furthermore, I wanted to allow the system to display different messages based on things like the version of the plugin that was being used, the url of the site the plugin was used on etc.</p>
<p>I have split the task into three parts:</p>
<ul>
<li>Displaying an administration message on the plugin page which takes HTML as input</li>
<li>Reading HTML content from an external site</li>
<li>Dismissing messages</li>
</ul>
<p>&nbsp;</p>
<p><strong>Displaying HTML admin messages</strong>, this is relatively simple, first start with something like this:</p>
<div>
<pre class="html">class wp_html_admin_messages{
//constructor

function wp_html_admin_messages(){
if(function_exists('add_action')){
add_action('admin_notices', array( $this, 'display_admin_message'));
}
}

function display_admin_message(){
//do display admin message function here
}

}

$wp_html_admin_messages = new wp_html_admin_messages();</pre>
</div>
<p>So, what’s going on here? Firstly, I’m putting everything into it’s own class, which is best practice with WordPress plugin functions, as only the class name needs to be unique and not every function. The action hook is added when the plugin is activated using the add_action function. Not the use of the conditional <code>if(function_exists(function_name))</code> to ensure that WordPress has loaded correctly and the add_action function is available.</p>
<p>Next, I want the plugin to actually display something on the relevant pages, so I’ll rig up some dummy HTML to pass and test it out.</p>
<p>Fleshing out the display_admin_message and adding the functionality, results in the following:</p>
<div>
<pre class="html">function display_admin_message(){

global $pagenow;

if($pagenow == 'plugins.php' or $pagenow == 'index.php'){
$this-&gt;display_html_message();
}

}

function display_html_message(){
printf('%s', $this-&gt;dummy_html_output());
}

function dummy_html_output(){
return "&lt;a href = 'http://wordpress.org' title='WordPress.org site'&gt;WordPress Blog Tool&lt;/a&gt;";
}</pre>
</div>
<p>&nbsp;</p>
<p>To prove it works, here is the message on the plugins page of the site. Note how I have filtered what pages the message is displayed on by using the $pagenow global variable. The printf function is used to pre-format the string, we also need to consider Cross Site Scripting (XSS) concerns at some point by using suitable escape functions.</p>
<div id="attachment_324" class="wp-caption alignnone" style="width: 286px"><a href="http://8mediacentral.com/developments/wp-content/uploads/2013/01/html-output.png" rel="wp-prettyPhoto[317]"><img class="size-full wp-image-324" title="html output" src="http://8mediacentral.com/developments/wp-content/uploads/2013/01/html-output.png" alt="" width="276" height="145" /></a><p class="wp-caption-text">HTML output on Plugins page</p></div>
<p>Next, I want to be able to get that HTML, not from a function but from the 3<sup>rd</sup> party plugin development site. This way, I can provide the user with important notes and news about the plugin, and this can be updated dynamically without having to actively push new code to the plugin.</p>
<p>To test this, I’m going to move the dummy_html_output function into its own file on the external (admin messages) server, thus:</p>
<div>
<pre class="html">class admin_messages_server{

//constructor

function admin_messages_server(){
$this-&gt;display_html_message();
}

function display_html_message(){
printf('%s', $this-&gt;dummy_html_output());
}

function dummy_html_output(){
return "&lt;a href = 'http://wordpress.org' title='WordPress.org site'&gt;WordPress Blog Tool&lt;/a&gt;";
}

}

$admin_messages_server_init = new admin_messages_server();</pre>
</div>
<p>&nbsp;</p>
<p>Done, and here it is on the admin messages server.</p>
<div id="attachment_326" class="wp-caption alignnone" style="width: 296px"><a href="http://8mediacentral.com/developments/wp-content/uploads/2013/01/admin-msg-server.png" rel="wp-prettyPhoto[317]"><img class="size-full wp-image-326" title="admin msg server" src="http://8mediacentral.com/developments/wp-content/uploads/2013/01/admin-msg-server.png" alt="" width="286" height="113" /></a><p class="wp-caption-text">On the messaging server</p></div>
<p>OK, so what next? Well, the plugin needs to be able to <strong>retrieve that message from the remote site</strong>. I can do that using cURL, a tool for transferring data with URL syntax. Unfortunately cURL can be problematic as it needs to be enabled on web servers, and may not be available. Once again, WordPress provides a nice API called WP_Http, which replaces the deprecated Snoopy functions. This works on servers which don’t necessarily have the cURL function available and lets WordPress take care of the request and response mechanism.</p>
<p>The dummy html output function can then be replaced with a real function, which actually sends a request to the admin messages server</p>
<div>
<pre class="html">function get_html_output(){
$result_body = "";
if(function_exists('wp_remote_get')){
$url_query = "http://8mediacentral.com/admin_messages/admin-messages-server.php?version=3.4";
$result = wp_remote_get($url_query);
if($result['response']['code']==200){
$result_body = $result['body'];
}

}

return $result_body;

}</pre>
</div>
<p>&nbsp;</p>
<p>The beauty of this technique is that I can pass parameters to the admin messages server by modifying the $url_query parameter. In this example I am passing the version number, the idea being that the message server would let the user know if a new version of the plugin was available.  Note that I also check the response is valid by ensuring the result code is 200, to ensure the request has succeeded.</p>
<p>An important caveat to this is that I need to consider all the parameters I want before I finalise the plugin, as while I will be able to control what html is returned dynamically, I won’t be able to alter the parameters that are sent once the plugin is in the wild.</p>
<p>Finally, I want the user to be able to <strong>dismiss the admin messages</strong>, as it could get pretty annoying seeing that admin message all the time. There are loads of different ways of doing this, but in  this example I’m just going to have plugin deactivate when the dismiss message is sent.  This means adding another action to listen out for the disable_wp_html_admin_messages parameter to our wp_html_admin_messages class, thus.</p>
<p>&nbsp;</p>
<div>
<pre class="html">
//dismiss the message and deactivate the plugin if set

function dismiss_wp_html_admin_messages() {
if ( isset( $_GET['dismiss-wp-html-admin-messages'] ) and 'dismiss' == $_GET['dismiss-wp-html-admin-messages']  ) {
require_once ABSPATH . 'wp-admin/includes/plugin.php';
//deactivate
if(is_plugin_active(plugin_basename(__FILE__))){
deactivate_plugins(plugin_basename(__FILE__));

wp_safe_redirect( admin_url() . 'plugins.php?deactivate=true&amp;plugin_status=all&amp;paged=1&amp;s=' );
exit;
}

}

}</pre>
</div>
<p>&nbsp;</p>
<p>The following line of code is added to the class constructor function to ensure it listens for the dismiss-wp-html-admin-messages parameter</p>
<div>
<pre class="html">add_action( 'admin_init',   array( $this, 'dismiss_wp_html_admin_messages'));</pre>
</div>
<p>To tie this all together and make this work, I need to add the following to the HTML response on the messages server, so when the user clicks on the ‘Dismiss Admin Messages’ link, the messages are no longer displayed.</p>
<div>
<pre class="html">&lt;a href = '?dismiss-wp-html-admin-messages=dismiss' title = 'dismiss messages'&gt;Dismiss Admin Messages&lt;/a&gt;</pre>
</div>
<p>&nbsp;</p>
<p><strong>Final thoughts.</strong></p>
<p>This has been a simple introduction to handling admin messages for WordPress. We have looked at how admin message hook into the WordPress API, a mechanism for retrieving messages from a remote url and a simple way of dismissing messages.</p>
<p>You’ll probably want to style the html response so it looks nice, which is done in the WP Image Protect Install Check Plugin.</p>
<p>Security is a big concern here; currently what is being returned is raw HTML, which I would not recommend on a live instance due to the potential for the messages server to be compromised and malicious code sent to the plugin. For the actual messaging system I plan to use XML which is parsed by the plugin before being rendered using something like the strip_tags php function. A whitelist of tags will be used to reduce the possibility of XSS attacks.</p>
<p>Lastly, in this example, dismissing the messages turns the plugin off entirely. If there is an important message and the user has previously dismissed a trivial message, this will not be seen. A better approach is to implement a mechanism whereby the messages are given unique identifiers and individual messages can be dismissed and by incrementing the ID number, the user will be shown the latest message.</p>
<p>The post <a href="http://8mediacentral.com/developments/display-custom-messages-in-wordpress-plugins/">Display Custom Messages in WordPress Plugins</a> appeared first on <a href="http://8mediacentral.com/developments">8MediaCentral.com</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://8mediacentral.com/developments/display-custom-messages-in-wordpress-plugins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OliSansomATV.com</title>
		<link>http://8mediacentral.com/developments/olisansomatv-com/</link>
		<comments>http://8mediacentral.com/developments/olisansomatv-com/#comments</comments>
		<pubDate>Wed, 02 Jan 2013 10:16:40 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[motocross]]></category>
		<category><![CDATA[quad]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://8mediacentral.com/developments/?p=290</guid>
		<description><![CDATA[<p>Custom Website</p><p>The post <a href="http://8mediacentral.com/developments/olisansomatv-com/">OliSansomATV.com</a> appeared first on <a href="http://8mediacentral.com/developments">8MediaCentral.com</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Custom Website</p>

<a rel='wp-prettyPhoto[gallery]' href='http://8mediacentral.com/developments/olisansomatv-com/olisansomatvmain/' title='OliSansomATV Main'><img width="150" height="150" src="http://8mediacentral.com/developments/wp-content/uploads/2013/01/OliSansomATVMain-150x150.png" class="attachment-thumbnail" alt="The main front page - complete with slider" /></a>
<a rel='wp-prettyPhoto[gallery]' href='http://8mediacentral.com/developments/olisansomatv-com/olisansomatvvid/' title='OliSansomATV Videos'><img width="150" height="150" src="http://8mediacentral.com/developments/wp-content/uploads/2013/01/OliSansomATVVid-150x150.png" class="attachment-thumbnail" alt="YouTube video - embedded into the site" /></a>
<a rel='wp-prettyPhoto[gallery]' href='http://8mediacentral.com/developments/olisansomatv-com/olisansomatvgallery/' title='OliSansomATV Gallery'><img width="150" height="150" src="http://8mediacentral.com/developments/wp-content/uploads/2013/01/OliSansomATVGallery-150x150.png" class="attachment-thumbnail" alt="The gallery page" /></a>

<p>The post <a href="http://8mediacentral.com/developments/olisansomatv-com/">OliSansomATV.com</a> appeared first on <a href="http://8mediacentral.com/developments">8MediaCentral.com</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://8mediacentral.com/developments/olisansomatv-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>KnitwearDelight.com</title>
		<link>http://8mediacentral.com/developments/knitwear-delight-site/</link>
		<comments>http://8mediacentral.com/developments/knitwear-delight-site/#comments</comments>
		<pubDate>Wed, 02 Jan 2013 08:28:04 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[8MediaCentral]]></category>
		<category><![CDATA[eCommerce]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[knitwear]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://8mediacentral.com/developments/?p=258</guid>
		<description><![CDATA[<p>Knitwear Delight</p><p>The post <a href="http://8mediacentral.com/developments/knitwear-delight-site/">KnitwearDelight.com</a> appeared first on <a href="http://8mediacentral.com/developments">8MediaCentral.com</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Knitwear Delight</p>

<a rel='wp-prettyPhoto[gallery]' href='http://8mediacentral.com/developments/knitwear-delight-site/kwdadminmenu/' title='Knitwear Delight - Administration Menu'><img width="150" height="150" src="http://8mediacentral.com/developments/wp-content/uploads/2013/01/KWDAdminMenu-150x150.png" class="attachment-thumbnail" alt="An easy to use Administration Menu allows the stores owners to monitor and control stock, orders and customers" /></a>
<a rel='wp-prettyPhoto[gallery]' href='http://8mediacentral.com/developments/knitwear-delight-site/kwdfbshop/' title='Knitwear Delight - Facebook Shop'><img width="150" height="150" src="http://8mediacentral.com/developments/wp-content/uploads/2013/01/KWDFBShop-150x150.png" class="attachment-thumbnail" alt="The brief included integration with Facebook - customers can purchase directly through Facebook." /></a>
<a rel='wp-prettyPhoto[gallery]' href='http://8mediacentral.com/developments/knitwear-delight-site/kwdmainpage/' title='Knitwear Delight - Main Page'><img width="150" height="150" src="http://8mediacentral.com/developments/wp-content/uploads/2013/01/KWDMainPage-150x150.png" class="attachment-thumbnail" alt="The main page, with the most recent blog post, featured and recent items" /></a>
<a rel='wp-prettyPhoto[gallery]' href='http://8mediacentral.com/developments/knitwear-delight-site/kwdproduct/' title='Knitwear Delight - Product View'><img width="150" height="150" src="http://8mediacentral.com/developments/wp-content/uploads/2013/01/KWDProduct-150x150.png" class="attachment-thumbnail" alt="Details are available for each product, as well as photographs from various angles" /></a>
<a rel='wp-prettyPhoto[gallery]' href='http://8mediacentral.com/developments/knitwear-delight-site/kwdsearch/' title='Knitwear Delight - Search Results'><img width="150" height="150" src="http://8mediacentral.com/developments/wp-content/uploads/2013/01/KWDSearch-150x150.png" class="attachment-thumbnail" alt="Customers can search the online store" /></a>

<p>The post <a href="http://8mediacentral.com/developments/knitwear-delight-site/">KnitwearDelight.com</a> appeared first on <a href="http://8mediacentral.com/developments">8MediaCentral.com</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://8mediacentral.com/developments/knitwear-delight-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
