25 handy code snippets for WordPress Developers

WordPress Code Snippets

WordPress has become one of the largest and most customizable content management systems available today. As a result there is a high demand for custom WordPress themes and hacks.

Below is a list of 25 handy code snippets that WordPress developers should know about, this list is in no particular order.

Display Your Most Popular Post

This code snippet will displays your most popular post based on number of comments. This snippet can easily be added to any theme.

<ul>
<?php $result = $wpdb->get_results(“SELECT comment_count,ID,post_title FROM $wpdb->posts ORDER BY comment_count DESC LIMIT 0 , 5″);
foreach ($result as $post) {
setup_postdata($post);
$postid = $post->ID;
$title = $post->post_title;
$commentcount = $post->comment_count;
if ($commentcount != 0) { ?>
<li><a href=”<?php echo get_permalink($postid); ?>” title=”<?php echo $title ?>”>
<?php echo $title ?></a> {<?php echo $commentcount ?>}</li>
<?php } } ?>
</ul>

Get Your Viewers Real IP Address

This snippet gets your user’s real IP address and returns it (even if they are on proxy server), allowing you to call on the function at later.

function getRealIpAddr()
{
if (!emptyempty($_SERVER[‘HTTP_CLIENT_IP’]))
{
$ip=$_SERVER[‘HTTP_CLIENT_IP’];
}
elseif (!emptyempty($_SERVER[‘HTTP_X_FORWARDED_FOR’]))
//to check ip is pass from proxy
{
$ip=$_SERVER[‘HTTP_X_FORWARDED_FOR’];
}
else
{
$ip=$_SERVER[‘REMOTE_ADDR’];
}
return $ip;
}

Unzip a File

This one allows you to unzip a file on your server. This snippet is a very useful one if you allow users to upload files.

/**********************
*@file – path to zip file
*@destination – destination directory for unzipped files
*/
function unzip_file($file, $destination){
// create object
$zip = new ZipArchive() ;
// open archive
if ($zip->open($file) !== TRUE) {
die (’Could not open archive’);
}
// extract contents to destination directory
$zip->extractTo($destination);
// close archive
$zip->close();
echo ‘Archive extracted to directory’;
}

Add http to a URL

This code adds the “http” to the beginning of a URL if it is not there.

if (!preg_match(“/^(http|ftp):/”, $_POST[‘url’])) {
$_POST[‘url’] = ‘http://’.$_POST[‘url’];
}

Show Breadcrumbs

This code snippet displays breadcrumbs in this format; Home / Post Category / Title.

<?php bloginfo(‘home’); ?> / <?php the_category(); ?> / <?php the_title(); ?>

Change Your WordPress Login Logo

Looking at the same logo every time you log into a WordPress website gets old quick. This snippet allows you to change the WordPress logo to anything you want.

It should be placed in your functions.php file.

function my_custom_login_logo() {
echo ‘<style type=”text/css”>
h1 a { background-image:url(‘.get_bloginfo(‘template_directory’).’/images/custom-login-logo.gif) !important; }
</style>’;
}
add_action(‘login_head’, ‘my_custom_login_logo’);

Allow Only Designated IP Address to Access wp-admin Directory

If you are concerned with your blog security then this snippet is perfect for you. Copy the code below to your .htaccess, replace “allow from xx.xxx.xx.xxx” to each IP address you want, and you’ll limit the access to your WP-Admin directory (only added IPs will be allowed).

AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName “Example Access Control”
AuthType Basic
<LIMIT GET>
order deny,allow
deny from all
allow from xx.xx.xx.xx
</LIMIT>

Display Most Popular Post of any Timeframe

This snippet allows you to search for the most popular post during a specific timeframe. You will need to change the dates you are searching through manually.

<ul>
<?php
$result = $wpdb->get_results(“SELECT comment_count,ID,post_title, post_date FROM $wpdb->posts WHERE post_date BETWEEN ‘2009-01-01’ AND ‘2009-12-31’ ORDER BY comment_count DESC LIMIT 0 , 10”);
foreach ($result as $topten) {
$postid = $topten->ID;
$title = $topten->post_title;
$commentcount = $topten->comment_count;
if ($commentcount != 0) {
?>
<li></li>
<?php }
}
?>
</ul>

Added Author Bio to Each Post

This snippet allows you to give your authors the credit they deserve. This snippet will work with any theme that has an author section. The code snippet should be inserted into the functions.php file.

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’>
“;
$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’/>
“;
$html.=”<div class=’author_text’>
“;
$html.=”<h4>Author: “.$post_author_name.”</h4>
“;
$html.= $post_author_description.”
“;
$html.=”</div>
“;
$html.=”<div class=’clear’></div>
“;
$content .= $html;
}

return $content;
}

add_filter(‘the_content’, ‘get_author_bio’);

Increase Memory Limit

By default the PHP memory limit for WordPress is 32MB, this may not be enough if you have a lot of traffic or plugins. This snippet allows you to change that limit to what you need. The code should be put into the wp-config.php .

define(’WP_MEMORY_LIMIT’, ’64M’);

Change Your Login URL

This snippet allows you to change your login URL to whatever you want. This can be used for both convenience and security. The code should be placed in the htacess file.

RewriteRule ^login$ http://yoursite.com/wp-login.php [NC,L]

Change Autosave Time Limit

This snippet allows you to change your autosave time limit for posts. The code should be added to the functions.php file.

# Autosave interval set to 5 Minutes #
define(‘AUTOSAVE_INTERVAL’, 300);

Remove Update Notice

If you are currently being bothered by the update message and don’t actually want to update your theme you should use this snippet, it will remove the message for you.

add_action(‘admin_menu’,’wp_hide_update’);
function wp_hide_update() {
remove_action( ‘admin_notices’, ‘update_nag’, 3 );
}

