Every month, lots of WordPress users are posting new hacks and tips about their favorite blogging platform on their own blog. Here is our personnal selection of the 10 most useful and ashtonishing WordPress hacks from June 2009.

Make your WordPress theme translatable

Using the power of .po files and this short code snippets, you can make your WordPress theme available in a wide variety of languages. This code have to be pasted in your functions.php file. The .po files should be located under your wp-content/themes/your-theme-name/languages directory.

If you’re interested in that topic, you should definitely subscribe to our RSS feed as we’re going to publish a full “Translatable WordPress themes” tutorial in a few days.

// Make theme available for translation
// Translations can be filed in the /languages/ directory
load_theme_textdomain( 'your-theme', TEMPLATEPATH . '/languages' );

$locale = get_locale();
$locale_file = TEMPLATEPATH . "/languages/$locale.php";
if ( is_readable($locale_file) )
	require_once($locale_file);

Sources : http://themeshaper.com/wordpress-theme-header-template-tutorial/

List all hooked WordPress functions

WordPress hooks are very useful because they allow you to “surcharge” an existing WP function with your own code. When something goes wrong, it should be useful to list all hooked functions for debugging purposes.
This code, which have to be pasted in your functions.php file, will display a list of all hooked WordPress functions.

function list_hooked_functions($tag=false){
 global $wp_filter;
 if ($tag) {
  $hook[$tag]=$wp_filter[$tag];
  if (!is_array($hook[$tag])) {
  trigger_error("Nothing found for '$tag' hook", E_USER_WARNING);
  return;
  }
 }
 else {
  $hook=$wp_filter;
  ksort($hook);
 }
 echo '<pre>';
 foreach($hook as $tag => $priority){
  echo "<br />&gt;&gt;&gt;&gt;&gt;\t<strong>$tag</strong><br />";
  ksort($priority);
  foreach($priority as $priority => $function){
  echo $priority;
  foreach($function as $name => $properties) echo "\t$name<br />";
  }
 }
 echo '</pre>';
 return;
}

Once you pasted the code, simply use the following to display the functions:

list_hooked_functions()

Source : Rarst on http://www.wprecipes.com/list-all-hooked-wordpress-functions

Disable WordPress automatic formatting on posts using a shortcode

If like me, you often display code snippets on your WordPress blog, you know how bad WordPress automatic formatting can be. Happilly, with the help from a very cool shortcode you can be able to disable it on a certain portion of text.

function my_formatter($content) {
	$new_content = '';
	$pattern_full = '{(\[raw\].*?\[/raw\])}is';
	$pattern_contents = '{\[raw\](.*?)\[/raw\]}is';
	$pieces = preg_split($pattern_full, $content, -1, PREG_SPLIT_DELIM_CAPTURE);

	foreach ($pieces as $piece) {
		if (preg_match($pattern_contents, $piece, $matches)) {
			$new_content .= $matches[1];
		} else {
			$new_content .= wptexturize(wpautop($piece));
		}
	}

	return $new_content;
}

remove_filter('the_content', 'wpautop');
remove_filter('the_content', 'wptexturize');

add_filter('the_content', 'my_formatter', 99);

Once done, you can use the [raw] shortcode in your posts:

[raw]Unformatted code[/raw]

Source : http://wordpress.org/support/topic/280732

How to detect the visitor browser within WordPress

You know it, cross browser compatibility is a problem to many websites. But what you probably don’t know is that WordPress have a built-in tool which can be used to retrieve the visitor’s browser.
The only thing you have to do is to paste this code in your functions.php file.

<?php
add_filter('body_class','browser_body_class');
function browser_body_class($classes) {
	global $is_lynx, $is_gecko, $is_IE, $is_opera, $is_NS4, $is_safari, $is_chrome, $is_iphone;

	if($is_lynx) $classes[] = 'lynx';
	elseif($is_gecko) $classes[] = 'gecko';
	elseif($is_opera) $classes[] = 'opera';
	elseif($is_NS4) $classes[] = 'ns4';
	elseif($is_safari) $classes[] = 'safari';
	elseif($is_chrome) $classes[] = 'chrome';
	elseif($is_IE) $classes[] = 'ie';
	else $classes[] = 'unknown';

	if($is_iphone) $classes[] = 'iphone';
	return $classes;
}
?>

