<?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>WPStorm &#187; Tweak</title>
	<atom:link href="http://wpstorm.net/tag/tweak/feed/" rel="self" type="application/rss+xml" />
	<link>http://wpstorm.net</link>
	<description>Coding, Wordpress and Plugin Development</description>
	<lastBuildDate>Mon, 30 Jan 2012 00:25:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Editor Styles for Custom Post Types in WordPress 3.0</title>
		<link>http://wpstorm.net/2010/04/editor-styles-custom-post-types-wordpress-3-0/</link>
		<comments>http://wpstorm.net/2010/04/editor-styles-custom-post-types-wordpress-3-0/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 16:27:51 +0000</pubDate>
		<dc:creator>Lotta</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tweak]]></category>
		<category><![CDATA[WordPress 3.0]]></category>

		<guid isPermaLink="false">http://wpstorm.net/?p=333</guid>
		<description><![CDATA[I&#8217;ve had some fun playing around with the recently released WordPress 3.0, Beta 1. One of my new favorite additions is the add_editor_style() which allows you to assign a CSS file for the TinyMCE when editing posts, pages and the new custom post types. This is very handy to get closer to a WYSIWYG experience ...]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had some fun playing around with the recently released <a href="http://wordpress.org/development/2010/04/wordpress-3-0-beta-1/">WordPress 3.0, Beta 1</a>. One of my new favorite additions is the add_editor_style() which allows you to assign a CSS file for the TinyMCE when editing posts, pages and the new custom post types. This is very handy to get closer to a WYSIWYG experience in WordPress&#8217; editor and not having to preview the posts all the times while writing, to check where line breaks end up and so on (if you care about those things).</p>
<p>I&#8217;m also loving the new Custom Post Types, and on one of my sites, I have setup a few different post types. On the frontend I have different widths for posts, pages and my new WordPress 3.0 custom post type &#8216;portfolio. I wanted to reflect the different widths in my admin editor style sheet as well. The posts are the narrowest ones, while pages are wider and my custom post type portfolio is the widest, so I have made 3 style sheets which are pretty much the same, with the exception of the</p>
<pre class="brush: css; title: ; notranslate">
html .mceContentBody {
	max-width:640px;
}
</pre>
<p>which sets the width for the editor. My style sheets are named; editor-style-post.css, editor-style-page.css and editor-style-portfolio.css.<br />
To be able to decide which post type I&#8217;m editing I check post_type in the $current_screen variable and then set the correct CSS according to that.</p>
<p>The code I end up with adding to my <em>functions.php</em> file looks something like this.</p>
<pre class="brush: php; title: ; notranslate">
function my_editor_style() {
	global $current_screen;
	switch ($current_screen-&gt;post_type) {
	case 'post':
		add_editor_style('editor-style-post.css');
		break;
	case 'page':
		add_editor_style('editor-style-page.css');
		break;
	case 'portfolio':
		add_editor_style('editor-style-portfolio.css');
		break;
	}
}
add_action( 'admin_head', 'my_editor_style' );
</pre>
<p>By expanding on the code above you can continue defining stylesheets for any custom post types you might end up with in WordPress 3.0.</p>
<p>That&#8217;s it folks, cheers!</p>
]]></content:encoded>
			<wfw:commentRss>http://wpstorm.net/2010/04/editor-styles-custom-post-types-wordpress-3-0/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>Optimize and style Contact Form 7 for WordPress</title>
		<link>http://wpstorm.net/2009/06/optimize-style-contact-form-7-wordpress/</link>
		<comments>http://wpstorm.net/2009/06/optimize-style-contact-form-7-wordpress/#comments</comments>
		<pubDate>Sat, 06 Jun 2009 12:52:04 +0000</pubDate>
		<dc:creator>Lotta</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Contact]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Tweak]]></category>

		<guid isPermaLink="false">http://wpstorm.net/?p=244</guid>
		<description><![CDATA[One of my favorite WordPress plugins is Contact Form 7 which I use on several of my WordPress based sites. Even though it&#8217;s highly customizable and configurable I have a few gripes with some hard coded functions in it. You can always edit the plugin file, which I did at first, but then you have ...]]></description>
			<content:encoded><![CDATA[<p>One of my favorite WordPress plugins is <a title="Contact Form for WordPress" href="http://ideasilo.wordpress.com/2007/04/30/contact-form-7/">Contact Form 7</a> which I use on several of my WordPress based sites. Even though it&#8217;s highly customizable and configurable I have a few gripes with some hard coded functions in it. You can always edit the plugin file, which I did at first, but then you have to reapply your edits every time the plugin gets updated, which can be cumbersome as this plugin gets updated quite often. So instead of keep editing the plugin file on every update I created some overrides instead.</p>
<h3>The Issues</h3>
<ul>
<li>The url to the AJAX loader symbol is hardcoded into the plugin, so if you don&#8217;t use a white background in your theme the loading symbol looks quite ugly. If you replace the default icon with your own it gets overwritten on each plugin update.</li>
<li>The javascripts for the plugin gets loaded on every single page of the site no matter if the plugin is used or not on that page, which adds unnecessary loading time where it&#8217;s not needed.</li>
<li>The path to the stylesheet for the validation and submit messages is also hardcoded into the plugin, and if you edit the stylesheet to fit your theme, the edits gets lost on each update, and you have to reupload your custom stylesheet for the plugin.</li>
</ul>
<h3>The Solutions</h3>
<p>So to not have to edit the plugin file, I added a few overrides in my theme&#8217;s functions.php file instead to change the behaviour of the plugin where needed.</p>
<p>Let&#8217;s start by taking care of the AJAX loading symbol. To change the path to the gif file I use a regular expression to update the url.</p>
<pre class="brush: php; title: ; notranslate">// Change the URL to the ajax-loader image
function change_wpcf7_ajax_loader($content) {
	if ( is_page('contact') ) {
		$string = $content;
		$pattern = '/(&lt;img class=&quot;ajax-loader&quot; style=&quot;visibility: hidden;&quot; alt=&quot;ajax loader&quot; src=&quot;)(.*)(&quot; \/&gt;)/i';
		$replacement = &quot;$1&quot;.get_template_directory_uri().&quot;/images/ajax-loader.gif$3&quot;;
		$content =  preg_replace($pattern, $replacement, $string);
	}
	return $content;
}
add_filter( 'the_content', 'change_wpcf7_ajax_loader', 100 );</pre>
<p>This function filters the content, tracks down the AJAX loader tag and replaces the URL with a path to the current {theme folder}/images/ajax-loader.gif. So you can have your own custom AJAX loader stored in your theme folder instead, untouched on each plugin update. I added the if( is_page(contact) ) {} to the function to make sure the filter only runs on pages where needed, to not waste CPU cycles on pages where the plugin is not used. Contact is the name of the page where I use the form, change it to the name, or names of pages where you use the plugin.</p>
<p>Okay, now let&#8217;s see take care of the script loading on each page of the site.</p>
<pre class="brush: php; title: ; notranslate">// Add the Contact Form 7 scripts on selected pages
function add_wpcf7_scripts() {
	if ( is_page('contact') )
		wpcf7_enqueue_scripts();
}
if ( ! is_admin() &amp;&amp; WPCF7_LOAD_JS )
	remove_action( 'init', 'wpcf7_enqueue_scripts' );
add_action( 'wp', 'add_wpcf7_scripts' );</pre>
<p>This function removes the call to add the Contact Form 7 scripts on every page, and then adds back the call where needed, in my case I add them back at the page called contact, but change that to whatever works for you.</p>
<p>And finally, let&#8217;s deal with the stylesheet.</p>
<pre class="brush: php; title: ; notranslate">function remove_wpcf7_stylesheet() {
	remove_action( 'wp_head', 'wpcf7_wp_head' );
}
add_action( 'init' , 'remove_wpcf7_stylesheet' );</pre>
<p>Here I actually remove the call to the stylesheet completely. As I have made my own style that fits my theme, I don&#8217;t use the default stylings. If you use the default stylings but just want it to load where needed, you could use an is_page condition like on the loading of the scripts. I could have put the Contact Form 7 Stylesheet in the theme folder using the same technique as on the AJAX loader to leave it untouched on a plugin update, but as I like to keep the calls to external files to a minimum to have the site load as fast as possible, I just put the WPCF7 CSS styles directly in my default style.css of my theme instead and got rid of the plugin stylesheet loading.</p>
<h3>The Final Code</h3>
<p>And here is what the final code looks like, ready to get pasted into the functions.php file in the theme you are using.</p>
<pre class="brush: php; title: ; notranslate">/**
 * Functions:	Optimize and style Contact Form 7 - WPCF7
 *
 */
// Remove the default Contact Form 7 Stylesheet
function remove_wpcf7_stylesheet() {
	remove_action( 'wp_head', 'wpcf7_wp_head' );
}

// Add the Contact Form 7 scripts on selected pages
function add_wpcf7_scripts() {
	if ( is_page('contact') )
		wpcf7_enqueue_scripts();
}

// Change the URL to the ajax-loader image
function change_wpcf7_ajax_loader($content) {
	if ( is_page('contact') ) {
		$string = $content;
		$pattern = '/(&lt;img class=&quot;ajax-loader&quot; style=&quot;visibility: hidden;&quot; alt=&quot;ajax loader&quot; src=&quot;)(.*)(&quot; \/&gt;)/i';
		$replacement = &quot;$1&quot;.get_template_directory_uri().&quot;/images/ajax-loader.gif$3&quot;;
		$content =  preg_replace($pattern, $replacement, $string);
	}
	return $content;
}

// If the Contact Form 7 Exists, do the tweaks
if ( function_exists('wpcf7_contact_form') ) {
	if ( ! is_admin() &amp;&amp; WPCF7_LOAD_JS )
		remove_action( 'init', 'wpcf7_enqueue_scripts' );

	add_action( 'wp', 'add_wpcf7_scripts' );
	add_action( 'init' , 'remove_wpcf7_stylesheet' );
	add_filter( 'the_content', 'change_wpcf7_ajax_loader', 100 );
}</pre>
<p>This tweak was published when Contact Form 7 was at version 1.10, and should continue to work just fine as long as no major changes is made to the inner workings of the plugin.</p>
]]></content:encoded>
			<wfw:commentRss>http://wpstorm.net/2009/06/optimize-style-contact-form-7-wordpress/feed/</wfw:commentRss>
		<slash:comments>53</slash:comments>
		</item>
	</channel>
</rss>

