Best collection of code for your 'functions.php' file

As with many others who are now viewing this post, I have been reading various blogs, forums, and discussion groups to learn and improve my WordPress skills. Over the past 12 months I have been on a mission to substitute my use of plugins by adding code to my functions.php file instead.

While I completely agree that plugins are very useful in many situations, my experience proved that in 90% of usage cases although a plugin might exist, actually utilizing it could create unnecessary complications and compatibility issues. Additionally in a great deal of cases such plugins added menus and other admin elements which I don't want or need.

More often than not I have found that by analyzing the code of plugins I was able to strip out the piece of code I wanted and hard code it into my functions.php. This provided me with the exact functionality I needed without having to include unnecessary elements.

So, the purpose of this post is my attempt to engage you, the reader/admin/developer, to share with me and other here any code bits which you find useful and have added to your theme's function.php file to extend or enhance WordPress without utilizing a plugin.

When you submit a response here please kindly give each code bit a title, let us know if with what version of WordPress you know its compatible with, include whatever description you feel best describes its function and (if applicable) include a link to the original plugin or source where you found the information.

I am looking forward to all your responses and will of course continually add my own new finds whenever I find them.

Please vote on the question and any answers you find useful by clicking on the up arrow on the left hand side of the question or answer.


Modify the Login Logo & Image URL Link

Tested on: WordPress 3.0.1

This code will allow you to easily modify the WordPress Login page Logo as well as the href link and title text of this logo.

add_filter( 'login_headerurl', 'namespace_login_headerurl' );
 * Replaces the login header logo URL
 * @param $url