Add a Search Box in Your Navigation Bar

This snippet will allow you to add a search box in your navigation bar. The code should go in the functions.php file.

add_filter(‘wp_nav_menu_items’,’add_search_box’, 10, 2);
function add_search_box($items, $args) {
ob_start();
get_search_form();
$searchform = ob_get_contents();
ob_end_clean();
$items .= ‘<li>’ . $searchform . ‘</li>’;
return $items;
}

Add Google Analytics Tracking With no Theme Edits

Adding this snippet to your functions.php file will place you tracking code on every page that is generated dynamically. Sure you can use a plug-in to do this but you’re taking a chance of slowing down your site.

<?php add_action(‘wp_footer’, ‘ga_custom’);
function ga_custom() { ?>
// add google analytics code here!
<?php } ?>

Set Minimum Word Count on Posts

This snippet will allow you require all posts to be a minimum word count of whatever you choose. The snippet should go in the functions.php file.

function minWord($content) {
global $post;
$num = 100; //set this to the minimum number of words
$content = $post->post_content;
if (str_word_count($content) < $num)
wp_die( __(‘Error: your post is below the minimum word count.’) ); }
add_action(‘publish_post’, ‘minWord’);

Split Post Trackbacks and Comments

By default WordPress combines trackbacks and comments into the comments section of a post. This snippet allows you to separate them. The code should go in the comments.php page.

<ul class=”commentlist”>
<?php // only comments

<span style=”white-space: pre;”> </span> <?php foreach ($comments as $comment) : ?>
<span style=”white-space: pre;”> </span> <?php $comment_type = get_comment_type(); ?>
<span style=”white-space: pre;”> </span> <?php if($comment_type == ‘comment’) { ?>
<span style=”white-space: pre;”> </span> <li>//Comment code goes here </li>
<span style=”white-space: pre;”> </span> <?php }
endforeach;
</ul>

<ul>
<?php // only trackbacks

<span style=”white-space: pre;”> </span>foreach ($comments as $comment) : ?>
<span style=”white-space: pre;”> </span> <?php $comment_type = get_comment_type(); ?>
<span style=”white-space: pre;”> </span> <?php if($comment_type != ‘comment’) { ?>
<span style=”white-space: pre;”> </span> <li> <?php comment_author_link() ?></li>
<span style=”white-space: pre;”> </span> <?php }
endforeach;
</ul>

Disable all Comments

This snippet will allow you to disable all comments if you are not looking for the users inputs.

UPDATE wp_posts SET comment_status = ‘closed’, ping_status = ‘closed’;

Enable all comments

This snippet will allow you to enable all comments.

UPDATE wp_posts SET comment_status = ‘open’, ping_status = ‘open’;

Excluded Categories from Your Home Page

This snippet will allow you to exclude categories from your home page. This can be useful if you only want to display specific content. Using a – before the category number makes them not visible and this code should go in your functions.php file.

function excludeCat($query) {
if ( $query->is_home ) {
$query->set(‘cat’, ‘-3,-5,-23’);
}
return $query;
}
add_filter(‘pre_get_posts’, ‘excludeCat’);

Display Different Content to Mac and Windows Users

This snippet is useful if your site has a lot of downloads. It will allow you to change the displayed content for a Mac, allowing you to change the file that a link points to.

<?php
if (stristr($_SERVER[‘HTTP_USER_AGENT’],”mac”)) {
echo ‘Hello, I’m a Mac.’;
} else {
echo ‘And I’m a PC.’;
}
?>

Filter Your Search Results

This snippet will give your users the ability to filter their search results. This can be beneficial to both the user and the webmaster. The code will need to go in the functions.php file.

function SearchFilter($query) {
if ($query->is_search) {
$query->set(‘post_type’,array(‘post’,’page’));
}
return $query;
}
add_filter(‘pre_get_posts’,’SearchFilter’);

Display Number of Twitter Followers

This handy snippet allows you to display the number of twitter followers a specific user has. Change the USERNAME to your twitter username and add to your template.

<?php
$twit = file_get_contents(‘http://twitter.com/users/show/USERNAME.xml’);
$begin = ‘<followers_count>’; $end = ‘</followers_count>’;
$page = $twit;
$parts = explode($begin,$page);
$page = $parts[1];
$parts = explode($end,$page);
$tcount = $parts[0];
if($tcount == ”) { $tcount = ‘0’; }
echo ‘<b> ‘.$tcount.’ </b> followers.’;
?>

Display a User’s Twitter Name

This snippet will allow you to display a user’s Twitter name in whatever section you put this code. This will allow you to give your visitors a warm welcome.

if (strpos($_SERVER[HTTP_REFERER], “twitter.com”) == true) {
echo “Hello Twitter User!”;
}

Display Total Number of Posts

With this snippet you can display the total number of published posts you have on your WordPress website. You can even exclude categories if you would like.

All posts

<?php
$total = wp_count_posts()->publish;
echo ‘Total Posts: ‘ . $total;
?>

Only posts from selected categories.

<?php
$categories = get_categories(‘exclude=1,2,3’);
foreach($categories as $category) {
$total += $category->count;
}
echo ‘Total Posts: ‘ . $total;
?>

Display Total Number of Facebook Fans

This snippet gives you the ability to display the total number of Facebook fans you have. All you need to do is replace “YOUR PAGE_ID” with your own page-id.

<?php
$page_id = “YOUR PAGE-ID”;
$xml = @simplexml_load_file(“http://api.facebook.com/restserver.php?method=facebook.fql.query&query=SELECT%20fan_count%20FROM%20page%20WHERE%20page_id=”.$page_id.””) or die (“a lot”);
$fans = $xml->page->fan_count;
echo $fans;
?>