Quick Hack to Remove Auto ‘P’ Tag from Contact Form 7

Recently I had a situation where I needed to remove the auto generated ‘p’ tag from Contact Form 7, but could not do it in the conventional way. Contact Form 7 uses a number of constants, set in the WP config file, which allow behaviour changes. I always found that a bit of an odd approach (configuring a plugin’s options from the entire site’s config file), but it generally caused little concern. On this project, however, it was not possible since the site lives on a multisite install and only one theme required the change.

Surprisingly, I found no other filter options that could be accessed easily. I’m sure it can be done, but in the time I had I didn’t find anything. So the quick and dirty answer was to write a jQuery hack that can simply remove the ‘p’ tag for this one site. Here it is:

jQuery(document).ready(function ($) {



Use ‘is_customize_preview’ and not ‘is_admin’ with Theme Customization API

Recently I came across a bug, and then another bug, when trying to solve a problem in the Theme Customization API. The site I was working on is using jQuery UI tabs, and when viewing the preview in the customzer, the script ended up looping and reloading the tabs over and over. This is a known bug (ticket 23225), so I decided I would add a condition to not load the jQuery UI script while in the customizer, using is_admin(). This did not work, so I decided to investigate further.

Turns out, is_admin() returns ‘false’ when in the customizer. Specifically, it returns ‘true’ until the page preview loads, at which point it returns ‘false’.

Happily, there is a new WP function that determines specifically when you are in the customizer. It is called ‘is_customize_preview()‘, and also returns a boolean. So a simple true == is_customize_preview() returns true in the customizer, and false everywhere else, including in other parts of the dashboard.

Here is the test and the results for those who are interested:

function debug_to_console( $data ) {
if ( is_array( $data ) || is_object( $data ) ) {
echo( "" );
} else {
echo( "" );

function test_is_admin() {
if( is_admin() ) {
debug_to_console( 'true is admin');
} else {
debug_to_console( 'false is admin');

add_action('wp_loaded', 'test_is_admin');

function test_is_customizer() {
if( true == is_customize_preview() ) {
debug_to_console( 'true is customize');
} elseif (false == is_customize_preview() ) {
debug_to_console( 'false is customize');

add_action('wp_loaded', 'test_is_customizer');

// front-end page: is_admin == false, is_customize_preview == false;
// admin page: is_admin == true, is_customize_preview == false;
// customizer: is_admin == false, is_customize_preview == true

Note: I was going to report this as a bug, but turns out it had been reported and is not considered a bug. Fair enough, just need to get the word out so developers don’t waste time on this small variance.

WordCamp T.O. 2014

I attended my first WordCamp on the weekend and had a really great time. Though the talks are fairly short and somewhat introductory (at least in the Advanced Developer track which I was following) there is a lot of information given, and it is a good overview of where WordPress is headed. I now have a pretty good list of topics I need to delve into, and am already figuring out where I can apply some of the new knowledge in a practical way.

Some of the topics on my list:

Backbonejs – Since WP has now included Backbone in the core (for the admin area for now) I think I should get familiar with it. The demonstration was great, and it really made things look slick in the dashboard. Since it is bundled all that is required is to enqueue it in the usual way and have it there ready to do my bidding.

Angularjs – I have been fiddling with this a little anyway, but again, though not part of the core, a very powerful javascript framework that offers some great features useful to WP. The syntax seems simpler than Backbone, but then I haven’t really explored enough to know what I’m talking about just yet.

WP-CLI – I have looked at this before and passed it over, even though I love command line stuff. But so many of the developers at WordCamp swore by WP-CLI that I realise I better give it another look. Anything that improves workflow, speeds up development and helps eliminate the mundane is tops in my book.

Unit Testing – I have a bit of experience with unit testing in straight php environments, but never in WP. I didn’t even know that WP has unit tests built in, for both php and javascript. Very cool. Need to get this built into the flow as well.

Vagrant – I’ve played around with Vagrant after being introduced to it in my php meetup, but have not made it a regular part of my workflow. Generally I am in control of the server environments that I work with, so I haven’t seen it as being all that useful. However lately there have been a lot of problems related to FastCGI, Nginx, Plesk, etc. that I am reconsidering. I would like to at least experiment, and see if it does indeed improve the dev environment.

SASS – I have used SASS before and loved it, but have not touched it in awhile. It’s used a lot now, and significantly improves performence. Plus it’s pretty fun from what I remember, and seems to integrate well with other tools. Definately on the ‘brush up’ list.

All in all it was a great experience, well worth it. I would highly recommend attending a WordCamp when one comes to your town. And of course it is all recorded, so you can ‘attend’ anytime by going to WordPress TV.

CPT Auto Menu now handles multiple custom post types

Version 1.1.0 of my Custom Post Type Auto Menu plugin is out, and I am happy to say it now handles multiple custom post types. This is a feature that was requested, and frankly does make a lot of sense. It took quite a bit of reconfiguring, so any previous users of the plugin will have to re-do their settings in order to make it work, even if they just update it (sorry about that!). But with only a single custom post type, that is an easy fix.

In the announcement post I explained how the plugin works. It is still basically the same, except that multiple post types, and therefore multiple menus and parent menu items can be selected.

An image of the CPT Settings screen

In this example three custom post types have been chosen: Motorycle, House and Project. After selecting CPTS’s it is neccessary to save in order to launch the Menu Settings tab.

Continue reading