function namespace_login_headerurl( $url ) {
    $url = home_url( '/' );
    return $url;

add_filter( 'login_headertitle', 'namespace_login_headertitle' );
 * Replaces the login header logo title
 * @param $title
function namespace_login_headertitle( $title ) {
    $title = get_bloginfo( 'name' );
    return $title;

add_action( 'login_head', 'namespace_login_style' );
 * Replaces the login header logo
function namespace_login_style() {
    echo '<style>.login h1 a { background-image: url( ' . get_template_directory_uri() . '/images/logo.png ) !important; }</style>';

EDIT: If you want to use the site logo to replace the login logo, you can use the following to dynamically pull that information (tested on WP3.5):

function namespace_login_style() {
    if( function_exists('get_custom_header') ){
        $width = get_custom_header()->width;
        $height = get_custom_header()->height;
    } else {
        $width = HEADER_IMAGE_WIDTH;
        $height = HEADER_IMAGE_HEIGHT;
    echo '<style>'.PHP_EOL;
    echo '.login h1 a {'.PHP_EOL; 
    echo '  background-image: url( '; header_image(); echo ' ) !important; '.PHP_EOL;
    echo '  width: '.$width.'px !important;'.PHP_EOL;
    echo '  height: '.$height.'px !important;'.PHP_EOL;
    echo '  background-size: '.$width.'px '.$height.'px !important;'.PHP_EOL;
    echo '}'.PHP_EOL;
    echo '</style>'.PHP_EOL;

Enable Hidden Administration Feature displaying All Site Settings

Tested on: WordPress 3.1 RC3

This little piece of code does something pretty cool. It will add an additional option to your settings menu with a link to "all settings" which will show you a complete list of all the settings you have within your database related to your WordPress site. The code below will only made this link visible to an administrator user and hide it for all other users.

   function all_settings_link() {
    add_options_page(__('All Settings'), __('All Settings'), 'administrator', 'options.php');
   add_action('admin_menu', 'all_settings_link');

Include custom post types in the search results.

function searchAll( $query ) {
 if ( $query->is_search ) { $query->set( 'post_type', array( 'site', 'plugin', 'theme', 'person' )); } 
 return $query;
add_filter( 'the_search_query', 'searchAll' );

Add your custom post types to your sites main RSS feed by default.

function custom_feed_request( $vars ) {
 if (isset($vars['feed']) && !isset($vars['post_type']))
  $vars['post_type'] = array( 'post', 'site', 'plugin', 'theme', 'person' );
 return $vars;
add_filter( 'request', 'custom_feed_request' );

Include custom post types in "Right Now" admin dashboard widget

This will include your custom post types and the post counts for each type in the "Right Now" dashboard widget.

function wph_right_now_content_table_end() {
 $args = array(
  'public' => true ,
  '_builtin' => false
 $output = 'object';
 $operator = 'and';
 $post_types = get_post_types( $args , $output , $operator );
 foreach( $post_types as $post_type ) {
  $num_posts = wp_count_posts( $post_type->name );
  $num = number_format_i18n( $num_posts->publish );
  $text = _n( $post_type->labels->singular_name, $post_type->labels->name , intval( $num_posts->publish ) );
  if ( current_user_can( 'edit_posts' ) ) {
   $num = "<a href='edit.php?post_type=$post_type->name'>$num</a>";
   $text = "<a href='edit.php?post_type=$post_type->name'>$text</a>";
  echo '<tr><td class="first num b b-' . $post_type->name . '">' . $num . '</td>';
  echo '<td class="text t ' . $post_type->name . '">' . $text . '</td></tr>';
 $taxonomies = get_taxonomies( $args , $output , $operator ); 
 foreach( $taxonomies as $taxonomy ) {
  $num_terms  = wp_count_terms( $taxonomy->name );
  $num = number_format_i18n( $num_terms );
  $text = _n( $taxonomy->labels->singular_name, $taxonomy->labels->name , intval( $num_terms ));
  if ( current_user_can( 'manage_categories' ) ) {
   $num = "<a href='edit-tags.php?taxonomy=$taxonomy->name'>$num</a>";
   $text = "<a href='edit-tags.php?taxonomy=$taxonomy->name'>$text</a>";
  echo '<tr><td class="first b b-' . $taxonomy->name . '">' . $num . '</td>';
  echo '<td class="t ' . $taxonomy->name . '">' . $text . '</td></tr>';
add_action( 'right_now_content_table_end' , 'wph_right_now_content_table_end' );

Similar questions

WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version
after wordpress update to 3.5+ i get error in this plugin. I do not understand how to fix it. If anyone can help me with these problem or give me an example of how to fix it here is the full code of the plugin: the errors i get: all the sql queries here
to perform the requested action wordpress needs to access your web server. please enter your ftp
I'm following Changing File Permissions « WordPress Codex, yet when I'm try to update and/or install plugin and/or theme through wp-admin, I'm getting following: To perform the requested action, WordPress needs to access your web server. Please enter your FTP credentials to proceed. If you do not remember your credentials, you should contact your w...
How to fix "There has been a critical error on your website. Please check your site admin email inbox for instructions"?
When I update my page I see this error and I tried to fix it but that didn't work. I removed all plugins and checked but it was still not fixed. Then I removed all themes and installed another theme but still it is not fixed. Now I am confused how to fix it. Please guide me how to fix it and why this error is showing?
WordPress has been updated! Before we send you on your way, we have to update your database to the newest version
whenever I attempt to access our production admin panel I get the message below. "Database Update Required WordPress has been updated! Before we send you on your way, we have to update your database to the newest version. The database update process may take a little while, so please be patient. Update WordPress Database" I have not seen ...
Facebook - Wordpress App Error Facebook returned an error: The site URL in your Facebook application settings does not match your wordpress blog URL
I have a wordpress blog and am trying to integrate the facebook page publish version 2 app and keep getting 2 errors, one of WP: Facebook returned an error: The site URL in your Facebook application settings does not match your wordpress blog URL And on FB app creator when putting in the app domain: This must be derived from Canvas URL, Secure Canv...
Git Workflows: do you need to keep your working directory and remote branch directory separate on your computer?
I am fairly new to git, So apologize for being vague. So I am working on a local folder "MyWorkingDirectory" do I keep push the same folder to my git or copy all the changes manually to a new folder where I manage my remote branch and push from there?

Also ask

We use cookies to deliver the best possible experience on our website. By continuing to use this site, accepting or closing this box, you consent to our use of cookies. To learn more, visit our privacy policy.