Once done, your body tag will look like this, according to the current visitor browser:

<body class="home blog logged-in safari">

And you guessed it, you just have to style it your way using the style.css file.
Source : http://www.nathanrice.net/blog/browser-detection-and-the-body_class-function/

Creating user-defined RSS feeds in WordPress

If you need a custom RSS feed, like for example, a feed indexing only somes categories + tags, or if you redirected all WordPress RSS feeds to Feedburner but still want to be able to get a category feed, the solution is to use a page template.

Simply paste the following code in a new file, save it under the name custom-feed.php and upload it on your theme directory.
Once done, simply write a new page in WordPress Dashboard (Don’t type any text it in), and select custom-feed.php as a page template. If you don’t know anything about WordPress page templates, then you should start by checking out this article.

<?php
/*
Template Name: Custom Feed
*/

$numposts = 5;

function yoast_rss_date( $timestamp = null ) {
  $timestamp = ($timestamp==null) ? time() : $timestamp;
  echo date(DATE_RSS, $timestamp);
}

function yoast_rss_text_limit($string, $length, $replacer = '...') {
  $string = strip_tags($string);
  if(strlen($string) > $length)
    return (preg_match('/^(.*)\W.*$/', substr($string, 0, $length+1), $matches) ? $matches[1] : substr($string, 0, $length)) . $replacer;
  return $string;
}

$posts = query_posts('showposts='.$numposts);

$lastpost = $numposts - 1;

header("Content-Type: application/rss+xml; charset=UTF-8");
echo '<?xml version="1.0"?>';
?><rss version="2.0">

<channel>
  <title>Yoast E-mail Update</title>
  <link>http://yoast.com/</link>
  <description>The latest blog posts from Yoast.com.</description>

  <language>en-us</language>
  <pubDate><?php yoast_rss_date( strtotime($ps[$lastpost]->post_date_gmt) ); ?></pubDate>
  <lastBuildDate><?php yoast_rss_date( strtotime($ps[$lastpost]->post_date_gmt) ); ?></lastBuildDate>

  <managingEditor>joost@yoast.com</managingEditor>
<?php foreach ($posts as $post) { ?>
  <item>
    <title><?php echo get_the_title($post->ID); ?></title>
    <link><?php echo get_permalink($post->ID); ?></link>

    <description><?php echo '<![CDATA['.yoast_rss_text_limit($post->post_content, 500).'<br/><br/>Keep on reading: <a href="'.get_permalink($post->ID).'">'.get_the_title($post->ID).'</a>'.']]>';  ?></description>

    <pubDate><?php yoast_rss_date( strtotime($post->post_date_gmt) ); ?></pubDate>
    <guid><?php echo get_permalink($post->ID); ?></guid>
  </item>
<?php } ?>

</channel>
</rss>

Source : Yoast on http://www.wprecipes.com/creating-user-defined-rss-feeds-in-wordpress

Display your tags in a dropdown menu

In my opinion, tag clouds are not easily readables. A better way to display your tags is to use a dropdown menu. The code below consists of a function which have to be pasted in your functions.php file. Once you have the function, you’ll have to call it to create the dropdown menu, as shown in the second code example.

<?php
function dropdown_tag_cloud( $args = '' ) {
	$defaults = array(
		'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45,
		'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC',
		'exclude' => '', 'include' => ''
	);
	$args = wp_parse_args( $args, $defaults );

	$tags = get_tags( array_merge($args, array('orderby' => 'count', 'order' => 'DESC')) ); // Always query top tags

	if ( empty($tags) )
		return;

	$return = dropdown_generate_tag_cloud( $tags, $args ); // Here's where those top tags get sorted according to $args
	if ( is_wp_error( $return ) )
		return false;
	else
		echo apply_filters( 'dropdown_tag_cloud', $return, $args );
}

