20 Time Saving Code Snippets for WordPress Developers

When working on WordPress themes, it’s really useful to have a collection of code snippets in your code library to just copy and paste when a particular functionality needed. These code snippets can save your lots of time and speed up development. As we know that WordPress has a huge community which published tons of super handy code snippets and tips to help developers. Here in this post, I have compiled some of my favourite WordPress code snippets which surely extend functionality and save your precious time when developing WordPress themes.

All of these code snippets are simply cut-and-paste solutions for your theme’s functions.php file.

Code Snippets for WordPress Developers

Display lightbox with all images embedded in a post

add_filter('the_content', 'add_lightbox');
function add_lightbox($content) {
       global $post;
       $pattern ="/<a(.*?)href=('|\")(.*?).(bmp|gif|jpeg|jpg|png)('|\")
       $replacement = '<a$1href=$2$3.$4$5 rel="lightbox" 
       $content = preg_replace($pattern, $replacement, $content);
       return $content;

Get related posts by posts current author

function get_related_author_posts() {
    global $authordata, $post;
    $authors_posts = get_posts( array( 'author' => $authordata->ID, 
'post__not_in' => array( $post->ID ), 'posts_per_page' => 10 ) );
    $output = '<ul>';
    foreach ( $authors_posts as $authors_post ) {
        $output .= '<li><a href="' . get_permalink( $authors_post->ID 
) . '">' . apply_filters( 'the_title', $authors_post->post_title,
 $authors_post->ID ) . '< /a>< /li>';
    $output .= '< /ul>';
    return $output;

Get total number of images in media library

function get_image_count(){
	$query_img_args = array(
		'post_type' => 'attachment',
		'post_mime_type' =>array(
                		'jpg|jpeg|jpe' => 'image/jpeg',
                		'gif' => 'image/gif',
				'png' => 'image/png',
		'post_status' => 'inherit',
		'posts_per_page' => -1,
	$query_img = new WP_Query( $query_img_args );
	echo $query_img->post_count;

Restrict wp-admin access to subscribers

function restrict_access_admin_panel(){
	global $current_user;
	if ($current_user->user_level <  4) {
		wp_redirect( get_bloginfo('url') );
add_action('admin_init', 'restrict_access_admin_panel', 1);

Increase the excerpt field height

add_action('admin_head', 'excerpt_textarea_height');
function excerpt_textarea_height() {
    <style type="text/css">
        #excerpt{ height:400px; }

Automatically add the Google +1 button

add_filter('the_content', 'add_google_plusone');
function add_google_plusone($content) {
	$content = $content.'

‘; return $content; } add_action (‘wp_enqueue_scripts’,’google_plusone_script’); function google_plusone_script() { wp_enqueue_script(‘google-plusone’, ‘https://apis.google.com/js/plusone.js’, array(), null); }

Limit search to specific post types

function limitPostSearch($query) { 
if ($query->is_search) { 
return $query; 


Automatically spam comments with a very long url

function check_spam( $approved , $commentdata ) {
    return ( strlen( $commentdata['comment_author_url'] ) > 50 ) ? 'spam'
 : $approved;
  add_filter( 'pre_comment_approved', 'check_spam', 99, 2 );

Add custom text to WordPress login page

function add_login_message( $message ) {
    if ( empty($message) ){
        return "<p class='message'>Welcome to this site. Please log in 
to continue</p>";
    } else {
        return $message;
add_filter( 'login_message', 'add_login_message' );

Force specific WordPress pages to be SSL secure

function force_page_ssl( $force_ssl, $post_id = 0, $url = '' ) {
    if ( $post_id == 25 ) {
        return true
    return $force_ssl;
add_filter('force_ssl' , 'force_page_ssl', 10, 3);

Clean up wp_head() without a plugin

remove_action( 'wp_head', 'rsd_link' );
remove_action( 'wp_head', 'wlwmanifest_link' );
remove_action( 'wp_head', 'wp_generator' );
remove_action( 'wp_head', 'start_post_rel_link' );
remove_action( 'wp_head', 'index_rel_link' );
remove_action( 'wp_head', 'adjacent_posts_rel_link' );
remove_action( 'wp_head', 'wp_shortlink_wp_head' );

Automatically link Twitter usernames in WordPress

function twtreplace($content) {
	$twtreplace = preg_replace('/([^a-zA-Z0-9-_&])@([0-9a-zA-Z_]+)/',"$1
 <a href=\"http://twitter.com/$2\" target=\"_blank\" rel=\"nofollow\">@$2</a>
	return $twtreplace;

add_filter('the_content', 'twtreplace');   
add_filter('comment_text', 'twtreplace');

Redirect WordPress Feeds to Feedburner

add_action('template_redirect', 'rss_redirect');
function rss_redirect() {
	if ( is_feed() && !preg_match('/feedburner|feedvalidator/i'
		header('Location: http://feeds.feedburner.com/yourfeedname');
		header('HTTP/1.1 302 Temporary Redirect');

Email contributors when posts published

function email_notification($post_id) {
   $post = get_post($post_id);
   $author = get_userdata($post->post_author);

   $message = "
      Hi ".$author->display_name.",
      Your post, ".$post->post_title." has just been published. Well done!
   wp_mail($author->user_email, "Your article is online", $message);
add_action('publish_post', 'email_notification');

Add a Favicon

add_action( 'wp_head', 'add_favicon');
function add_favicon(){
	echo " <link href="" . get_stylesheet_directory_uri() . 
"/favicon.ico" rel="shortcut icon"  />" . "\n";

Shortcode to Display External Files

function show_external_file( $atts ) {
  extract( shortcode_atts( array(
    'file' => ''
  ), $atts ) );

  if ($file!='')
    return @file_get_contents($file);

add_shortcode( 'show_file', 'show_external_file' );

Create Custom Shortcodes

function show_message() {
return 'Hi How Are You!';
add_shortcode('message', 'show_message');

You can then use [message] wherever you want to display the content of the shortcode.

Add Content to the End of Each RSS Post

function feedFilter($query) {
    if ($query->is_feed) {
    return $query;

function feedContentFilter($content) {
    $content .= 'Extra RSS content goes here... ';

    return $content;

Detect which browser your visitors are using

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;

Insert Author Bio for Each Post

function display_author_bio ($content=''){
    global $post;

    $html="<div class='clearfix' id='about_author'>\n";
    $html.="<img width='80' height='80' class='avatar' 
. "&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 class='clear'></div>\n";
    $content .= $html;

    return $content;

add_filter('the_content', 'display_author_bio');

Related posts:

About the Author

A web developer who has a love for creativity and enjoys experimenting with various techniques in both web design and development. If you would like to be kept up to date with our posts, you can follow us on Twitter, Facebook, Google+, or even by subscribing to our RSS Feed.