<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0"><channel><title>WP TOY</title> <link>http://wptoy.com</link> <description /> <lastBuildDate>Fri, 09 Mar 2012 02:45:08 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/wptoy" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="wptoy" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><title>Book Review: WordPress MU 2.8 Beginners Guide</title><link>http://wptoy.com/books/book-review-wordpress-mu-2-8-beginners-guide/</link> <comments>http://wptoy.com/books/book-review-wordpress-mu-2-8-beginners-guide/#comments</comments> <pubDate>Tue, 15 Dec 2009 16:04:31 +0000</pubDate> <dc:creator>Stefan Vervoort</dc:creator> <category><![CDATA[Books]]></category><guid isPermaLink="false">http://wptoy.com/?p=531</guid> <description><![CDATA[<p>A few weeks ago, <a href="http://packtpub.com">Packt Publishing</a>, the publisher of many web-related books, contacted me. They had just released a new book on <a href="http://www.packtpub.com/wordpress-mu-2-8-beginners-guide?utm_source=wptoy.com&#38;utm_medium=bookrev&#38;utm_content=blog&#38;utm_campaign=mdb_001843">WordPress MU 2.8</a> and they asked for a book review.</p><p>I guessed it would be a pretty &#187;</p>]]></description> <content:encoded><![CDATA[<p>A few weeks ago, <a href="http://packtpub.com">Packt Publishing</a>, the publisher of many web-related books, contacted me. They had just released a new book on <a href="http://www.packtpub.com/wordpress-mu-2-8-beginners-guide?utm_source=wptoy.com&amp;utm_medium=bookrev&amp;utm_content=blog&amp;utm_campaign=mdb_001843">WordPress MU 2.8</a> and they asked for a book review.</p><p>I guessed it would be a pretty interesting book for the WordPress enthusiasts on WP Toy, so I agreed on the review. They send over the book and I start reading.</p><h2>WordPress MU 2.8 Beginners Guide</h2><p>This beginners guide will lead you through the process of building a WordPress MU community. Lesley A. Harrison, the author of the book, teach you everything you need to know about a WordPress MU website and how to build the website.</p><p>Let us talk about different aspects of the book below:</p><h2>The Cover</h2><p><img class="alignnone" title="Book " src="https://www.packtpub.com/images/full/1847196543.jpg" alt="" width="251" height="309" /></p><p>The cover looks alright, graphically not very outstanding, yet descriptive and easy to understand what the book is about. Packt publish all their WordPress related books in the same cover style. I have the WordPress plugin development; beginners guide lying in my book library too, and it looks almost identically.</p><h2>The Content</h2><p>The cover preached “Learn by doing: less theory, more results”, and that is absolutely true.   Everything the author is implanting in the WordPress MU site has code examples, followed with screenshots with the changes. That way you know exactly what kind of code did what changes.</p><p>After the code, a smart “What just happened?” chapter follows up, explaining the code and screenshots. Really a less theory, more results approach, which works pretty well in this book. Everything is easy to understand and clear.</p><h2>Book Design</h2><p><img class="size-full wp-image-534 alignnone" title="wpmu" src="http://wptoy.com/wp-content/uploads/2009/12/wpmu.jpg" alt="wpmu" width="401" height="254" /></p><p>The book design is where progress can be achieved. The book is printed in black and white (I guess to keep the price low), but that makes it a little bit boring. The typography is very basic. In my opinion, code snippets that have colors (just like dreamweaver’s color syntax) are much easier to understand and make the content less hard to read. With a better book design, I think it would be even easier to read this book.</p><h2>Conclusion</h2><p>The strong point of this book is the content. The content is written excellent, easy to follow and everything is illustrated with examples and screenshots. The design is somewhat different, as the book is a little bit boring and standard, there can be added a lot more color, typography and details to spice the book up.</p><p>In my opinion, when you are developing a WordPress MU site or if you are planning to do so, this book is a must. You will get information on how to set up everything from start to finish in a “less theory, more results” way.</p><p><a href="http://www.packtpub.com/wordpress-mu-2-8-beginners-guide?utm_source=wptoy.com&amp;utm_medium=bookrev&amp;utm_content=blog&amp;utm_campaign=mdb_001843">Book Details &amp; Ordering over at PacktPub.com</a> (<em>no affiliation link!</em>)</p> ]]></content:encoded> <wfw:commentRss>http://wptoy.com/books/book-review-wordpress-mu-2-8-beginners-guide/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>List all Hooked WordPress Functions</title><link>http://wptoy.com/community/list-all-hooked-wordpress-functions/</link> <comments>http://wptoy.com/community/list-all-hooked-wordpress-functions/#comments</comments> <pubDate>Wed, 24 Jun 2009 16:24:35 +0000</pubDate> <dc:creator>Stefan Vervoort</dc:creator> <category><![CDATA[Community]]></category><guid isPermaLink="false">http://wptoy.com/?p=520</guid> <description><![CDATA[<p><a href="http://www.wprecipes.com/">WPRecipes</a> show up with another nice and simple function. With this new function your page will print exactly all hooked WordPress functions.</p><p>This is very handy when you are developing your new WordPress theme. <a href="http://www.wprecipes.com/list-all-hooked-wordpress-functions">Check the release post</a> for this &#187;</p>]]></description> <content:encoded><![CDATA[<p><a href="http://www.wprecipes.com/">WPRecipes</a> show up with another nice and simple function. With this new function your page will print exactly all hooked WordPress functions.</p><p>This is very handy when you are developing your new WordPress theme. <a href="http://www.wprecipes.com/list-all-hooked-wordpress-functions">Check the release post</a> for this great and inventive piece of code.</p> ]]></content:encoded> <wfw:commentRss>http://wptoy.com/community/list-all-hooked-wordpress-functions/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>WordPress 2.8.1 Beta 1 Released</title><link>http://wptoy.com/news/wordpress-2-8-1-beta-1-released/</link> <comments>http://wptoy.com/news/wordpress-2-8-1-beta-1-released/#comments</comments> <pubDate>Wed, 24 Jun 2009 16:19:32 +0000</pubDate> <dc:creator>Stefan Vervoort</dc:creator> <category><![CDATA[News]]></category><guid isPermaLink="false">http://wptoy.com/?p=518</guid> <description><![CDATA[<p>After the WordPress 2.8 release, the users have found some bugs and the developers squashed them right away. That&#8217;s why they have already released the 2.8.1 BETA 1 version.</p><p>To help the developers team even more, please <a href="http://core.trac.wordpress.org/query?status=closed&#38;group=resolution&#38;order=priority&#38;milestone=2.8.1&#38;resolution=fixed">tell them</a> all &#187;</p>]]></description> <content:encoded><![CDATA[<p>After the WordPress 2.8 release, the users have found some bugs and the developers squashed them right away. That&#8217;s why they have already released the 2.8.1 BETA 1 version.</p><p>To help the developers team even more, please <a href="http://core.trac.wordpress.org/query?status=closed&amp;group=resolution&amp;order=priority&amp;milestone=2.8.1&amp;resolution=fixed">tell them</a> all about the bugs you have found in the 2.8.1 BETA 1 version. Let&#8217;s help.</p> ]]></content:encoded> <wfw:commentRss>http://wptoy.com/news/wordpress-2-8-1-beta-1-released/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>WPazo Launched – The Best WordPress Links</title><link>http://wptoy.com/community/wpazo-launched-the-best-wordpress-links/</link> <comments>http://wptoy.com/community/wpazo-launched-the-best-wordpress-links/#comments</comments> <pubDate>Thu, 14 May 2009 22:33:54 +0000</pubDate> <dc:creator>Stefan Vervoort</dc:creator> <category><![CDATA[Community]]></category><guid isPermaLink="false">http://wptoy.com/?p=503</guid> <description><![CDATA[<p>I guess you all know Ian Steward, right? For those who don&#8217;t know him, he&#8217;s the man behind <a href="http://themeshaper.com/thematic/">Thematic</a>, a powerful WordPress theme framework. Just recently, he has launched a new link blog called <a href="http://wpazo.com/">pwazo</a>.</p><p>pwazo is a &#187;</p>]]></description> <content:encoded><![CDATA[<p>I guess you all know Ian Steward, right? For those who don&#8217;t know him, he&#8217;s the man behind <a href="http://themeshaper.com/thematic/">Thematic</a>, a powerful WordPress theme framework. Just recently, he has launched a new link blog called <a href="http://wpazo.com/">pwazo</a>.</p><p>pwazo is a place for the best WordPress stuff. You can find links to all the best WordPress tutorials, articles, themes, plugins, resources, interviews without all the hassle around it. Just plain and simple: the best you can get.</p><p>To give you a thought on what pwazo means:</p><blockquote><p><strong>w•pazo</strong> | wuh PAW zo | <em>verb</em> <strong>1</strong> to hit something or someone—esp. over the head—with the power of WordPress. <em>noun</em> <strong>2</strong> the best WordPress stuff. <strong>3</strong> a blog that hits you over the head with the good links to all the best WordPress stuff.</p></blockquote><p><a href="http://wpazo.com/">Get yourself over there</a> and subscribe to the feed. You&#8217;ll never miss a single item again!</p> ]]></content:encoded> <wfw:commentRss>http://wptoy.com/community/wpazo-launched-the-best-wordpress-links/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>WordPress Plugin Compatibility Checker</title><link>http://wptoy.com/resources/wordpress-plugin-compatibility-checker/</link> <comments>http://wptoy.com/resources/wordpress-plugin-compatibility-checker/#comments</comments> <pubDate>Thu, 14 May 2009 22:14:28 +0000</pubDate> <dc:creator>Stefan Vervoort</dc:creator> <category><![CDATA[Resources]]></category><guid isPermaLink="false">http://wptoy.com/?p=495</guid> <description><![CDATA[<p>The <a href="http://plugincheck.bravenewcode.com/">WordPress Plugin Compatibility Check</a> is a tool developed by <a href="http://www.bravenewcode.com/">BraveNewCode</a> to give you the possibility to see which plugins are up-to-date and compatible with the latest version of WordPress.</p><p><strong>Up to which version of WordPress is your plugin supported? </strong>&#187;</p>]]></description> <content:encoded><![CDATA[<p>The <a href="http://plugincheck.bravenewcode.com/">WordPress Plugin Compatibility Check</a> is a tool developed by <a href="http://www.bravenewcode.com/">BraveNewCode</a> to give you the possibility to see which plugins are up-to-date and compatible with the latest version of WordPress.</p><p><strong>Up to which version of WordPress is your plugin supported? Is the plugin PHP 5 only? Does this plugin uses your MySQL database?</strong></p><p>The WP Plugin Compatibility Check have the answers to questions like that, but it does more. For example, you can find what exactly does not work on the latest version of WordPress. That makes it an excellent tool for plugin developers.</p><p>Currently, 4.920 plugins are fully compliant with WordPres 2.7.1, which is a very acceptable number. However, that is only 68% of the plugins available in the WordPress plugin directory. I hope that develops into a larger percentage in the future due initiatives like this.</p><p>For now, <a href="http://plugincheck.bravenewcode.com/">check it out</a> and see if your plugin works on WordPress 2.7.1.</p><hr /> <span style="font-size:.9em;">If you want to learn WordPress to create your own blog site then join our <a href="http://www.test-king.com/exams/JN0-331.htm">JN0-331</a> course and get latest reviews tips and <a href="http://www.test-king.com/exams/642-357.htm">642-357</a> demos on WordPress with our <a href="http://www.test-king.com/exams/646-656.htm">646-656</a> tutorials.</span></p> ]]></content:encoded> <wfw:commentRss>http://wptoy.com/resources/wordpress-plugin-compatibility-checker/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>WordPress Theme Development Check List – PDF Version</title><link>http://wptoy.com/resources/wordpress-theme-development-check-list-pdf-version/</link> <comments>http://wptoy.com/resources/wordpress-theme-development-check-list-pdf-version/#comments</comments> <pubDate>Mon, 04 May 2009 17:52:03 +0000</pubDate> <dc:creator>Stefan Vervoort</dc:creator> <category><![CDATA[Featured]]></category> <category><![CDATA[Resources]]></category><guid isPermaLink="false">http://wptoy.com/?p=477</guid> <description><![CDATA[<p>Back in 2008, I announced the WordPress Theme Development Checklist on DivitoDesign. The Checklist with many small tips, code snippets and checkpoints you usually forget about was a success.</p><p>Today it is time to release an improved official PDF version &#187;</p>]]></description> <content:encoded><![CDATA[<p>Back in 2008, I announced the WordPress Theme Development Checklist on DivitoDesign. The Checklist with many small tips, code snippets and checkpoints you usually forget about was a success.</p><p>Today it is time to release an improved official PDF version of the Checklist for the WordPress crowd. This PDF version is clean and easy to print, which makes it an excellent checklist when you are developing your new WordPress Theme.</p><p><a title="Download WordPress Theme Development Check List" href="http://wptoy.com/download/1"><img title="wordpress-theme-development-checklist" src="http://wptoy.com/wp-content/uploads/2009/05/wordpress-theme-development-checklist.jpg" alt="wordpress-theme-development-checklist" width="416" height="275" /></a></p><p>The Checklist covers the following points:</p><ul><li>General</li><li>Stylesheets</li><li>Browser Compatibility</li><li>Pages</li><li>Styled Everything?</li><li>Standard CSS Classes</li><li>Validate</li><li>WordPress Code</li><li>Blog Elements</li></ul><h2>Download the Check List</h2><p>I suggest you print the WordPress Theme Development Checklist and put it on your wall. And every time you are developing a WordPress theme, you know where to look.</p><ul><li><a href="http://wptoy.com/download/1">Download &#8220;WordPress Theme Development Checklist&#8221;</a></li></ul><hr /> <span style="font-size:.9em;">Want to learn wordpress? Join our online <a href="http://www.test-king.com/exams/SK0-002.htm">SK0-002</a> training program to get best solutions to manage your wordpress. Download <a href="http://www.test-king.com/exams/640-460.htm">640-460</a> tutorials and <a href="http://www.test-king.com/exams/642-415.htm">642-415</a> demos to learn about WP plugins.</span></p> ]]></content:encoded> <wfw:commentRss>http://wptoy.com/resources/wordpress-theme-development-check-list-pdf-version/feed/</wfw:commentRss> <slash:comments>49</slash:comments> </item> <item><title>Jeffro – The WordPress Ninja From the WordPress Tavern</title><link>http://wptoy.com/interviews/jeffro-the-wordpress-ninja-from-wp-tavern/</link> <comments>http://wptoy.com/interviews/jeffro-the-wordpress-ninja-from-wp-tavern/#comments</comments> <pubDate>Wed, 29 Apr 2009 14:03:08 +0000</pubDate> <dc:creator>Stefan Vervoort</dc:creator> <category><![CDATA[Featured]]></category> <category><![CDATA[Interviews]]></category><guid isPermaLink="false">http://wptoy.com/?p=461</guid> <description><![CDATA[<p>A month back, when I started this blog, I wanted to interview a number of people that are very active in the WordPress community. One of the first names that came to mind was Jeffro from <a href="http://www.jeffro2pt0.com/">Jeffro2.0</a>, <a href="http://www.wptavern.com">WP Tavern</a>&#187;</p>]]></description> <content:encoded><![CDATA[<p>A month back, when I started this blog, I wanted to interview a number of people that are very active in the WordPress community. One of the first names that came to mind was Jeffro from <a href="http://www.jeffro2pt0.com/">Jeffro2.0</a>, <a href="http://www.wptavern.com">WP Tavern</a> and the <a href="http://www.wptavern.com/wordpress-weekly">WP Weekly Podcasts</a>.</p><p>I contacted Jeff because I was interested to see how the <a href="http://www.wptavern.com">WP Tavern</a> is evolving into THE WordPress community site. We also had a little chat about the <a href="http://www.wptavern.com/wordpress-weekly">WP Weekly podcasts</a>, which is pretty interesting to read.</p><p><strong>Thank you Jeff for answering these questions for WP TOY!</strong></p><h3>1. You have recently started <a href="http://www.wptavern.com">WP Tavern, a WordPress community site</a>.  How is that going? Is it what you expected it to be?</h3><p>The WordPress Tavern is doing great. So far, it&#8217;s doing much better than  I thought it would. Initially, I didn&#8217;t think it would do that well  because there are already a wide assortment of WordPress centric sites  that exist out on the net. However, the forum as well as the site is  doing great the the audience so far appears to be sticky meaning, they  are diving deep into the site while revisiting a few times a week.</p><h3>2. What did you learn from setting up WP Tavern? Have you made  mistakes you&#8217;d do different if you could start over?</h3><p>I&#8217;ve learned a lot from starting WPTavern, most importantly, how much  hard work it takes to have a good looking design. I initially wanted to  launch the site in the beginning of March which I did but the site was  too dark, and I had too many issues with the theme since I had rehashed  it so many times prior. I think I redesigned the site 2 or 3 times  before I fell on something that worked.</p><p><a href="http://www.wptavern.com/"><img class="alignleft size-full wp-image-466" title="wptavern" src="http://wptoy.com/wp-content/uploads/2009/04/wptavern.jpg" alt="wptavern" width="191" height="64" /></a>When you&#8217;re a one man shop, it  becomes really frustrating to spend all sorts of time on the design of  the site rather than the content. While I could have hired someone to do  the design, I was running a tight ship and I couldn&#8217;t afford a custom  design. So, I settled on Justin Tadlocks Hybrid News theme which I had  been eying ever since he released it. So far, its turned out to be just  the theme I needed.</p><p>Once the design for the site was finished, I then  had to work on the design for the forum but thankfully, I found a forum  skin which matched pretty well with the site design without needing  major changes. I can&#8217;t tell you how relieved I am to work on content  instead of design.</p><h3>3. Could you explain how you prepare your <a href="http://www.wptavern.com/wordpress-weekly">WP Weekly Podcast</a>?</h3><p>People might flip out when I tell them this but in an ideal situation, I  prepare the shownotes for WPWeekly 24 hours in advance. However in most  cases, I prepare the shownotes the day of the show. Sometimes, just a  few hours or an hour prior to the show. The reason I can do this is  because I know what the show is going to be about week in and week out.  It&#8217;s not a different subject each week which requires research.</p><p>I also  have quite a few loyal listeners which at times will bail me out by  calling in so I can turn the show into a roundtable. If I&#8217;m conducting  an interview, I&#8217;ll tap into the WPTavern community to see if they have  any questions they would like me to ask.</p><h3>4. You keep doing the successful WP Weekly podcast pretty intensively  and you publish A LOT about WordPress. You also work at a grocery  during the day. How do you stay motivated in those though work-weeks? Do  you still have time to relax?</h3><p>What a big question. It&#8217;s a challenge no doubt about it. If I had my  way, I would create content centered around WordPress 24 hours a day,  seven days a week. Unfortunately, I have to pay the bills and right now  WPTavern is not allowing that to happen although in the past few weeks,  it&#8217;s made progress. I work the night shift two nights in a row at work  and it makes it very difficult for me to get posts on the site on either  Wednesday or Thursday, couple that with trying to live a normal life and  it&#8217;s a pain in the rear.</p><h3><strong><img class="alignright" title="Jeffro" src="http://www.jeffro2pt0.com/wp-content/uploads/2008/04/jeffchandler.jpg" alt="" width="195" height="260" /></strong></h3><p>However, the future post feature of WordPress  is a godsend. I&#8217;ve only recently taken advantage of this feature of  WordPress and it&#8217;s taken some stress out of my life as I can sit back  and know that in a few hours, a post has been published. During that  time, I can work on other things such as participating in the forum,  participating in the WordPress community or, replying to comments on the  site.</p><p>My ultimate goal is to have WPTavern be my full time job. In terms  of relaxing, it&#8217;s hard because playing games and what have you involves  using my computer which is the same computer I use to generate content.  This means I&#8217;m the PC more than I ought to be and sometimes, this can  cause health problems such as a sore back or signs of carpel tunnel. I&#8217;d  like to spend more time reading but I just haven&#8217;t found a way to work  it into my schedule.</p><h3>5. What are your future plans for WP Weekly and the WP Tavern?</h3><p>My future plans for WPWeekly and WPTavern is to invest some of the  income I make from WPTavern into audio equipment to possibly enhance the  production of the WPWeekly podcast. This includes a soundboard, etc. My  plans for WPTavern is to continue the pace of providing my unique  insight into the happenings within the WordPress community.</p><p>I want to  publish more screencasts instead of doing text only content. Screencasts  offer the unique ability to walk people through something with both  audio and visual context rather than just plain text. I am thinking  about a possible marketplace somewhere down the road or some  consultation services but those are beyond the horizon. For now, I just  want WPTavern.com to continue to be a friendly atmosphere to discuss all  things WordPress.</p> ]]></content:encoded> <wfw:commentRss>http://wptoy.com/interviews/jeffro-the-wordpress-ninja-from-wp-tavern/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Tip: Change Pagination in WordPress Admin Panel</title><link>http://wptoy.com/tips-tricks/tip-change-pagination-in-wordpress-admin-panel/</link> <comments>http://wptoy.com/tips-tricks/tip-change-pagination-in-wordpress-admin-panel/#comments</comments> <pubDate>Sun, 26 Apr 2009 08:23:10 +0000</pubDate> <dc:creator>Stefan Vervoort</dc:creator> <category><![CDATA[Tips & Tricks]]></category><guid isPermaLink="false">http://wptoy.com/?p=456</guid> <description><![CDATA[<p>When I am looking to moderate some comments or simply browse my posts in my WP-admin section, I find it pretty annoying that WordPress only shows 20 items. There are more people that don&#8217;t like this and that&#8217;s why <a href="http://wpengineer.com/change-admin-pagination-on-posts-pages-and-comments/">WP </a>&#187;</p>]]></description> <content:encoded><![CDATA[<p>When I am looking to moderate some comments or simply browse my posts in my WP-admin section, I find it pretty annoying that WordPress only shows 20 items. There are more people that don&#8217;t like this and that&#8217;s why <a href="http://wpengineer.com/change-admin-pagination-on-posts-pages-and-comments/">WP Engineer build a solution</a>.</p><p>In the article, two ways are discussed. The first one features a new feature in WordPress version 2.8. When that version gets released, you can change the number of items to show via an option panel. The other option is to dive into the WordPress admin code and change the default number there.</p><p>Anyway, if you have the same annoying feeling about this as I have, <a href="http://wpengineer.com/change-admin-pagination-on-posts-pages-and-comments/">I suggest you take a look at the article</a> from <a href="http://wpengineer.com/">WP Engineer</a>.</p><hr /> <span style="font-size:.9em;">We offer latest <a href="http://www.test-king.com/exams/642-533.htm">642-533</a> reviews and <a href="http://www.test-king.com/exams/642-691.htm">642-691</a> tutorials to help you with your WP design project. Download <a href="http://www.test-king.com/exams/RH302.htm">RH302</a> demos to learn about WP plugins. </span></p> ]]></content:encoded> <wfw:commentRss>http://wptoy.com/tips-tricks/tip-change-pagination-in-wordpress-admin-panel/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Contact Form 7 Is Safe Again</title><link>http://wptoy.com/plugins/contact-form-7-is-safe-again/</link> <comments>http://wptoy.com/plugins/contact-form-7-is-safe-again/#comments</comments> <pubDate>Sun, 26 Apr 2009 08:15:59 +0000</pubDate> <dc:creator>Stefan Vervoort</dc:creator> <category><![CDATA[Plugins]]></category><guid isPermaLink="false">http://wptoy.com/?p=450</guid> <description><![CDATA[<p>A few days back, Jeffro from <a href="http://www.wptavern.com/">WP Tavern</a> caught Mark Jaquith telling the world that the <strong>Contact Form 7</strong> plugin has <a href="http://twitter.com/markjaquith/status/1568622689">exploited security issues</a>. He highly recommended to uninstall the plugin until he has made an security update.</p><p>I &#187;</p>]]></description> <content:encoded><![CDATA[<p>A few days back, Jeffro from <a href="http://www.wptavern.com/">WP Tavern</a> caught Mark Jaquith telling the world that the <strong>Contact Form 7</strong> plugin has <a href="http://twitter.com/markjaquith/status/1568622689">exploited security issues</a>. He highly recommended to uninstall the plugin until he has made an security update.</p><p>I was pretty shocked and since I use this plugin on this blog, I had uninstalled the contact form for a while.</p><p>Fortunately,  takayukister, the author of the plugin, has anticipated pretty fast and already made a patch available. Just head over to your plugin&#8217;s page and click <em>update</em> to be safe again. Thanks Takayukister.</p><h2>For users of this plugin</h2><p><strong>It is highly recommended to upgrade to the new version of the plugin if you want to be safe from exploitation.</strong></p><p>Oh, and my contact form is up and running again too.</p> ]]></content:encoded> <wfw:commentRss>http://wptoy.com/plugins/contact-form-7-is-safe-again/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Customize the Managing Posts Panel with WordPress Plugin</title><link>http://wptoy.com/plugins/customize-managing-posts-panel-wordpress-plugin/</link> <comments>http://wptoy.com/plugins/customize-managing-posts-panel-wordpress-plugin/#comments</comments> <pubDate>Thu, 23 Apr 2009 13:39:50 +0000</pubDate> <dc:creator>Stefan Vervoort</dc:creator> <category><![CDATA[Featured]]></category> <category><![CDATA[Plugins]]></category><guid isPermaLink="false">http://wptoy.com/?p=437</guid> <description><![CDATA[<p>The WordPress backend is very flexible, and can easily be customized to accommodate a lot of different purposes. In this article by <strong>Vladimir Prelovac</strong>, we shall learn how to customize the <strong>Manage</strong> Panel. We will also explore the possibility &#187;</p>]]></description> <content:encoded><![CDATA[<p>The WordPress backend is very flexible, and can easily be customized to accommodate a lot of different purposes. In this article by <strong>Vladimir Prelovac</strong>, we shall learn how to customize the <strong>Manage</strong> Panel. We will also explore the possibility of turning WordPress into a <strong>Content Management System (CMS)</strong>, using methods provided to us by WordPress. This article is extracted from the &#8220;<a href="http://www.packtpub.com/wordpress-plug-in-development/book" target="_blank">WordPress Plugin Development</a>&#8221; book.</p><p>In this article, you will learn how to:</p><ul><li>Customize the <strong>Manage Page</strong> output</li><li>Use the <strong>error message</strong> class to handle display of errors</li><li>Use built-in <strong>WordPress capabilities</strong> to handle user permissions</li></ul><p>By the end of this article you will learn how WordPress can transform into a CMS.</p><p>{literal}</p><h2>Programming the Manage panel</h2><p>The <strong>Manage Posts</strong> screen can be changed to show extra columns, or remove unwanted columns in the listing.</p><p>Let&#8217;s say that we want to show the post type—<em>Normal</em>, <em>Photo</em>, or <em>Link</em>. Remember the custom field <em>post-type</em> that we added to our posts? We can use it now to differentiate post types.</p><h3>Time for action – Add post type column in the Manage panel</h3><p>We want to add a new column to the <strong>Manage</strong> panel, and we will call it <strong>Type</strong>. The value of the column will represent the post type—<strong>Normal</strong>, <strong>Photo</strong>, or <strong>Link</strong>.</p><ol><li>Expand the <em>admin_menu()</em> function to load the function to handle <strong>Manage Page hooks</strong>:<pre>add_submenu_page('post-new.php', __('Add URL',
$this-&gt;plugin_domain) , __('URL', $this-&gt;plugin_domain) , 1 ,
'add-url', array(&amp;$this, 'display_form') );
// handle Manage page hooks
add_action('load-edit.php', array(&amp;$this, 'handle_load_edit') );
}</pre></li><li>Add the hooks to the columns on the Manage screen:<pre>// Manage page hooks
function handle_load_edit()
{
 // handle Manage screen functions
 add_filter('<span style="font-weight: bold;">manage_posts_columns</span>', array(&amp;$this,
 'handle_posts_columns'));
 add_action('<span style="font-weight: bold;">manage_posts_custom_column</span>', array(&amp;$this,
 'handle_posts_custom_column'), 10, 2);
}</pre></li><li>Then implement the function to add a new Column, remove the author and replace the date with our date format:<pre>// Handle Column header
function handle_posts_columns($columns)
{
 // add 'type' column
 $columns['type'] = __('Type',$this-&gt;plugin_domain);
 return $columns;
}</pre></li><li>For date key replacement, we need an extra function:<pre>function array_change_key_name( $orig, $new, &amp;$array )
{
 foreach ( $array as $k =&gt; $v )
 $return[ ( $k === $orig ) ? $new : $k ] = $v;
 return ( array ) $return;
}</pre></li><li>And finally, insert a function to handle the display of information in that column:<pre>// Handle Type column display
function handle_posts_custom_column($column_name, $id)
{
 // 'type' column handling based on post type
 if( $column_name == 'type' )
 {
 $type=get_post_meta($id, 'post-type', true);
 echo $type ? $type : __('Normal',$this-&gt;plugin_domain);
 }
}</pre></li><li>Don&#8217;t forget to add the <strong>Manage</strong> page to the list of localized pages:<pre>// pages where our plugin needs translation
$local_pages=array('plugins.php', 'post-new.php', 'edit.php');
if (in_array($pagenow, $local_pages))</pre></li></ol><p>As a result, we now have a new column that displays the post type using information from a post custom field.</p><p style="text-align: center;"><img src="http://www.packtpub.com/files/images/wordpresspl_article3_image01.png" alt="" width="420" /></p><h3>What just happened?</h3><p>We have used the <em>load-edit.php</em> action to specify that we want our hooks to be assigned only on the <strong>Manage Posts</strong> page (<em>edit.php</em>). This is similar to the optimization we did when we loaded the localization files.</p><p>The <em>handle_posts_columns</em> is a filter that accepts the columns as a parameter and allows you to insert a new column:</p><pre>function handle_posts_columns($columns)
{
 $columns['type'] = __('Type',$this-&gt;plugin_domain);
 return $columns;
}</pre><p>You are also able to remove a column. This example would remove the <strong>Author</strong> column:</p><pre>unset($columns['author']);</pre><p>To handle information display in that column, we use the <em>handle_posts_custom_column</em> action.</p><p>The action is called for each entry (post), whenever an unknown column is encountered. WordPress passes the name of the column and current post ID as parameters.</p><p>That allows us to extract the post type from a custom field:</p><pre>function handle_posts_custom_column($column_name, $id)
{
 if( $column_name == 'type' )
 {
 $type=get_post_meta($id, 'post-type', true);</pre><p>It also allows us to print it out:</p><pre> echo $type ? $type : __('Normal',$this-&gt;plugin_domain);
 }
}</pre><h2>Modifying an existing column</h2><p>We can also modify an existing column. Let&#8217;s say we want to change the way <strong>Date</strong> is displayed.</p><p>Here are the changes we would make to the code:</p><pre>// Handle Column header
function handle_posts_columns($columns)
{
 // add 'type' column
 $columns['type'] = __('Type',$this-&gt;plugin_domain);
 // remove 'author' column
 //unset($columns['author']);
 // change 'date' column
 $columns = $this-&gt;array_change_key_name( 'date', 'date_new',
 $columns );
 return $columns;
}
// Handle Type column display
function handle_posts_custom_column($column_name, $id)
{
 // 'type' column handling based on post type
 if( $column_name == 'type' )
 {
 $type=get_post_meta($id, 'post-type', true);
 echo $type ? $type : __('Normal',$this-&gt;plugin_domain);
 }
 // new date column handling
 if( $column_name == 'date_new' )
 {
 the_time('Y-m-d &lt;br &gt; g:i:s a');
 }
 }