function dropdown_generate_tag_cloud( $tags, $args = '' ) {
	global $wp_rewrite;
	$defaults = array(
		'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45,
		'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC'
	);
	$args = wp_parse_args( $args, $defaults );
	extract($args);

	if ( !$tags )
		return;
	$counts = $tag_links = array();
	foreach ( (array) $tags as $tag ) {
		$counts[$tag->name] = $tag->count;
		$tag_links[$tag->name] = get_tag_link( $tag->term_id );
		if ( is_wp_error( $tag_links[$tag->name] ) )
			return $tag_links[$tag->name];
		$tag_ids[$tag->name] = $tag->term_id;
	}

	$min_count = min($counts);
	$spread = max($counts) - $min_count;
	if ( $spread <= 0 )
		$spread = 1;
	$font_spread = $largest - $smallest;
	if ( $font_spread <= 0 )
		$font_spread = 1;
	$font_step = $font_spread / $spread;

	// SQL cannot save you; this is a second (potentially different) sort on a subset of data.
	if ( 'name' == $orderby )
		uksort($counts, 'strnatcasecmp');
	else
		asort($counts);

	if ( 'DESC' == $order )
		$counts = array_reverse( $counts, true );

	$a = array();

	$rel = ( is_object($wp_rewrite) && $wp_rewrite->using_permalinks() ) ? ' rel="tag"' : '';

	foreach ( $counts as $tag => $count ) {
		$tag_id = $tag_ids[$tag];
		$tag_link = clean_url($tag_links[$tag]);
		$tag = str_replace(' ', '&nbsp;', wp_specialchars( $tag ));
		$a[] = "\t<option value='$tag_link'>$tag ($count)</option>";
	}

	switch ( $format ) :
	case 'array' :
		$return =& $a;
		break;
	case 'list' :
		$return = "<ul class='wp-tag-cloud'>\n\t<li>";
		$return .= join("</li>\n\t<li>", $a);
		$return .= "</li>\n</ul>\n";
		break;
	default :
		$return = join("\n", $a);
		break;
	endswitch;

	return apply_filters( 'dropdown_generate_tag_cloud', $return, $tags, $args );
}
?>

Once you’ve pasted the function on your functions.php file, you can use it to get your dropdown menu of tags.
Just open the file where you want the list to be displayed (Most of the time it is sidebar.php) and paste the following code:

<select name="tag-dropdown" onchange="document.location.href=this.options[this.selectedIndex].value;">
	<option value="#">Liste d'auteurs</option>
	<?php dropdown_tag_cloud('number=0&order=asc'); ?>
</select>

Source : http://www.wprecipes.com/wordpress-hack-display-your-tags-in-a-dropdown-menu

Retrieving custom fields outside the loop

Custom fields are one of the most usefull WordPress function for customizing themes, because they allow you to add any kind of information you need to your posts.
The only problem is to be able to retrieve custom fields outside the WordPress loop. Happilly, this code can do that.

<?php
global $wp_query;
$postid = $wp_query->post->ID;
echo get_post_meta($postid, 'customField', true);
?>

Source : http://www.wprecipes.com/wordpress-how-to-get-custom-fields-outside-the-loop

Create custom “Read more” links on your WordPress blog

To achieve this hack, the first step is to edit your posts and create custom fields.
Give them custom_more as a key, and the text to display as a value.
Once done, edit your index.php file (As well as category.php, search.php, etc) and find a line similar to this:

the_content("Read more");

Simply replace it with this code:

<?php $custommore = get_post_meta($post->ID, 'custom_more', true); ?>
<?php if (!$custommore) { $custommore = 'Read More &raquo;'; } ?>
<?php the_content($custommore); ?>

