<?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>Webmaster-Source &#187; WordPress</title>
	<atom:link href="https://www.webmaster-source.com/category/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.webmaster-source.com</link>
	<description>Useful Resources For Webmasters</description>
	<lastBuildDate>Thu, 24 Aug 2017 02:01:18 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>WordPress 4.0 Would Be a Good Chance for a Rewrite</title>
		<link>https://www.webmaster-source.com/2013/05/22/wordpress-4-0-would-be-a-good-chance-for-a-rewrite/</link>
		<comments>https://www.webmaster-source.com/2013/05/22/wordpress-4-0-would-be-a-good-chance-for-a-rewrite/#comments</comments>
		<pubDate>Wed, 22 May 2013 11:36:02 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=5062</guid>
		<description><![CDATA[It&#8217;s no secret that the WordPress codebase is a mess. It seems that not a week goes by without some blogger publishing a post criticizing it. Unfortunately, fixing it is no simple matter. One of the goals the WordPress project holds is to maintain compatibility with older plugins and themes that may not have been [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  src="//www.webmaster-source.com/wp-content/uploads/2013/04/wordpress-logo-type.png" alt="WordPress" width="249" height="57" class="alignright size-full wp-image-5065" />It&#8217;s no secret that the WordPress codebase is a mess. It seems that not a week goes by without some blogger publishing a post criticizing it. Unfortunately, fixing it is no simple matter.</p>
<p>One of the goals the WordPress project holds is to maintain compatibility with older plugins and themes that may not have been updated to work with the latest version, which means, well, not changing things that would break old plugins. Or adding new functions and leaving the older, redundant ones behind to maintain compatibility. It&#8217;s that methodology that led the developers to bake the infamous <a href="http://en.wikipedia.org/wiki/Magic_quotes">Magic Quotes</a> functionality into WordPress itself, when it has been deprecated and removed from newer versions of PHP, so as to not break plugins expecting that behavior. (Which means plugin developers have to unescape strings before passing them to prepared statements, like they <em>should</em> be doing.)</p>
<p>That&#8217;s just one example of something <em>I</em> find vexing about WordPress, and not really indicative of the deeper <em>structural</em> issues that others complain about.<span id="more-5062"></span></p>
<p>Sadly, the core developers would never agree to just dump everything and rewrite from scratch. It would break everyone&#8217;s plugins and themes, and it would take forever for them to be rewritten. That thought lead me to an idea, though. There&#8217;s a similar parallel to this: Python.</p>
<p>Version three of the Python language was released several years ago, but Python 2.6/2.7 are still used more widely than the latest and greatest. Why? Because scripts written for Python 2.x have to be adjusted to work with the newer version, which doesn&#8217;t retain backwards-compatibility. Projects like the <a href="https://www.djangoproject.com/">Django framework</a> are currently straddling the two versions, offering support for both through a compatibility layer, while slowly phasing out the older. Their plans are to slowly drop support for previous point-releases in the 2.x line while targeting Python 3.</p>
<p>A similar roadmap could be used with WordPress. Let&#8217;s say that WordPress 4.0 should be a completely rewritten, modern PHP application with a minimum requirement of PHP 5.3. The developer team would basically create a new dev branch and get to work, while still maintaining the 3.x branch for awhile. As the new version progresses, developers of plugins and themes could follow along and incrementally make changes to support any differences in the API. This would make it possible to do a full rewrite, and give the creators of <em>actively developed</em> plugins and themes a chance to catch up. (It&#8217;s high time to axe antique plugins designed for Magic Quotes and other PHP4 crimes against humanity.)</p>
<p>Once the 4.0 branch reaches completion, and the timeline for third-party developers to update their stuff nears its end, the 3.x branch is ended. Sites that depend on ye olde software could still delay updating until their dependencies are patched.</p>
<p>For another parallel, look to <a href="http://laravel.com/">Laravel</a>. They have the old Laravel 3, which people looking for a stable framework stick with, and the subject-to-change development branch, <a href="http://four.laravel.com/">Laravel 4</a>. The latter is significantly different, and will one day replace Laravel 3, but the older version isn&#8217;t being dumped until the shiny new version is 100% complete.</p>
<p>Personally, I think this issue is going to need to be addressed soon. WordPress&#8217;s reputation of being a &#8220;bloated mess of spaghetti code&#8221; is surely exaggerated, but certainly not unfounded. It needs work. Yes, it will cause incompatibilities, but that&#8217;s a part of the life cycle for any major software product. Sometimes you just need to cut the legacy software loose and begin anew, like Apple did with the OS 9 to OS X transition.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2013/05/22/wordpress-4-0-would-be-a-good-chance-for-a-rewrite/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>WordPress Security Advisory: Harden Your Admin Login</title>
		<link>https://www.webmaster-source.com/2013/04/24/wordpress-security-advisory-harden-your-admin-login/</link>
		<comments>https://www.webmaster-source.com/2013/04/24/wordpress-security-advisory-harden-your-admin-login/#comments</comments>
		<pubDate>Wed, 24 Apr 2013 11:58:00 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=5075</guid>
		<description><![CDATA[There has been news lately of a distributed attack against WordPress sites. A growing botnet has been running dictionary attacks against sites powered by WordPress, in effort to gain access to the the admin panel and infect the server. As is usually the case with botnets, infected servers are assimilated into the pool of compromised [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  class="alignright size-full wp-image-5065" alt="WordPress" src="//www.webmaster-source.com/wp-content/uploads/2013/04/wordpress-logo-type.png" width="249" height="57" />There has been news lately of <a href="http://arstechnica.com/security/2013/04/huge-attack-on-wordpress-sites-could-spawn-never-before-seen-super-botnet/">a distributed attack against WordPress sites</a>. A growing <a href="http://en.wikipedia.org/wiki/Botnet">botnet</a> has been running <a href="http://en.wikipedia.org/wiki/Dictionary_attack">dictionary attacks</a> against sites powered by WordPress, in effort to gain access to the the admin panel and infect the server. As is usually the case with botnets, infected servers are assimilated into the pool of compromised systems that make up the botnet and put to use for nefarious purposes such as DDoS attacks.</p>
<p>It&#8217;s important to note that this is <em>not</em> a WordPress security flaw, but rather an attempt to systematically guess passwords.</p>
<p>The attacks consist of simple POST requests to <code>wp-login.php</code> with a supplied username of <code>admin</code> and one of many simple, insecure passwords. I&#8217;ve noticed plenty in my logs, including <code>rainydays</code>, <code>sophie1</code>, and <code>wordpress</code>. The requests come from a rotation of IP addresses in the botnet, making it difficult to block them outright.</p>
<p>It&#8217;s easy enough to protect yourself from the attacks, providing you follow some simple best practices.</p>
<h3>1. Get Rid of the Admin User</h3>
<p>Historically, every WordPress installation would come with an administrative user named <code>admin</code>, which was created during the setup process. In more recent versions, the setup screen prompts you to choose your own username instead of providing a default. Check the Users screen in your WordPress backend to see if a user named <code>admin</code> exists. If it does, you should replace it with a profile that has a unique name, ensuring that the new account has administrative privileges.</p>
<p>Having a user account with that default name is a bad idea, because numerous attacks over the years have operated under the assumption that the operators of many WordPress sites will have been too lazy to change it. The current attack only tries passwords for a user named <code>admin</code>, as well, so ensuring that such a user does not exist will go a long way toward protecting your site.<span id="more-5075"></span></p>
<h3>2. Set a Strong Password</h3>
<p>What&#8217;s the common theme among these passwords?</p>
<ul>
<li>sophie1</li>
<li>rainydays</li>
<li>roberts</li>
<li>online</li>
<li>onions</li>
</ul>
<p>They&#8217;re all incredibly simple and insecure, and they&#8217;re all ones that were tried right here on Webmaster-Source recently. Obviously you want to avoid passwords like those if you want to avoid being compromised.</p>
<p>For a basic, reasonably strong password, your password should:</p>
<ul>
<li>Be at least eight characters long</li>
<li>Have a mixture of upper and lower case letters</li>
<li>Contain numbers and non-alphanumeric symbols</li>
</ul>
<p>An easy way to create something secure and memorable is to pick a phrase that means something to you and use the first letter of each word, mixing up the case and adding some numbers and symbols. For example, &#8220;The Wheel of Time turns and Ages come and pass&#8221; would become <code>TWoTtaAc&amp;p13</code>. Complex, yet still possible to remember.</p>
<p>Or you could go with <a href="http://xkcd.com/936/">the XKCD method</a> and pick four random, unrelated words and use them as your pass<em>phrase</em>. (e.g. &#8220;double pizza kitten book.&#8221;) As the comic explains, such a password can actually be <em>more</em> secure against a brute-force attack, and is far easier to remember than a conventional password.</p>
<h3>3. Block the Bots</h3>
<p>Install a plugin like <a href="http://wordpress.org/extend/plugins/bad-behavior/">Bad Behavior</a> (which will also help cut down on spam comments) or <a href="http://wordpress.org/extend/plugins/limit-login-attempts/">Limit Login Attempts</a>. Both plugins attempt to hinder bot activity, though through different means. Bad Behavior detects suspicious requests and blocks them, optionally using the <a href="http://www.projecthoneypot.org/">Project Honeypot</a> database to improve its effectiveness. Limit Login Attempts will block IP addresses if they continually make incorrect login attempts.</p>
<h3>4. CloudFlare</h3>
<p><a href="https://www.cloudflare.com/">CloudFlare</a> is an interesting service that speeds up your site and mitigates security threats by sitting between the user and your server. You update your domain to point to their servers, and they act similarly to a CDN, caching your site and analyzing the incoming traffic. If you&#8217;re running off a cheap shared hosting plan, it could make a significant improvement to your loading speed. I don&#8217;t use their services personally, but they&#8217;ve been instrumental in mitigating DDoS attacks and traffic spikes for some high-profile sites, and they&#8217;re <a href="http://blog.cloudflare.com/patching-the-internet-fixing-the-wordpress-br">on top of</a> the current WordPress threat.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2013/04/24/wordpress-security-advisory-harden-your-admin-login/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>WordPress 3.6 to Have Audio/Video Support in Core</title>
		<link>https://www.webmaster-source.com/2013/04/10/wordpress-3-6-to-have-audiovideo-support-in-core/</link>
		<comments>https://www.webmaster-source.com/2013/04/10/wordpress-3-6-to-have-audiovideo-support-in-core/#comments</comments>
		<pubDate>Wed, 10 Apr 2013 10:16:01 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Audio]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=5069</guid>
		<description><![CDATA[Here&#8217;s some great news from the WordPress development blog: WordPress 3.6 is going to have built-in support for audio/video playback. You will be able to upload a media file, and WordPress will handle playback with the MediaElement.js. Shortcodes will be available, as well as template tags for theming support. &#8230;there is now native support for [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  class="alignright size-full wp-image-5065" alt="WordPress" src="//www.webmaster-source.com/wp-content/uploads/2013/04/wordpress-logo-type.png" width="249" height="57" />Here&#8217;s some great news from the WordPress development blog: WordPress 3.6 is going to have <a href="http://make.wordpress.org/core/2013/04/08/audio-video-support-in-core/">built-in support for audio/video playback</a>. You will be able to upload a media file, and WordPress will handle playback with the <a href="http://mediaelementjs.com/">MediaElement.js</a>. Shortcodes will be available, as well as template tags for theming support.</p>
<blockquote><p>&#8230;there is now native support for Audio and Video in core! There has been great support for embeds by way of <code>WP_Embed</code> and oEmbed providers for a while, but, if you wanted to play an MP3 from your Media Library, you had to install a plugin. Supporting audio and video in core gives bands, podcasters, vloggers, et al the ability to easily and beautifully expresses themselves through sounds and moving pictures without using an external service.</p></blockquote>
<p>This should go nicely with the coming changes to Post Formats—unless the plans have change, a UI based on <a href="http://www.webmaster-source.com/2012/02/06/crowd-favorites-wordpress-post-formats-admin-ui/">the one by Crowd Favorite</a> is going to be a part of the WordPress core, hopefully making post formats actually useful. (I&#8217;ve been using the Crowd Favorite plugin on my personal blog for awhile now, and it&#8217;s great.)</p>
<p>Another part I find interesting is the addition of embed handlers for common media files. You will be able to paste an URL to an AAC/MP3/etc. into a post and it will be seamlessly replaced by a media player, just like how oEmbed works.</p>
<p><a href="http://make.wordpress.org/core/2013/04/08/audio-video-support-in-core/">Audio / Video support in Core</a> [Make WordPress]</p>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2013/04/10/wordpress-3-6-to-have-audiovideo-support-in-core/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using the WordPress 3.5 Media Uploader in Your Plugin or Theme</title>
		<link>https://www.webmaster-source.com/2013/02/06/using-the-wordpress-3-5-media-uploader-in-your-plugin-or-theme/</link>
		<comments>https://www.webmaster-source.com/2013/02/06/using-the-wordpress-3-5-media-uploader-in-your-plugin-or-theme/#comments</comments>
		<pubDate>Wed, 06 Feb 2013 11:21:50 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Themes]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=5001</guid>
		<description><![CDATA[Back in 2010, I wrote a post on Using the WordPress Uploader in Your Plugin or Theme that went on to be one of my most popular tutorials of all time. Then the WordPress team went and added a much cooler media uploader in version 3.5 and make that post outdated. Since most of you [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Back in 2010, I wrote a post on <a href="http://www.webmaster-source.com/2010/01/08/using-the-wordpress-uploader-in-your-plugin-or-theme/">Using the WordPress Uploader in Your Plugin or Theme</a> that went on to be one of my most popular tutorials of all time. Then the WordPress team went and added a much cooler media uploader in version 3.5 and make that post outdated. Since most of you probably want to add the <em>new</em> uploader in a theme or plugin you&#8217;re working on right now, I figured it was time for an updated post.</p>
<p style="text-align: center"><img style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-5002 imgborder" alt="WordPress 3.5 Media Uploader" src="//www.webmaster-source.com/wp-content/uploads/2013/02/wp35mediauploader.png" width="600" height="286" /></p>
<p>The process required to add the new uploader is a bit different, but not too much more difficult. I was able to adapt the old tutorial a little, so it shouldn&#8217;t be too hard to replace some code in an existing project and get the new uploader instead of the old.<span id="more-5001"></span></p>
<p>For the sake of simplicity, let&#8217;s start with the same HTML snippet as in the old tutorial. This goes along with the rest of the HTML for your admin page, or wherever in the admin you&#8217;re trying to add an upload field.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;label for=&quot;upload_image&quot;&gt;
	&lt;input id=&quot;upload_image&quot; type=&quot;text&quot; size=&quot;36&quot; name=&quot;ad_image&quot; value=&quot;http://&quot; /&gt; 
	&lt;input id=&quot;upload_image_button&quot; class=&quot;button&quot; type=&quot;button&quot; value=&quot;Upload Image&quot; /&gt;
	&lt;br /&gt;Enter a URL or upload an image
&lt;/label&gt;
</pre>
<p>Now we need to load up the necessary JavaScript files.</p>
<pre class="brush: php; title: ; notranslate">
add_action('admin_enqueue_scripts', 'my_admin_scripts');

function my_admin_scripts() {
	if (isset($_GET['page']) &amp;&amp; $_GET['page'] == 'my_plugin_page') {
		wp_enqueue_media();
		wp_register_script('my-admin-js', WP_PLUGIN_URL.'/my-plugin/my-admin.js', array('jquery'));
		wp_enqueue_script('my-admin-js');
	}
}
</pre>
<p>We bind the <code>my_admin_scripts()</code> function to the <code>admin_enqueue_scripts</code> hook, and enqueue both the media scripts and our own JavaScript file. Also, the scripts will only be loaded if the current page is equal to &#8220;my_plugin_page,&#8221; which you would of course replace with the slug your <a href="http://codex.wordpress.org/Administration_Menus">admin menu</a> has.</p>
<p>Now for the complicated part: the script that hooks into the uploader. Continuing with the above example, it would be named <code>my-admin.js</code>.</p>
<pre class="brush: jscript; title: ; notranslate">
jQuery(document).ready(function($){


	var custom_uploader;


	$('#upload_image_button').click(function(e) {

		e.preventDefault();

		//If the uploader object has already been created, reopen the dialog
		if (custom_uploader) {
			custom_uploader.open();
			return;
		}

		//Extend the wp.media object
		custom_uploader = wp.media.frames.file_frame = wp.media({
			title: 'Choose Image',
			button: {
				text: 'Choose Image'
			},
			multiple: false
		});

		//When a file is selected, grab the URL and set it as the text field's value
		custom_uploader.on('select', function() {
			attachment = custom_uploader.state().get('selection').first().toJSON();
			$('#upload_image').val(attachment.url);
		});

		//Open the uploader dialog
		custom_uploader.open();

	});


});
</pre>
<p>When the button is clicked, it creates a new instance of the <code>wp.media</code> object and configures it to only accept a single file, since the text field can only hold one file URL. Then it binds a function to the selection action, which gets the file attributes when an image is chosen and sets the <code>#upload_image</code> text field value to the file&#8217;s URL.</p>
<p>Providing everything went as expected, you should have a form field that will accept an arbitrary URL, or allow the user to upload one.</p>
<p><img style=' display: block; margin-right: auto; margin-left: auto;'  src="//www.webmaster-source.com/wp-content/uploads/2013/02/wp35mediauploader-field.png" alt="File Upload Field" width="352" height="44" class="aligncenter size-full wp-image-5005" /></p>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2013/02/06/using-the-wordpress-3-5-media-uploader-in-your-plugin-or-theme/feed/</wfw:commentRss>
		<slash:comments>70</slash:comments>
		</item>
		<item>
		<title>Frank: A Free and Speedy WordPress Theme</title>
		<link>https://www.webmaster-source.com/2013/01/30/frank-a-free-and-speedy-wordpress-theme/</link>
		<comments>https://www.webmaster-source.com/2013/01/30/frank-a-free-and-speedy-wordpress-theme/#comments</comments>
		<pubDate>Wed, 30 Jan 2013 11:22:05 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Smashing Magazine]]></category>
		<category><![CDATA[Themes]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=4991</guid>
		<description><![CDATA[Smashing Magazine recently released a new WordPress theme that&#8217;s definitely worth a look. Frank, as it is called, is a lightweight and elegantly simple theme that&#8217;s designed for very fast loading times. It boasts a JavaScript dependency of zero, and no external images to speak of. Instead, it makes use of SVG for icons and [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Smashing Magazine <a href="http://wp.smashingmagazine.com/2013/01/16/frank-a-wordpress-theme-designed-for-speed/">recently released a new WordPress theme</a> that&#8217;s definitely worth a look. Frank, as it is called, is a lightweight and elegantly simple theme that&#8217;s designed for very fast loading times. It boasts a JavaScript dependency of zero, and no external images to speak of. Instead, it makes use of SVG for icons and such. The final page size for a fresh install ends up being 30KB, or 9.5KB gzipped.</p>
<p>Frank is built atop the responsive Foundation grid framework, and features a layout customization tool that lets you adjust how the homepage is displayed.</p>
<p><a href="http://wp.smashingmagazine.com/2013/01/16/frank-a-wordpress-theme-designed-for-speed/">Frank: A Free WordPress Theme Designed For Speed</a> [Smashing Magazine]</p>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2013/01/30/frank-a-free-and-speedy-wordpress-theme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Core Control</title>
		<link>https://www.webmaster-source.com/2013/01/16/wordpress-core-control/</link>
		<comments>https://www.webmaster-source.com/2013/01/16/wordpress-core-control/#comments</comments>
		<pubDate>Wed, 16 Jan 2013 11:44:33 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[cron]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[Plugins]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=4974</guid>
		<description><![CDATA[I&#8217;ve been working on a WordPress plugin that takes advantage of the WP-Cron system (which, for the uninitiated, is a sort of event scheduling system that runs functions in WordPress at predetermined intervals). Unfortunately, that&#8217;s a bit of a pain considering the nature of the task. How do you test functions that are designed to [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve been working on a WordPress plugin that takes advantage of the <a href="http://wp.tutsplus.com/tutorials/theme-development/do-it-yourself-wordpress-scheduling-mastering-wp-cron/">WP-Cron</a> system (which, for the uninitiated, is a sort of event scheduling system that runs functions in WordPress at predetermined intervals). Unfortunately, that&#8217;s a bit of a pain considering the nature of the task. How do you test functions that are designed to run intermittently, say twice a day? The easy/hacky solution is to add a function call that runs the task on every page load, and then remove it when you&#8217;re done. But if you want a solution that doesn&#8217;t involve editing your code, there&#8217;s a handy plugin that&#8217;s perfect for this scenario.</p>
<p><a href="http://wordpress.org/extend/plugins/core-control/">Core Control</a> is a plugin that lets you monitor and adjust several parts of WordPress for diagnostic and development purposes. It makes it easy to view registered WP-Cron events, and trigger them with a click. It can also force WordPress to check for ore, plugin or theme updates, log any HTTP requests WordPress makes to external servers and determine which filesystem access method WordPress is using.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2013/01/16/wordpress-core-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automattic Releases Jetpack 2.0, Featuring the New Photon CDN</title>
		<link>https://www.webmaster-source.com/2012/11/21/automattic-releases-jetpack-2-0-featuring-the-new-photon-cdn/</link>
		<comments>https://www.webmaster-source.com/2012/11/21/automattic-releases-jetpack-2-0-featuring-the-new-photon-cdn/#comments</comments>
		<pubDate>Wed, 21 Nov 2012 11:19:28 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Automattic]]></category>
		<category><![CDATA[CDN]]></category>
		<category><![CDATA[Plugins]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=4913</guid>
		<description><![CDATA[Automattic&#8217;s Jetpack plugin has certainly grown since I first looked at it. I originally dismissed it, not wanting to unnecessarily tie my own self-hosted blogs to WordPress.com for a few niceties like in-Dashboard traffic stats and very thorough spelling and grammar checking via After the Deadline. I decided to try it out again now that [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  class="alignright size-full wp-image-4914" title="WordPress.com Jetpack" src="//www.webmaster-source.com/wp-content/uploads/2012/11/wordpressjetpack.png" alt="" width="275" height="178" />Automattic&#8217;s <a href="http://jetpack.me/">Jetpack</a> plugin has certainly grown since I first looked at it. I originally dismissed it, not wanting to unnecessarily tie my own self-hosted blogs to WordPress.com for a few niceties like in-Dashboard traffic stats and very thorough spelling and grammar checking via After the Deadline.</p>
<p>I decided to try it out again now that it hit the big two-point-oh, and was surprised now only by the amount of functionality it offers, but by how many other plugins it can conceivably replace. The Publicize module, for instance, will automatically post links to new posts on Twitter, Facebook and other popular social networks, so you don&#8217;t need another plugin for that if you run Jetpack. I also found the Mobile Push Notifications and JSON API modules to be intriguing. The former sends push notifications to your iPhone/iPad when new comments are posted, and lets you jump right over to the WordPress iOS app to manage them, and the latter is primarily of interest to developers looking to integrate a WordPress blog into another web site or application. (Previously I used <a href="http://wordpress.org/extend/plugins/json-api/">this plugin</a>, but Jetpack looks roughly equivalent.)</p>
<p>The big new feature in this version is a free service called <a href="http://jetpack.me/support/photon/">Photon</a>, an &#8220;image acceleration and editing service&#8221; which acts as a CDN for your images. It mirrors images it finds in your posts (or ones a theme or plugin developer specifies via an API) on WordPress.com&#8217;s servers, which enables them to be served faster and takes load off your server. This would be excellent for blogs hosted on cheap shared hosting, especially if coupled with a static caching plugin like WP Super Cache or W3 Total Cache.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2012/11/21/automattic-releases-jetpack-2-0-featuring-the-new-photon-cdn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WooThemes Redesigns, Adopts Their Own WooCommerce Plugin</title>
		<link>https://www.webmaster-source.com/2012/10/03/woothemes-redesigns-adopts-their-own-woocommerce-plugin/</link>
		<comments>https://www.webmaster-source.com/2012/10/03/woothemes-redesigns-adopts-their-own-woocommerce-plugin/#comments</comments>
		<pubDate>Wed, 03 Oct 2012 11:34:23 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Themes]]></category>
		<category><![CDATA[WooThemes]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=4853</guid>
		<description><![CDATA[WooThemes launched a new redesign of their site this month, bringing some interesting changes along with the more modern style. The navigation has been restructured to highlight their non-theme offerings, making it clear that WooThemes is very serious about their plugin offerings (especially WooCommerce). Their &#8220;notorious&#8221; user management system has also been replaced with their [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>WooThemes <a href="http://www.woothemes.com/2012/10/weve-re-designed-everything/">launched a new redesign</a> of their site this month, bringing some interesting changes along with the more modern style. The navigation has been restructured to highlight their non-theme offerings, making it clear that WooThemes is very serious about their plugin offerings (especially WooCommerce). Their &#8220;notorious&#8221; user management system has also been replaced with their own free WooCommerce plugin.</p>
<p style="text-align: center;"><a href="http://www.woothemes.com/"><img style=' display: block; margin-right: auto; margin-left: auto;'  class="size-full wp-image-4854 aligncenter imgborder" title="WooThemes October 2012 Redesign" src="//www.webmaster-source.com/wp-content/uploads/2012/10/woothemes-redesign-oct2012.png" alt="" width="530" height="538" /></a></p>
<p>I like the new look, with its flat colors and additional negative space. It seems more current, as excessive gradients seem to be falling out of style in web design lately—just as browser support for them is starting to catch up. It&#8217;s definitely easier to find what you&#8217;re looking for on the new site, so the new navigational structure is a success.</p>
<p>The design looks great, but I find the switch to WooCommerce to be the most interesting. Not only is WooThemes &#8220;eating their own dog food,&#8221; but the fact that the largest and most known supplier of commercial WordPress themes is using it is good to know for anyone looking into e-commerce solutions.</p>
<p><a href="http://www.woothemes.com/2012/10/weve-re-designed-everything/">We’ve re-designed. Everything.</a> [WooThemes]</p>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2012/10/03/woothemes-redesigns-adopts-their-own-woocommerce-plugin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress to Dump Blogroll Feature in 3.5</title>
		<link>https://www.webmaster-source.com/2012/09/28/wordpress-to-dump-blogroll-feature-in-3-5/</link>
		<comments>https://www.webmaster-source.com/2012/09/28/wordpress-to-dump-blogroll-feature-in-3-5/#comments</comments>
		<pubDate>Fri, 28 Sep 2012 11:28:21 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=4837</guid>
		<description><![CDATA[Starting in WordPress 3.5, the Links feature will no longer be a part of the WordPress core. The blogroll feature will be available as a plugin, Link Manager, so it&#8217;s not completely going away. Though it could be more convenient to use the Menus feature in place of the older blogroll function, having a menu [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Starting in WordPress 3.5, the Links feature will no longer be a part of the WordPress core. The blogroll feature will be available as a plugin, <a href="http://wordpress.org/extend/plugins/link-manager/">Link Manager</a>, so it&#8217;s not completely going away. Though it could be more convenient to use the Menus feature in place of the older blogroll function, having a menu to hold your blogroll links.</p>
<p>Lorelle VanFossen <a href="http://lorelle.wordpress.com/2012/09/17/blogrolls-gone-in-wordpress-how-to-save-your-links/">goes into considerable detail</a> on the issue, with a few migration routes, including using custom menus.</p>
<p>Personally, I have mixed feelings about blogrolls. On on one hand, they&#8217;re a convenient way to recommend some of your favorite blogs in a persistent manner. Certainly good for a personal blog. On the other hand, they&#8217;re of more limited benefit for more topical sites. It&#8217;s probably a good thing that it&#8217;s being removed from the WordPress core, since blogrolls aren&#8217;t as popular as they were ten years ago.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2012/09/28/wordpress-to-dump-blogroll-feature-in-3-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress&#8217;s&#8230;Interesting Way of Dealing with Magic Quotes</title>
		<link>https://www.webmaster-source.com/2012/08/09/wordpresss-interesting-way-of-dealing-with-magic-quotes/</link>
		<comments>https://www.webmaster-source.com/2012/08/09/wordpresss-interesting-way-of-dealing-with-magic-quotes/#comments</comments>
		<pubDate>Thu, 09 Aug 2012 11:55:19 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Magic Quotes]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=4783</guid>
		<description><![CDATA[If you&#8217;ve been working with PHP for awhile, you&#8217;re probably familiar with one of the worst ideas the language&#8217;s developers ever came up with: Magic Quotes. If not, here&#8217;s a brief history lesson. In order to help newbies write functioning MySQL queries, they thought it would be a great idea to automatically escape input data [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>If you&#8217;ve been working with PHP for awhile, you&#8217;re probably familiar with one of the worst ideas the language&#8217;s developers ever came up with: Magic Quotes.</p>
<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  src="//www.webmaster-source.com/wp-content/uploads/2012/08/magic-quotes-not-magic.png" alt="" title="magic-quotes-not-magic" width="269" height="91" class="alignright size-full wp-image-4785 imgborder" />If not, here&#8217;s a brief history lesson. In order to help newbies write functioning MySQL queries, they thought it would be a great idea to automatically escape input data with slashes, overwriting the $_POST, $_GET and $_REQUEST globals. So if someone submitted <code>hello, I'm Steve</code> through a form, it would be immediately converted to <code>hello, I\'m Steve</code> so the apostrophe wouldn&#8217;t cause issue if a naive user tried inserting it into a database.</p>
<p>But what if you weren&#8217;t going to dump the data into a MySQL database? Too bad, it&#8217;s now full of slashes and you have to use <code>stripslashes()</code> on the variable. Also, you could conceivably end up with something like <code>hello, I\\\'m Steve</code> if you try escaping the data yourself before inserting the data into a database. It was a massive headache, and the normal practice ended up being &#8220;check to see if magic quotes are enabled at the top of your script, and strip the slashes out if the feature is activated. Then handle database queries with prepared statements or by properly escaping the data.&#8221;<span id="more-4783"></span></p>
<p>Fortunately, the PHP project eventually came to their senses and deprecated magic quotes, finally removing the feature entirely with the new PHP 5.4.</p>
<p>Now&#8230;back to WordPress.</p>
<p>I was investigating an issue with a plugin where extraneous slashes were appearing in strings processed by <a href="http://codex.wordpress.org/Class_Reference/wpdb#INSERT_rows"><code>$wpdb-&gt;insert()</code></a> when I found this gem in <code>wp-includes/load.php</code>:</p>
<pre class="brush: php; title: ; notranslate">
/**
 * Add magic quotes to $_GET, $_POST, $_COOKIE, and $_SERVER.
 *
 * Also forces $_REQUEST to be $_GET + $_POST. If $_SERVER, $_COOKIE,
 * or $_ENV are needed, use those superglobals directly.
 *
 * @access private
 * @since 3.0.0
 */
function wp_magic_quotes() {
	// If already slashed, strip.
	if ( get_magic_quotes_gpc() ) {
	        $_GET    = stripslashes_deep( $_GET    );
	        $_POST   = stripslashes_deep( $_POST   );
	        $_COOKIE = stripslashes_deep( $_COOKIE );
	}

	// Escape with wpdb.
	$_GET    = add_magic_quotes( $_GET    );
	$_POST   = add_magic_quotes( $_POST   );
	$_COOKIE = add_magic_quotes( $_COOKIE );
	$_SERVER = add_magic_quotes( $_SERVER );

	// Force REQUEST to be GET + POST.
	$_REQUEST = array_merge( $_GET, $_POST );
}
</pre>
<p>It checks to see if the server has Magic Quotes enabled. But instead of stripping the slashes when the feature is active, which is the standard practice, it 	<em>adds</em> slashes when it&#8217;s disabled. If I were working at a desk when I saw that, I would have hit my head on it.</p>
<p>Purportedly, it&#8217;s for backwards-compatibility with older, poorly-coded themes and plugins. While I understand the predicament, it&#8217;s a backwards solution. It encourages poor development practices, and creates obstacles for those trying to do things properly.</p>
<p>I hope they end up phasing this out sometime, but for now, we&#8217;ll just have to make do with this solution:</p>
<pre class="brush: php; title: ; notranslate">
$post = array_map('stripslashes_deep', $_POST);
$get = array_map('stripslashes_deep', $_GET);
$request = array_map('stripslashes_deep', $_REQUEST);
</pre>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2012/08/09/wordpresss-interesting-way-of-dealing-with-magic-quotes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/


Served from: www.webmaster-source.com @ 2026-04-12 13:55:15 by W3 Total Cache
-->