<span style="font-weight: bold;">function array_change_key_name( $orig, $new, &amp;$array )</span><br style="font-weight: bold;" /><span style="font-weight: bold;">{</span><br style="font-weight: bold;" /><span style="font-weight: bold;"> foreach ( $array as $k =&gt; $v )</span><br style="font-weight: bold;" /><span style="font-weight: bold;"> $return[ ( $k === $orig ) ? $new : $k ] = $v;</span><br style="font-weight: bold;" /><span style="font-weight: bold;"> return ( array ) $return;</span><br style="font-weight: bold;" /><span style="font-weight: bold;">}</span></pre><p>The example replaces the <em>date</em> column with our own <em>date_new</em> column and uses it to display the date with our preferred formatting.</p><h2>Manage screen search filter</h2><p>WordPress allows us to show all the posts by date and category, but what if we want to show all the posts depending on post type?</p><p>No problem! We can add a new filter select box straight to the <strong>Manage</strong> panel.</p><p style="text-align: center;"><img src="http://www.packtpub.com/files/images/wordpresspl_article3_image02.png" alt="" width="420" /></p><h3>Time for action – Add a search filter box</h3><ol><li>Let&#8217;s start by adding two more hooks to the <em>handle_load_edit()</em> function. The <em>restrict_manage_posts</em> function draws the search box and the <em>posts_where</em> alters the database query to select only the posts of the type we want to show.<pre>// Manage page hooks
function handle_load_edit()
{
 // handle Manage screen functions
 add_filter('manage_posts_columns',
 array(&amp;$this, 'handle_posts_columns'));
 add_action('manage_posts_custom_column',
 array(&amp;$this, 'handle_posts_custom_column'), 10, 2);
 <span style="font-weight: bold;">// handle search box filter</span><br style="font-weight: bold;" /><span style="font-weight: bold;"> add_filter('posts_where',</span><br style="font-weight: bold;" /><span style="font-weight: bold;"> array(&amp;$this, 'handle_posts_where'));</span><br style="font-weight: bold;" /><span style="font-weight: bold;"> add_action('restrict_manage_posts',</span><br style="font-weight: bold;" /><span style="font-weight: bold;"> array(&amp;$this, 'handle_restrict_manage_posts'));</span><br style="font-weight: bold;" /><span style="font-weight: bold;">}</span></pre></li><li>Let&#8217;s write the corresponding function to draw the select box:<pre>// Handle select box for Manage page
function handle_restrict_manage_posts()
{
 ?&gt;
 &lt;select name="post_type" id="post_type" class="postform"&gt;
 &lt;option value="0"&gt;View all types&lt;/option&gt;
 &lt;option value="normal" &lt;?php if( $_GET['post_type']=='normal')
 echo 'selected="selected"' ?&gt;&gt;&lt;?php _e
 ('<span style="font-weight: bold;">Normal</span>',$this-&gt;plugin_domain); ?&gt;&lt;/option&gt;
 &lt;option value="photo" &lt;?php if( $_GET['post_type']=='photo')
 echo 'selected="selected"' ?&gt;&gt;&lt;?php _e
 ('<span style="font-weight: bold;">Photo</span>',$this-&gt;plugin_domain); ?&gt;&lt;/option&gt;
 &lt;option value="link" &lt;?php if( $_GET['post_type']=='link')
 echo 'selected="selected"' ?&gt;&gt;&lt;?php _e
 ('<span style="font-weight: bold;">Link</span>',$this-&gt;plugin_domain); ?&gt;&lt;/option&gt;
 &lt;/select&gt;
 &lt;?php
}</pre></li><li>And finally, we need a function that will change the query to retrieve only the posts of the selected type:<pre>// Handle query for Manage page
function handle_posts_where($where)
{
 global $wpdb;
 if( $_GET['post_type'] == 'photo' )
 {
 $where .= " AND ID IN (SELECT post_id FROM {$wpdb-&gt;postmeta}
 WHERE meta_key='post-type' AND meta_value='".__
 ('Photo',$this-&gt;plugin_domain)."' )";
 }
 else if( $_GET['post_type'] == 'link' )
 {
 $where .= " AND ID IN (SELECT post_id FROM {$wpdb-&gt;postmeta}
 WHERE meta_key='post-type' AND meta_value='".__
 ('Link',$this-&gt;plugin_domain)."' )";
 }
 else if( $_GET['post_type'] == 'normal' )
 {
 $where .= " AND ID NOT IN (SELECT post_id FROM
 {$wpdb-&gt;postmeta} WHERE meta_key='post-type' )";
 }
 return $where;
}</pre></li></ol><h3>What just happened?</h3><p>We have added a new select box to the header of the <strong>Manage</strong> panel. It allows us to filter the post types we want to show.</p><p>We added the box using the <em>restrict_manage_posts</em> action that is triggered at the end of the <strong>Manage</strong> panel header and allows us to insert HTML code, which we used to draw a select box.</p><p>To actually perform the filtering, we use the <em>posts_where</em> filter, which is run when a query is made to fetch the posts from the database.</p><pre>if( $_GET['post_type'] == 'photo' )
{
 $where .= " AND ID IN (SELECT post_id FROM {$wpdb-&gt;postmeta}
 WHERE meta_key='post-type' AND meta_value='".__
 ('Photo',$this-&gt;plugin_domain)."' )";</pre><p>If a photo is selected, we inspect the WordPress database postmeta table and select posts that have the <em>post-type</em> key with the value, <em>Photo</em>.</p><p>At this point, we have a functional plugin. What we can do further to improve it is to add user permissions checks, so that only those users allowed to write posts and upload files are allowed to use it.</p><p style="margin-left: 40px; margin-right: 40px;"><em><strong>Quick reference</strong><br /> manage_posts_columns($columns): This acts as a filter for adding/removing columns in the Manage Posts panel. Similarly, we use the function, manage_pages_columns for the Manage Pages panel.<br /> manage_posts_custom_column($column, $post_id): This acts as an action to display information for the given column and post. Alternatively, manage_pages_custom_column for Manage Pages panel.<br /> posts_where($where): This acts as a filter for the where clause in the query that gets the posts.<br /> restrict_manage_posts: This acts as an action that runs at the end of the Manage panel header and allows you to insert HTML.</em></p><hr size="1" noshade="noshade" /><div class="header">WordPress Plugin Development (Beginner&#8217;s Guide)</div><table border="0" cellspacing="0" cellpadding="0" width="100%"><tbody><tr><td width="99" valign="top"><a href="http://www.packtpub.com/wordpress-plug-in-development/book/"><img class="left" title="WordPress Plugin Development (Beginner's Guide)" src="http://images.packtpub.com/images/100x123/1847193595.png" border="0" alt="WordPress Plugin Development (Beginner's Guide)" width="99" height="123" /></a></td><td valign="top"><ul><li>Build powerful, interactive plug-ins for your blog and to share online</li><li>Everything you need to create and distribute your own plug-ins following WordPress coding standards</li><li>Walk through the development of six complete, feature-rich, real-world plug-ins that are being used by thousands of WP users</li><li>Written by Vladimir Prelovac, WordPress expert and developer of WordPress plug-ins such as Smart YouTube and Plugin Central</li><li>Part of Packt&#8217;s Beginners Guide series: expect step-by-step instructions with an emphasis on experimentation and tweaking code</li></ul><p><a href="http://www.packtpub.com/wordpress-plug-in-development/book/">http://www.packtpub.com/wordpress-plug-in-development/book</a></td></tr></tbody></table><hr size="1" noshade="noshade" /><h2>Handling error messages</h2><p>WordPress provides a simple class called <em>WP_Error</em> that allows us to keep all our error messages tidy and in one place.</p><h3>Time for action – Adding support for errors</h3><ol><li>Change the plugin constructor to add initialization of error class:<pre>if (version_compare($wp_version,"2.5","&lt;"))
{
 exit ($exit_msg);
}
<span style="font-weight: bold;">// initialize the error class</span><br style="font-weight: bold;" /><span style="font-weight: bold;">$this-&gt;error = new WP_Error();</span><br style="font-weight: bold;" /><span style="font-weight: bold;">$this-&gt;init_errors();</span>
// add admin_menu action
add_action('admin_menu', array(&amp;$this, 'admin_menu'));</pre></li><li>Initialize all our errors by defining the error code and the message:<pre>// Init error messages
function init_errors()
{
 $this-&gt;error-&gt;add('e_image', __('Please upload a valid
 image.',$this-&gt;plugin_domain));
 $this-&gt;error-&gt;add('e_title', __('You need to enter a title
 and add a photo.',$this-&gt;plugin_domain));
 $this-&gt;error-&gt;add('e_url', __('You need to enter a
 URL.',$this-&gt;plugin_domain));
}</pre></li><li>Add a function to retrieve an error:<pre>// Retrieve an error message
function my_error($e = '')
{
 $msg = $this-&gt;error-&gt;get_error_message($e);
 if ($msg == null)
 {
 return __("Unknown error occured, please contact the
 administrator.", $this-&gt;plugin_domain);
 }
 return $msg;
}</pre></li><li>Finally replace the old error messages with our new function:<pre> else
 $error=$this-&gt;my_error('e_image');
 }
 else // if file uploaded
 else
 $error=$this-&gt;my_error('e_title');
}
include( 'template/photo.php');
else
 $error=$this-&gt;my_error('e_url');
}
include( 'template/link.php');</pre></li></ol><h3>What just happened?</h3><p>We used the integrated WordPress error class for displaying error messages.</p><p>We initialize the class in the plugin constructor and call the error message initialization function:</p><pre>$this-&gt;error = new WP_Error();
$this-&gt;init_errors();</pre><p>To add new errors, we use the <em>add</em> method of the error class, and define the message with code and text:</p><pre>$this-&gt;error-&gt;add('e_image', __('Please upload a valid
image.',$this-&gt;plugin_domain));</pre><p>We then created the my_error function that retrieves the error message using the <em>get_error_message</em> method:</p><pre>$msg = $this-&gt;error-&gt;get_error_message($e);</pre><p style="margin-left: 40px; margin-right: 40px;"><em><strong>Quick reference</strong></em></p><p style="margin-left: 40px; margin-right: 40px;"><em> </em></p><p style="margin-left: 40px; margin-right: 40px;"><em>WP_Error: This is the WordPress class for handling error messages. Use the add and get_error_message methods to store and retrieve messages.</em></p><h2>User roles and capabilities</h2><p>Let&#8217;s add some checks to our plugin to prevent unauthorized users from publishing posts and uploading files using our post templates.</p><p>This can be done using the WordPress capabilities system, providing us with functions to check if the user is allowed to perform a certain action.</p><h3>Time for action – Add user capability checks</h3><ol><li>Let&#8217;s add our first check, to see if the user can publish posts. All capability checks are performed using the <em>current_user_can()</em> function.<br /> We will include a new variable in the <em>display_form()</em> function to hold the new post&#8217;s status:</p><pre>if ($published)
{
 check_admin_referer($page);
 <span style="font-weight: bold;">$post_status = current_user_can('publish_posts') ?</span><br style="font-weight: bold;" /><span style="font-weight: bold;"> 'publish' : 'pending';</span>
}</pre></li><li>Change the <strong>Publish</strong> button in both the template files, <em>link.php</em> and <em>photo.php</em>, to show different text if the user can not publish:<pre>&lt;div class="submitbox" id="submitpost"&gt;
 &lt;div id="previewview"&gt;&lt;/div&gt;
 &lt;div class="inside"&gt;&lt;/div&gt;
<span style="font-weight: bold;">&lt;p class="submit"&gt;&lt;input name="publish" type="submit"</span><br style="font-weight: bold;" /><span style="font-weight: bold;">class="button button-highlighted" tabindex="4"</span><br style="font-weight: bold;" /><span style="font-weight: bold;">value="&lt;?php if (current_user_can('publish_posts'))</span><br style="font-weight: bold;" /><span style="font-weight: bold;">_e('Publish', $this-&gt;plugin_domain); else _e('Submit',</span><br style="font-weight: bold;" /><span style="font-weight: bold;">$this-&gt;plugin_domain); ?&gt;" /&gt;&lt;/p&gt;</span>
&lt;/div&gt;</pre></li><li>Finally, edit the <em>display_form()</em> to check if the current user is allowed to upload files:<pre> // check permissions
<span style="font-weight: bold;">if (is_writable($uploads['path']) &amp;&amp;</span><br style="font-weight: bold;" /><span style="font-weight: bold;">current_user_can('upload_files'))</span>
 {
 $uploadfile=true;
 }</pre></li></ol><p>With the capabilities systems in place, we are now able to restrict the actions of users without enough privileges to publish the post or upload files to the server.</p><p>Congratulations! That was the last bit of code needed to finish our last plugin!</p><h3>What just happened?</h3><p>User capabilities provide a flexible model for checking the permissions of the user.</p><p>Roles and capabilities are interconnected, but the capabilities of a role can be changed dynamically by other plugins. So it is advisable to always check for capabilities instead of roles.</p><p>User capabilities are checked using the <em>current_user_can($action)</em> function, which accepts the desired action as a parameter. Actions can be <em>edit_posts</em>, or <em>upload_plugins</em>, and so on.</p><p>Bearing in mind that WordPress sites can be used by multiple users, you should always make sure to assign the correct capabilities for the features of you plugin.</p><p style="margin-left: 40px; margin-right: 40px;"><em><strong>Quick reference</strong><br /> current_user_can($action): This function is used to check if the current user is capable of performing a certain action.</em></p><p><em>A full reference for roles and capabilities is available at <a href="http://codex.wordpress.org/Roles_and_Capabilities" target="_blank">http://codex.wordpress.org/Roles_and_Capabilities</a>.</em></p><h3>Have a go Hero</h3><p>With this plugin, we explored the core of the WordPress backend.</p><p>There are a few features you can consider now, that could improve this plugin further:</p><ul><li>Include tags and perhaps categories to the post templates</li><li>Create more interesting post templates</li><li>For the <em>photo</em> template, you can download the image instead of linking to it, if the image is specified with a URL.</li><li>Create a mobile phone friendly admin panel by removing all other unnecessary menus and leaving only the quick post templates</li></ul><h2>Summary</h2><p>The purpose of the Post Types plugin was to introduce you to different aspects of WordPress backend development.</p><p>We learned how to modify the Manage Posts panel to display the information we want. We also covered user capabilities, and how using them, we can make sure our plugin is working in multi-user environments.</p><p>Here are the most important lessons from this article:</p><ul><li><strong>Manage Panels</strong>: Customize the display of information to your liking, using custom columns and filters</li><li><strong>Manage Errors</strong>: Use the WordPress <em>WP_Error</em> class to handle errors in your plugin</li><li><strong>User capabilities</strong>: Use this to restrict access to functions for users without the relevant permissions</li></ul><hr size="1" noshade="noshade" /><strong>If you have read this article you may be interested to view :</strong></p><ul><li><a href="http://www.packtpub.com/article/developing-post-types-plugin-with-wordpress?utm_source=rk_wordpress_abr3_0209&amp;utm_medium=content&amp;utm_campaign=ramsai" target="_blank">Developing Post Types Plugin with WordPress</a></li><li><a href="http://www.packtpub.com/article/social-bookmarking-with-wordpress-plugin?utm_source=rk_wordpress_abr3_0209&amp;utm_medium=content&amp;utm_campaign=ramsai" target="_blank">Social Bookmarking with WordPress Plugin</a></li></ul><hr size="1" noshade="noshade" /><div class="header">WordPress Plugin Development (Beginner&#8217;s Guide)</div><table border="0" cellspacing="0" cellpadding="0" width="100%"><tbody><tr><td width="99" valign="top"><a href="http://www.packtpub.com/wordpress-plug-in-development/book/"><img class="left" title="WordPress Plugin Development (Beginner's Guide)" src="http://images.packtpub.com/images/100x123/1847193595.png" border="0" alt="WordPress Plugin Development (Beginner's Guide)" width="99" height="123" /></a></td><td valign="top"><ul><li>Build powerful, interactive plug-ins for your blog and to share online</li><li>Everything you need to create and distribute your own plug-ins following WordPress coding standards</li><li>Walk through the development of six complete, feature-rich, real-world plug-ins that are being used by thousands of WP users</li><li>Written by Vladimir Prelovac, WordPress expert and developer of WordPress plug-ins such as Smart YouTube and Plugin Central</li><li>Part of Packt&#8217;s Beginners Guide series: expect step-by-step instructions with an emphasis on experimentation and tweaking code</li></ul><p><a href="http://www.packtpub.com/wordpress-plug-in-development/book/">http://www.packtpub.com/wordpress-plug-in-development/book</a></td></tr></tbody></table><hr size="1" noshade="noshade" /><h3>About the Author</h3><p><strong>Vladimir Prelovac</strong> is the author of many popular WordPress plugins and articles about WordPress optimization, security and maintenance. He actively uses WordPress platform as a base for Internet development strategy for small &amp; mid-sized businesses.</p><p>For Vladimir, WordPress development is a full time job about which he happily blogs on his web site <a href="http://www.prelovac.com/vladimir" target="_blank">www.prelovac.com/vladimir</a>.</p><hr /> <span style="font-size: .9em;">We designed our <a href="http://www.test-king.com/exams/70-630.htm">70-630</a> course to help web designers easily learn WordPress themes. Download the <a href="http://www.test-king.com/exams/HP0-S20.htm">HP0-S20</a> tutorials and <a href="http://www.test-king.com/exams/MB2-632.htm">MB2-632</a> demos to learn how to change or create Word Press themes.</span></p> ]]></content:encoded> <wfw:commentRss>http://wptoy.com/plugins/customize-managing-posts-panel-wordpress-plugin/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss><!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 7/52 queries in 0.139 seconds using disk: basic
Object Caching 586/692 objects using disk: basic

Served from: wptoy.com @ 2012-05-25 11:24:03 -->

