"When coding WordPress themes, especially if you do it regularly, its really useful to have a selection of code snippets in your toolbox to just ‘copy-n-paste’ as and when the functionality needs. Here are useful code snippets and hacks that will help you extend the capabilities of your WordPress site, and of course save your time.
How to Display a Thumbnail from a Youtube Using a Shortcode
First, you need to create the shortcode. To do so, copy the code below and paste it into your functions.php file./* Shortcode to display youtube thumbnail on your wordpress blog. Usage: [youtube_thumb id="VIDEO_ID" img="0" align="left"] VIDEO_ID= Youtube video id img=0,1,2 or 3 align= left,right,center */ function wp_youtube_video_thumbnail($atts) { extract(shortcode_atts(array( 'id' => '', 'img' => '0', 'align'=>'left' ), $atts)); $align_class='align'.$align; return '<img src="<a href="http://img.youtube.com/vi/'.$id.'/'.$img.'.jpg"" rel="nofollow">http://img.youtube.com/vi/'.$id.'/'.$img.'.jpg"</a>; alt="" class="'.$align_class.'" />'; } add_shortcode('youtube_thumb', 'wp_youtube_video_thumbnail');Once done, you can use the shortcode. It accept 3 parameters: The video ID, the image size (0 for 480*360px, 1 for 120*90) and the image alignment.
[youtube_thumb id="rNWeBVBqo2c" img="0" align="center"]Source
Turn On More Buttons in the WordPress Visual Editor
The Visual Editor in WordPress Admin is missing out some basic buttons like hr, del and ins. To activate more buttons, just add the following to functions.php:function add_more_buttons($buttons) { $buttons[] = 'hr'; $buttons[] = 'del'; $buttons[] = 'sub'; $buttons[] = 'sup'; $buttons[] = 'fontselect'; $buttons[] = 'fontsizeselect'; $buttons[] = 'cleanup'; $buttons[] = 'styleselect'; return $buttons; } add_filter("mce_buttons_3", "add_more_buttons")Source
How to Display Your Latest Google+ Update on Your WordPress Blog
Simply paste the following code where you want to display your latest Google+ update. Don’t forget to put your Google+ ID on line 3.<?php include_once(ABSPATH.WPINC.'/rss.php'); $googleplus = fetch_feed("http://plusfeed.appspot.com/103329092193061943712"); // Replace 103329092193061943712 by your own ID echo '<a href="'; echo $googleplus->items[0]['link']; echo '">'; echo $googleplus->items[0]['summary']; echo ''; ?>Source
Display the Number of Comments by Author
Copy the function below into your functions.php:function author_comment_count(){ $oneText = '1'; $moreText = '%'; global $wpdb; $result = $wpdb->get_var(' SELECT COUNT(comment_ID) FROM '.$wpdb->comments.' WHERE comment_author_email = "'.get_comment_author_email().'"' ); if($result == 1): echo str_replace('%', $result, $oneText); elseif($result > 1): echo str_replace('%', $result, $moreText); endif; }To display an author’s total number of comments, use the function like this inside of your comments loop:
author_comment_count();Source
How to Display Most Popular Posts from a Specific Category
Put the code below, in your theme sidebar or wherever You want to display your popular posts from specific category.<?php $args=array( 'cat' => 3, 'orderby' => 'comment_count', 'order' => 'DESC', 'post_type' => 'post', 'post_status' => 'publish', 'posts_per_page' => 6, 'caller_get_posts'=> 1 ); $my_query = null; $my_query = new WP_Query($args); if( $my_query->have_posts() ) { ?> <ul> <?php while ($my_query->have_posts()) : $my_query->the_post(); ?> <li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li> <?php endwhile; ?> </ul> <?php } wp_reset_query(); ?>Remeber to replace ’3′ with the category ID you want to display.
Source
Exclude Category from Feeds
Great for excluding categories or customizing feeds in all sorts of fun ways. Add this to your functions.php file.// custom feed query function customFeedquery($query) { if(is_feed()) { $query->set('cat','-8'); // exclude category 8 return $query; } } add_filter('pre_get_posts', 'customFeedquery');Source
How to Remove the “Read More” Jump
Paste the following snippet into your functions.php file:function wdc_no_more_jumping($post) { return '<a href="'.get_permalink($post->ID).'" class="read-more">'.'Continue Reading'.'</a>'; } add_filter('excerpt_more', 'wdc_no_more_jumping');Source
Share Via Email Link
A simple link that opens users default email client to send an email to a friend or colleague.<?php echo "<a href="mailto:type%20email%20address%20here?subject=I%20wanted%20to %20share%20this%20post%20with%20you%20from%20 <?php bloginfo('name'); ?>&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;body=<?php the_title(); ?> - <?php the_permalink(); ?>" title="Email to a friend/colleague"target="_blank">Share via Email</a>"; ?>Source
Insert Author Bio for Each Post
Start giving your authors proper credit by inserting the following code into your functions.php file. An author bio will be automatically be displayed at the end of every post.function get_author_bio ($content=''){ global $post; $post_author_name=get_the_author_meta("display_name"); $post_author_description=get_the_author_meta("description"); $html="<div class='clearfix' id='about_author'>\n"; $html.="<img width='80' height='80' class='avatar' src='http://www.gravatar.com/avatar.php?gravatar_id=".md5(get_the_author_email()). "&default=".urlencode($GLOBALS['defaultgravatar'])."&size=80&r=PG' alt='PG'/>\n"; $html.="<div class='author_text'>\n"; $html.="<h4>Author: ".$post_author_name."</h4>\n"; $html.= $post_author_description."\n"; $html.="</div>\n"; $html.="<div class='clear'></div>\n"; $content .= $html; } return $content; } add_filter('the_content', 'get_author_bio');Source
Disable Self Trackbacks
WordPress trackback system makes sure that other blogs are noticed when you link to them. Problem is, when you link to one of your own posts, on your own website, a trackback will be displayed although the link is coming from you. To disable this, put this in functions.php:function disable_self_ping( &$links ) { foreach ( $links as $l => $link ) if ( 0 === strpos( $link, get_option( 'home' ) ) ) unset($links[$l]); } add_action( 'pre_ping', 'disable_self_ping' );Source
Customize Default Avatar
If you are bored by the default avatars that comes with WordPress, you can easily add your own. Just create or download a better looking one, and then add the following to functions.php://Make a new default gravatar available on the dashboard function newgravatar ($avatar_defaults) { $myavatar = get_bloginfo('template_directory') . '/images/tweaker.jpg'; $avatar_defaults[$myavatar] = "Tweaker"; return $avatar_defaults; } add_filter( 'avatar_defaults', 'newgravatar' );Source
Automatic Social Media Links
This would go inside the loop, probably underneath the_content(), probably in your single.php file.// bookmark on Delicious <a rel="nofollow" href="http://delicious.com/post?url=<?php the_permalink(); ?>&title=<?php echo urlencode(get_the_title($id)); ?>" title="Bookmark this post at Delicious">Bookmark at Delicious</a> // submit to Digg <a rel="nofollow" href="http://digg.com/submit?phase=2&url=<?php the_permalink(); ?>" title="Submit this post to Digg">Digg this!</a> // tweet on Twitter <a rel="nofollow" href="http://twitter.com/home?status=<?php echo urlencode("Currently reading: "); ?><?php the_permalink(); ?>" title="Share this article with your Twitter followers">Tweet this!</a> // submit to StumbleUpon <a rel="nofollow" href="http://www.stumbleupon.com/submit?url=<?php the_permalink(); ?>&title=<?php echo urlencode(get_the_title($id)); ?>" title="Share this post at StumbleUpon">Stumble this!</a> // share on Facebook <a rel="nofollow" href="http://www.facebook.com/sharer.php?u=<?php the_permalink();?>&t=<?php echo urlencode(get_the_title($id)); ?>" title="Share this post on Facebook">Share on Facebook</a> // submit to Blinklist <a rel="nofollow" href="http://blinklist.com/index.php?Action=Blink/addblink.php&url=<?php the_permalink(); ?>&Title=<?php echo urlencode(get_the_title($id)); ?>" title="Share this post on Blinklist" >Blink This!</a> // store on Furl <a rel="nofollow" href="http://furl.net/storeIt.jsp?t=<?php echo urlencode(get_the_title($id)); ?>&u=<?php the_permalink(); ?>" title="Share this post on Furl">Furl This!</a> // submit to Reddit <a rel="nofollow" href="http://reddit.com/submit?url=<?php the_permalink(); ?>&title=<?php echo urlencode(get_the_title($id)); ?>" title="Share this post on Reddit">Share on Reddit</a>Source
How to Easily Disable Theme Changing
Simply paste the following piece of code in your functions.php file:add_action('admin_init', 'slt_lock_theme'); function slt_lock_theme() { global $submenu, $userdata; get_currentuserinfo(); if ($userdata->ID != 1) { unset($submenu['themes.php'][5]); unset($submenu['themes.php'][15]); } }Source
Pagination Without Plugin
To implement it, just add this code to functions.php:function pagination($prev = '«', $next = '»') { global $wp_query, $wp_rewrite; $wp_query->query_vars['paged'] > 1 ? $current = $wp_query->query_vars['paged'] : $current = 1; $pagination = array( 'base' => @add_query_arg('paged','%#%'), 'format' => '', 'total' => $wp_query->max_num_pages, 'current' => $current, 'prev_text' => __($prev), 'next_text' => __($next), 'type' => 'plain' ); if( $wp_rewrite->using_permalinks() ) $pagination['base'] = user_trailingslashit( trailingslashit( remove_query_arg( 's', get_pagenum_link( 1 ) ) ) . 'page/%#%/', 'paged' ); if( !empty($wp_query->query_vars['s']) ) $pagination['add_args'] = array( 's' => get_query_var( 's' ) ); echo paginate_links( $pagination ); };Now you can add the pagination using the pagination() function. Add it somewhere outside the loop, but inside the if( have_post() ) statement.
<?php if ( have_posts() ) : ?> <?php while ( have_posts() ) : the_post(); ?> // post goes here <?php endwhile; ?> <div class="pagination"><?php pagination('»', '«'); ?></div> <?php endif; ?>Source
Limit Search Results to Specific Post Types
Just place this in your functions.php file, and it will automatically filter your Search Results.function SearchFilter($query) { if ($query->is_search) { $query->set('post_type',array('post','page')); } return $query; } add_filter('pre_get_posts','SearchFilter');Source
Include jQuery in WordPress Theme
The following is the best way to go about it. Add the following to the theme’s functions.php file:if( !is_admin()){ wp_deregister_script('jquery'); wp_register_script('jquery', ("http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"), false, '1.3.2'); wp_enqueue_script('jquery'); }Source
Track Post Views Without a Plugin Using Post Meta
Add this snippet into the functions.php of your wordpress theme then follow step 1. and step 2. to display the number of views for each post.function getPostViews($postID){ $count_key = 'post_views_count'; $count = get_post_meta($postID, $count_key, true); if($count==''){ delete_post_meta($postID, $count_key); add_post_meta($postID, $count_key, '0'); return "0 View"; } return $count.' Views'; } function setPostViews($postID) { $count_key = 'post_views_count'; $count = get_post_meta($postID, $count_key, true); if($count==''){ $count = 0; delete_post_meta($postID, $count_key); add_post_meta($postID, $count_key, '0'); }else{ $count++; update_post_meta($postID, $count_key, $count); } }STEP 1 Place this snippet bellow “setPostViews” within the single.php inside the loop.
<?php setPostViews(get_the_ID()); ?>STEP 2 Place this snippet bellow within the template where you would like to display the number of views.
<?php echo getPostViews(get_the_ID()); ?>Source
DISPLAY POST VIEWS WITHIN ADMIN POST COLUMNS You can add a “Views” column to the posts columns by adding this in functions.php:
add_filter('manage_posts_columns', 'posts_column_views'); add_action('manage_posts_custom_column', 'posts_custom_column_views',5,2); function posts_column_views($defaults){ $defaults['post_views'] = __('Views'); return $defaults; } function posts_custom_column_views($column_name, $id){ if($column_name === 'post_views'){ echo getPostViews(get_the_ID()); } }Source
Get Facebook Fan Count Using Get_Transient and Wp_Remote_Get
Adding this snippet to the functions.php of your wordpress theme will let you cache and display your Facebook fan count.function get_fan_count(){ $fb_id = '106900272716297'; $count = get_transient('fan_count'); if ($count !== false) return $count; $count = 0; $data = wp_remote_get('http://api.facebook.com/restserver.php?method=facebook.fql.query&query=SELECT%20fan_count%20FROM%20page%20WHERE%20page_id='.$fb_id.''); if (is_wp_error($data)) { return 'whoa error!!!'; }else{ $count = strip_tags($data[body]); } set_transient('fan_count', $count, 60*60*24); // 24 hour cache return $count; }Add the this into your WordPress theme in the location you wish to display the count.
<? echo get_fan_count(); ?>Source
Get Feedburner Count Using Get_Transient and Wp_Remote_Get
Adding this snippet to the functions.php of your WordPress theme will get your feedburner subscriber count.function feed_subscribers(){ $feed_url = 'http://feeds.feedburner.com/yourname'; $count = get_transient('feed_count'); if ($count != false) return $count; $count = 0; $data = wp_remote_get('http://feedburner.google.com/api/awareness/1.0/GetFeedData?uri='.$feed_url.''); if (is_wp_error($data)) { return 'error'; }else{ $body = wp_remote_retrieve_body($data); $xml = new SimpleXMLElement($body); $status = $xml->attributes(); if ($status == 'ok') { $count = $xml->feed->entry->attributes()->circulation; } else { $count = 300; // fallback number } } set_transient('feed_count', $count, 60*60*24); // 24 hour cache echo $count; }Then add this to your WordPress theme in the location you wish to display the RSS feed subscriber count.
<? feed_subscribers(); ?>Source
Cached Twitter Follower Count
function get_follower_Count(){ $count = get_transient('follower_count'); if ($count !== false) return $count; $count = 0; $data = wp_remote_get('http://api.twitter.com/1/users/show.json?screen_name=YOURNAME'); if (!is_wp_error($data)) { $value = json_decode($data['body'],true); $count = $value['followers_count']; } set_transient('follower_count', $count, 60*60); // 1 hour cache return $count; }Add the first section of code to the functions.php of your wordpress theme. This code will cache your Twitter follower number for 1 hour and display the count within your template.
<? get_follower_count(); ?>Source
Reduce Spam on Your WordPress Blog by Using .htaccess
Simply paste the following lines into your .htaccess file. This file is located at the root of your WordPress install. Remember to always make a backup of your .htaccess file before editing it so, you’ll be able to restore it if something went wrong.<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_METHOD} POST RewriteCond %{REQUEST_URI} .wp-comments-post\.php* RewriteCond %{HTTP_REFERER} !.*yourdomainname.* [OR] RewriteCond %{HTTP_USER_AGENT} ^$ RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L] </IfModule>Don’t forget to replace yourdomainname on line 5 by your real domain name.
Source
Auto-Updating Date
Copyright © 2008-<?php echo date('Y'); ?>
Reset Admin Password Through Database
You’ll need to be able to run SQL on that database, like for example, through phpMyAdmin.UPDATE `wp_users` SET `user_pass` = MD5( 'new_password_here' ) WHERE `wp_users`.`user_login` = "admin_username";Source
"