Allright, you’re done.
Now, if you create a custom field named custom_more, its value will be displayed instead of the classic “Read more” link.
Source : http://www.cagintranet.com/archive/wordpress-tip-3-awesome-custom-field-tricks/

Get tags specific to a particular category on your WordPress blog

As I said before, tag clouds are quite unreadable. Another clever way to display them is to use only the tags related to a specific category.

This code will output all tags related to a category. Don’t forget to change the category name on line 2.

<?php
	query_posts('category_name=work&showposts=-1');
	if (have_posts()) : while (have_posts()) : the_post();
        $posttags = get_the_tags();
		if ($posttags) {
			foreach($posttags as $tag) {
				$all_tags_arr[] = $tag -> name; //USING JUST $tag MAKING $all_tags_arr A MULTI-DIMENSIONAL ARRAY, WHICH DOES WORK WITH array_unique
			}
		}
	endwhile; endif; 

	$tags_arr = array_unique($all_tags_arr); //REMOVES DUPLICATES
	//echo '<pre>'.print_r($tags_arr, true).'</pre>';

       foreach ($tags_arr as $tag) {
           echo '<li><a href="http://yourblog.com/tag/'.$tag.'">'.$tag.'</a></li>';
       }

?>

Source : http://www.wprecipes.com/get-tags-specific-to-a-particular-category-on-your-wordpress-blog

Get rid of auto media enclosures on your WordPress blog

When you’re adding a multimedia file as such as a mp3 or flv file, WordPress automatically create a custom field named enclosure and add the media url to your rss feed. While this is great for podcasters, it is unusefull for most bloggers.

The code below will disable automatic media enclosures. Just paste it on your functions.php file, save the file, and you’ll be done!

function delete_enclosure(){
    return '';
}
add_filter( 'get_enclosed', 'delete_enclosure' );
add_filter( 'rss_enclosure', 'delete_enclosure' );
add_filter( 'atom_enclosure', 'delete_enclosure' );

Source : http://www.webinventif.fr/empecher-enclosure-automatique-wordpress/

Want more WordPress hacks and tips?

If your answer to the above question was a definitive “YES!”, I urge you to visit my other blog, WpRecipes, which provide daily WordPress hacks to do everything with your WP blog.

Related Posts

No related posts.
 

34 Comments

  1. Posted July 6, 2009 at 5:52 pm | Permalink

    WOW! This post is packed with so much good stuff that I don’t know where to start. I’m going to put in a few of these things tonight.
    Great Job.

  2. Posted July 6, 2009 at 7:39 pm | Permalink

    Wow, my function made it to quite nice list. :)

  3. Posted July 6, 2009 at 7:57 pm | Permalink

    @Rart: It is a great function, and it totally deserves its place in that list :)

  4. Posted July 6, 2009 at 9:18 pm | Permalink

    Awesome post, Jean! Whilst it is sort of a round-up of WP Recipes posts, it is nice to have them all in one place!

  5. Posted July 6, 2009 at 11:22 pm | Permalink

    @Alex Denning: Thanks! Yes this post is a compilation of the 10 most usefull recipes published last month at WpRecipes. If people like it, I’ll do a similar post on each new month.

  6. agilius
    Posted July 7, 2009 at 7:37 am | Permalink

    More WP Hacks! Yey! Thank you Jean, well done with this article. Cats who code is one of my top 5 sites when it comes to wordpress help!

  7. Posted July 7, 2009 at 9:51 am | Permalink

    Awesome tut! Thanks for sharing

  8. Posted July 7, 2009 at 9:53 am | Permalink

    Regarding the tip “Disable WordPress automatic formatting on posts using a shortcode” – isn’t there a proper way to parse shortcodes with built-in WordPress (shortcode_atts and add_shortcode) functions, rather than using preg_split and preg_match?

    Just trying to learn the proper way to do it. It works just fine as it is though. Thank you.

  9. Posted July 7, 2009 at 12:08 pm | Permalink

    Simply great!

    I liked the most is the RAW tip because, it is a pain for me to edit the post which has sample code and it gets converted and i manually have to edit it.

    Other tips are also great.

  10. Posted July 7, 2009 at 4:30 pm | Permalink

    Hey thanks for the awesome post Jean.

    I am currently using wordpress to run my blog. I am always looking for new ways to improve my blog. I try and keep upto date with the latest pluggins.

    It is awesome to know that if I want to expand my blog so that different nationalities can read it then I can.

    Some of the others mentioned here look useful as well. Will spend a bit of time going through them properly and pick out the ones that could help my site.

    Thanks once again
    David

  11. Posted July 8, 2009 at 10:59 am | Permalink

    great you ve mentioned lots of good things in this post..can be implemented..thanks for tips and i really didnt know how to identify visitor’s browser thanks for that specially..keep writing..

  12. Posted July 8, 2009 at 12:05 pm | Permalink

    Nice one, Jean. Automatic formatting certainly comes in handy right at this point. The other 9 hacks make my head spin a little.

    Yan

  13. Posted July 8, 2009 at 3:53 pm | Permalink

    The translation and browser detecting tool are really handy! Thanks!

    Looking forward to “Translatable WordPress themes” tutorial!

  14. Posted July 8, 2009 at 7:18 pm | Permalink

    I’ve been trying to put a custom ‘read more’ link on my blog for ages – now i’ve managed it thanks! Might make it translatable next! thanks alot

  15. Posted July 8, 2009 at 10:17 pm | Permalink

    @Michelle: You should definitely subscribe to our rss feed, because the “Translatable WordPress themes” tutorial is comming out soon!

  16. Posted July 8, 2009 at 10:37 pm | Permalink

    Simply great!

    I liked the most is the RAW tip because, it is a pain for me to edit the post which has sample code and it gets converted and i manually have to edit it.

    Other tips are also great.

  17. Posted July 9, 2009 at 2:11 pm | Permalink

    Wonderful information. I will try a few tips on my blog.

    Thanks a ton!!!

  18. Posted July 16, 2009 at 7:01 pm | Permalink

    Thanks a lot for the share. With this hacks, Wordpress can be really hardly tweaked and customized.

  19. Posted July 16, 2009 at 7:12 pm | Permalink

    Nice info. Great source of wordpress editor. Your hack is awesome

  20. Posted July 18, 2009 at 2:37 pm | Permalink

    Thanks for sharing useful info, I`ll try to add into my blog.

  21. Posted July 19, 2009 at 5:31 pm | Permalink

    Thanks for the cool hacks. Just stumbled upon it. Was looking to hack wp_rss function…Some of your hacks are quite good.

  22. Posted July 28, 2009 at 6:18 am | Permalink

    These hacks are super cool. Thanks for the share. I will be using some of these tonight.

  23. Posted July 29, 2009 at 1:47 pm | Permalink

    I am hacking “Create custom “Read more” links on your WordPress blog” into my blog. great list

  24. Posted July 29, 2009 at 6:45 pm | Permalink

    Great hacks! Thanks for sharing. With the use of these hacks, WP would be much better!

  25. Posted August 2, 2009 at 12:25 am | Permalink

    Great! Thanks for this nice roundup of wordpress hacks. I’ll definitely implement some in my blog. :)

  26. Posted August 4, 2009 at 7:27 am | Permalink

    There are so many things you can do with your wordpress blog, if you just know the tricks. By the way, is it easy to solve bugs with wordpress hooks? What if my code begins to not work after using wordpress hooks? Do you have any more tips? Thanks.

  27. Posted August 4, 2009 at 10:28 am | Permalink

    @Marlyn S.

    See second snippet in this post? It was made exactly to figure out WP hooks. :)

  28. Posted August 6, 2009 at 6:36 pm | Permalink

    Pretty usefull list. Some of these things are so simple, but effective. I likey likey :D

  29. NotAlame
    Posted August 17, 2009 at 6:32 pm | Permalink

    Thanks a lot, very useful.

  30. Posted August 31, 2009 at 6:54 pm | Permalink

    Thanks for sharing these. I am now using your ‘Read more’ hack on one of my blogs :)

  31. Posted September 7, 2009 at 6:18 pm | Permalink

    awesome thanks a ton !

    how to show time of post in wordpress blog

  32. Posted October 22, 2009 at 12:02 pm | Permalink

    Totally awesome! Sweet collection.

  33. Posted December 7, 2009 at 6:01 pm | Permalink

    greatttt great great infoo.. wooowww..
    thanks..

    this what i looking for..

  34. Posted April 10, 2010 at 12:23 pm | Permalink

    I Thank you very much really.I learned from your site however I’m Jeweller.

22 Trackbacks

  1. By Wordpress > Top 10 hacks for June 2009 on July 6, 2009 at 5:36 pm

    [...] is the original post: Wordpress > Top 10 hacks for June 2009 Tags: Comments0 Leave a Reply Click here to cancel [...]

  2. [...] the original post here: Top 10 WordPress hacks from June '09   WhatPriceUptimeDiskspaceBandwidthRatingsDetails Starts at $4.95 [...]

  3. [...] the original post:  Top 10 WordPress hacks from June '09 Share and [...]

  4. [...] Original post: Top 10 WordPress hacks from June '09 [...]

  5. [...] Top 10 WordPress hacks from June ‘09 Submitted by Webmasterish [...]

  6. [...] Via CatsWhoCode [...]

  7. [...] Cats Who Code has put together an awesome list of the top 10 WordPress hacks from June 2009. The list has some hacks that I’ve never seen before on other websites, and are pretty unique and well-worth checking-out. Here’s one, and click over to see the full list of hacks: [...]

  8. By Multiple WordPress Loops Explained on July 9, 2009 at 4:15 pm

    [...] Top 10 WordPress hacks from June ‘09 [...]

  9. [...] Top 10 WordPress hacks from June ‘09- If like me, you often display code snippets on your WordPress blog, you know how bad WordPress automatic formatting can be. Happilly, with the help from a very cool shortcode you can be able to disable it on a certain portion of text. … Yoast E-mail Update http://yoast.com/ The latest blog posts from Yoast.com. [...]

  10. [...] Top 10 WordPress hacks from June ‘09 [...]

  11. [...] Top 10 WordPress hacks from June ‘09 (tags: wordpress tips hacks php webdesign webdev css code) [...]

  12. [...] Top 10 WordPress hacks from June ‘09 [...]

  13. [...] 35.Top 10 WordPress hacks from June ‘09 [...]

  14. [...] 35.Top 10 WordPress hacks from June ‘09 [...]

  15. [...] Top 10 WordPress Hacks from June ‘09 – A roundup of recent hacks, including listing all hooked WP functions and detecting which browser a visitor is using. [...]

  16. [...] Top 10 WordPress hacks from June ‘09 [...]

  17. [...] Top 10 WordPress hacks from June ‘09 [...]

  18. By 10 Useful WordPress Coding Techniques « Tech7.Net on October 20, 2009 at 5:25 pm

    [...] Top 10 WordPress hacks from June ‘09 [...]

  19. [...] Top 10 WordPress hacks from June ‘09 [...]

  20. [...] Top 10 WordPress Hacks from June ‘09 – A roundup of recent hacks, including listing all hooked WP functions and detecting which browser a visitor is using. [...]

  21. [...] Top 10 WordPress Hacks de junio ‘09 – Resumen semanal de hacks recientes, incluida la lista de todas las funciones de gancho WP y detectar que el navegador de un visitante está utilizando. [...]

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Subscribe without commenting

  • Smashing Network
  • Hosted by VPS.net and Akamai CDN
WordPress Appliance - Powered by TurnKey Linux