The WordPress functions file, known as functions.php, is a powerful tool that comes with every WordPress theme. It acts like a plugin, allowing you to add custom code to your site with ease.
We use custom code on our sites when a short piece of code can be used. This versatility and flexibility in WordPress allow us to combine the functionality of several plugins in an easy-to-manage way.
In this article, we’ll share some of those practical and useful tricks for using your WordPress functions file, helping you get more out of your WordPress site.
What Is the Functions File in WordPress?
The functions.php file is a WordPress theme file that comes with all free and premium WordPress themes.
It acts as a plugin and allows theme developers to define theme features. Users can also use it to add their custom code snippets in WordPress.
However, saving custom code in functions file is not a good practise.
If you update your theme, the functions.php file will be overwritten, and you will lose your custom code snippets. You cannot turn off a snippet without deleting it.
Instead, we recommend everyone use WPCode, a free plugin that lets you insert code snippets into your WordPress website without editing any theme, plugin, or core WordPress files.
Why do we recommend WPCode?
- Easily save custom code snippets without editing any core files.
- Automatically insert code snippets where you need them
- Each code snippet is saved separately and can be turned off individually.
- A built-in fail-safe mechanism will deactivate a code snippet if it causes an error on your site.
As a bonus, the WPCode plugin has an extensive library of pre-configured code snippets (including many on this list). You can deploy these code snippets with a few clicks.
Having said that, here is a list of items we will cover in this article. You can jump to one that interests you or simply follow along:
- How to Add These Code Snippets to Your Website
- Remove WordPress Version Number
- Add a Custom Dashboard Logo
- Change the Footer in WordPress Admin Panel
- Add Custom Dashboard Widgets in WordPress
- Change the Default Gravatar in WordPress
- Dynamic Copyright Date in WordPress Footer
- Randomly Change the Background Color in WordPress
- Update WordPress URLs
- Add Additional Image Sizes in WordPress
- Add New Navigation Menus to Your Theme
- Add Author Profile Fields
- Adding Widget-Ready Areas or Sidebars in WordPress Themes
- Manipulate the RSS Feed Footer
- Add Featured Images to RSS Feeds
- Hide Login Errors in WordPress
- Disable Login by Email in WordPress
- Disable Search Feature in WordPress
- Delay Posts in RSS Feed
- Change Read More Text for Excerpts in WordPress
- Disable RSS Feeds in WordPress
- Change Excerpt Length in WordPress
- Add an Admin User in WordPress
- Disable Language Switcher on Login Page
- Show the Total Number of Registered Users in WordPress
- Exclude Specific Categories From RSS Feed
- Disable URL Links in WordPress Comments
- Add Odd and Even CSS Classes to WordPress Posts
- Add Additional File Types to Be Uploaded in WordPress
- Change Sender Name in WordPress Emails
- Add an Author Info Box in WordPress Posts
- Disable XML-RPC in WordPress
- Automatically Link Featured Images to Posts
- Disable Block Editor in WordPress
- Disable Block Widgets in WordPress
- Display the Last Updated Date in WordPress
- Use Lowercase Filenames for Uploads
- Disable WordPress Admin Bar on Frontend
- Change Howdy Admin Text in Admin Area
- Disable Code Editing in Block Editor
- Disable Plugin / Theme File Editor
- Disable New User Notification Emails
- Disable Automatic Update Email Notifications
- Add a Link to Easily Duplicate a Post
- Remove Welcome Panel From the WordPress Admin Dashboard
- Add a Featured Image Column for Posts in WordPress Admin
- Block WordPress Admin Area for Everyone Except Administrators
How to Add These Code Snippets to Your Website
Before we begin, let’s look at how to add the code snippets in this article to your WordPress functions file.
1. Add Custom Code to Functions File Using WPCode (Recommended)
First, you need to install and activate the WPCode plugin. For more details, see our step-by-step guide on how to install a WordPress plugin.
Upon activation, go to Code Snippets » + Add Snippet page. You’ll see WPCode’s code library with many helpful custom code snippets already added.
If your code snippet does the same thing as the snippets in the library, then you can try out the one already added there.
Alternatively, click the ‘blank snippet’ link to continue adding your custom code snippet.
On the next screen, provide a title for your custom code. This could be anything that helps you identify what this code snippet does.
Next, you need to choose the ‘Code Type’. If you are adding a code that works in the functions.php file, then you must select ‘PHP Snippet.’
Below that, you need to copy and paste your custom code into the ‘Code Preview’ box.
Finally, you need to set your snippet as ‘Active’ and click the ‘Save Snippet’ button.
Your saved snippet will now run like it would if you had added it to the functions.php file.
You can repeat the process to add more snippets when needed. You can also deactivate a snippet without deleting it.
2. Add Custom Code Directly to the Functions File
The WPCode method is always better than adding code to the theme’s functions file.
However, some users may be writing code for a client’s custom WordPress theme or simply prefer to add code to the functions.php file.
In that case, here is how you can add code to your WordPress theme’s functions.php file.
First, connect to your WordPress website using an FTP client. Once connected, navigate to the /wp-content/themes/your-wordpress-theme/ folder.
There you will find the functions.php file. Simply right-click and select to edit or download the file to your computer for editing.
You can edit it using any plain text editor like Notepad or TextEdit.
Then, scroll down to the bottom of the functions.php file and paste your code snippet there. You can save your changes and upload the updated functions.php file to your theme folder.
You can now visit your WordPress website to see your custom code in action.
Now, let’s take a look at 46 different useful tricks for the WordPress functions file.
1. Remove WordPress Version Number
You should always use the latest version of WordPress. However, you may want to remove the WordPress version number from your site.
Simply add this code snippet to your functions file or as a new WPCode snippet:
function wpb_remove_version() {
return '';
}
add_filter('the_generator', 'wpb_remove_version');
For detailed instructions, see our guide on the right way to remove the WordPress version number.
2. Add a Custom Dashboard Logo
Want to white-label your WordPress admin area? The first step is to add a custom dashboard logo.
First, you’ll need to upload your custom logo to your theme’s images folder as custom-logo.png. Your custom logo should be in a 1:1 ratio (a square image) in 16×16 pixels.
After that, you can add this code to your theme’s functions file or as a new WPCode snippet:
function wpb_custom_logo() {
echo '
<style type="text/css">
#wpadminbar #wp-admin-bar-wp-logo > .ab-item .ab-icon:before {
background-image: url(' . get_bloginfo('stylesheet_directory') . '/images/custom-logo.png) !important;
background-position: 0 0;
color:rgba(0, 0, 0, 0);
}
#wpadminbar #wp-admin-bar-wp-logo.hover > .ab-item .ab-icon {
background-position: 0 0;
}
</style>
';
}
//hook into the administrative header output
add_action('wp_before_admin_bar_render', 'wpb_custom_logo');
For more details, see our guide on how to add a custom dashboard logo in WordPress.
3. Change the Footer in The WordPress Admin Panel
The footer in the WordPress admin area shows the message ‘Thank you for creating with WordPress.’ You can change it to anything you want by adding this code:
function remove_footer_admin () {
echo 'Fueled by <a href="http://www.wordpress.org" target="_blank">WordPress</a> | WordPress Tutorials: <a href="https://www.wpbeginner.com" target="_blank">WPBeginner</a></p>';
}
add_filter('admin_footer_text', 'remove_footer_admin');
Feel free to change the text and links that you want to add. Here is how it looks on our test site.
4. Add Custom Dashboard Widgets in WordPress
You probably have seen the widgets that many plugins and themes add to the WordPress dashboard. You can add one yourself by pasting the following code:
add_action('wp_dashboard_setup', 'my_custom_dashboard_widgets');
function my_custom_dashboard_widgets() {
global $wp_meta_boxes;
wp_add_dashboard_widget('custom_help_widget', 'Theme Support', 'custom_dashboard_help');
}
function custom_dashboard_help() {
echo '<p>Welcome to Custom Blog Theme! Need help? Contact the developer <a href="mailto:yourusername@gmail.com">here</a>. For WordPress Tutorials visit: <a href="https://www.wpbeginner.com" target="_blank">WPBeginner</a></p>';
}
This is what it would look like:
For details, see our tutorial on how to add custom dashboard widgets in WordPress.
5. Change the Default Gravatar in WordPress
Have you seen the default mystery man avatar on blogs? You can easily replace it with your own branded custom avatar.
Simply upload the image you want to use as the default avatar and add this code to your functions file or the WPCode plugin:
function wpb_custom_default_gravatar( $avatar_defaults ) {
$myavatar = 'https://example.com/wp-content/uploads/2022/10/dummygravatar.png';
$avatar_defaults[$myavatar] = 'Default Gravatar';
return $avatar_defaults;
}
add_filter( 'avatar_defaults', 'wpb_custom_default_gravatar' );
Now you can head to the Settings » Discussion page and select your default avatar.
For detailed instructions, see our guide on changing the default gravatar in WordPress.
6. Dynamic Copyright Date in WordPress Footer
You can simply add a copyright date by editing the footer template in your theme. However, it will not show when your site started, and it will not automatically change the following year.
This code can add a dynamic copyright date in the WordPress footer:
function wpb_copyright() {
global $wpdb;
$copyright_dates = $wpdb->get_results("
SELECT
YEAR(min(post_date_gmt)) AS firstdate,
YEAR(max(post_date_gmt)) AS lastdate
FROM
$wpdb->posts
WHERE
post_status = 'publish'
");
$output = '';
if($copyright_dates) {
$copyright = "© " . $copyright_dates[0]->firstdate;
if($copyright_dates[0]->firstdate != $copyright_dates[0]->lastdate) {
$copyright .= '-' . $copyright_dates[0]->lastdate;
}
$output = $copyright;
}
return $output;
}
After adding this function, you’ll need to open your footer.php file and add the following code where you would like to display the dynamic copyright date:
<?php echo wpb_copyright(); ?>
This function looks for the date of your first post and the date of your last post. It then returns the years wherever you call the function.
Tip: If you are using the WPCode plugin, then you can combine the two code snippets. After that, choose the ‘Site Wide Footer’ location in the ‘Insertion’ section of the snippet settings. This will automatically display the copyright date in the footer without editing your theme’s footer.php file.
For more details, see our guide on how to add dynamic copyright dates in WordPress.
7. Randomly Change the Background Color in WordPress
Do you want to randomly change the background color on your WordPress blog for each visit and page reload? Here is how to do this easily.
First, add this code to your theme’s functions file or the WPCode plugin:
function wpb_bg() {
$rand = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f');
$color ='#'.$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].
$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)];
echo $color;
}
Next, you’ll need to edit the header.php file in your theme. Find the <body>
tag and replace it with this line:
<body <?php body_class(); ?> style="background-color:<?php wpb_bg();?>">
You can now save your changes and visit your website to see this code in action.
For more details and alternate methods, see our tutorial on randomly changing the background color in WordPress.
8. Update WordPress URLs
If your WordPress login page keeps refreshing or you cannot access the admin area, then you need to update WordPress URLs.
One way to do this is by using the wp-config.php file. However, if you do that, then you cannot set the correct address on the settings page. The WordPress URL and Site URL fields will be locked and uneditable.
Instead, just add this code to your functions file to fix this:
update_option( 'siteurl', 'https://example.com' );
update_option( 'home', 'https://example.com' );
Don’t forget to replace example.com with your domain name.
Once logged in, you can go to the Settings page in the WordPress admin area and set the URLs.
After that, you should remove the code you added to the functions file or WPCode. Otherwise, it will keep updating those URLs whenever your site is accessed.
9. Add Additional Image Sizes in WordPress
WordPress automatically generates several image sizes when you upload an image. You can also create additional image sizes to use in your theme.
Simply add this code to your theme’s functions file or as a WPCode snippet:
add_image_size( 'sidebar-thumb', 120, 120, true ); // Hard Crop Mode
add_image_size( 'homepage-thumb', 220, 180 ); // Soft Crop Mode
add_image_size( 'singlepost-thumb', 590, 9999 ); // Unlimited Height Mode
This code creates three new image sizes of different sizes. Feel free to tweak the code to meet your requirements.
You can then display an image size anywhere in your theme using this code:
<?php the_post_thumbnail( 'homepage-thumb' ); ?>
For detailed instructions, see our guide on creating additional image sizes in WordPress.
10. Add New Navigation Menus to Your Theme
WordPress allows theme developers to define navigation menus and then display them.
You can add this code to your theme’s functions file or as a new WPCode snippet to define a new menu location in your theme:
function wpb_custom_new_menu() {
register_nav_menu('my-custom-menu',__( 'My Custom Menu' ));
}
add_action( 'init', 'wpb_custom_new_menu' );
You can now go to Appearance » Menus in your WordPress dashboard and see ‘My Custom Menu’ as the theme location option.
Note: This code will also work with block themes with the full site editing feature. Adding it will enable the Menus screen under Appearance.
Now you need to add this code to your theme where you want to display the navigation menu:
<?php
wp_nav_menu( array(
'theme_location' => 'my-custom-menu',
'container_class' => 'custom-menu-class' ) );
?>
For detailed instructions, see our guide on how to add custom navigation menus in WordPress themes.
11. Add Author Profile Fields
Do you want to add extra fields to your author profiles in WordPress? You can easily do that by adding this code to your functions file or as a new WPCode snippet:
function wpb_new_contactmethods( $contactmethods ) {
// Add Twitter
$contactmethods['twitter'] = 'Twitter';
//add Facebook
$contactmethods['facebook'] = 'Facebook';
return $contactmethods;
}
add_filter('user_contactmethods','wpb_new_contactmethods',10,1);
This code will add Twitter and Facebook fields to user profiles in WordPress.
You can now display these fields in your author template like this:
<?php echo get_the_author_meta('twitter') ?>
You may also want to see our guide on adding additional user profile fields in WordPress registration.
12. Adding Widget-Ready Areas or Sidebars in WordPress Themes
This is one of the most used code snippets, and many developers already know about adding widget-ready areas or sidebars to WordPress themes. But it deserves to be on this list for those people who don’t know.
You can paste the following code in your functions.php file or as a new WPCode snippet:
// Register Sidebars
function custom_sidebars() {
$args = array(
'id' => 'custom_sidebar',
'name' => __( 'Custom Widget Area', 'text_domain' ),
'description' => __( 'A custom widget area', 'text_domain' ),
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
'before_widget' => '<aside id="%1$s" class="widget %2$s">',
'after_widget' => '</aside>',
);
register_sidebar( $args );
}
add_action( 'widgets_init', 'custom_sidebars' );
Note: This code will also work with block themes with the full site editing feature. Adding it will enable the Widgets screen under Appearance.
You can now visit the Appearance » Widgets page and see your new custom widget area.
To display this sidebar or widget-ready area on your website, you’ll need to add the following code in the template where you want to display it:
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('custom_sidebar') ) : ?>
<!–Default sidebar info goes here–>
<?php endif; ?>
For more details, see our guide on how to add dynamic widget-ready areas and sidebars in WordPress.
13. Manipulate the RSS Feed Footer
Have you seen blogs that add their advertisements in their RSS feeds below each post? You can accomplish this easily with a simple function. Just paste the following code:
function wpbeginner_postrss($content) {
if(is_feed()){
$content = 'This post was written by Syed Balkhi '.$content.'Check out WPBeginner';
}
return $content;
}
add_filter('the_excerpt_rss', 'wpbeginner_postrss');
add_filter('the_content', 'wpbeginner_postrss');
For more information, see our guide on how to add content and completely manipulate your RSS feeds.
14. Add Featured Images to RSS Feeds
The post thumbnail or featured images are usually only displayed within your site design. You can easily extend that functionality to your RSS feed with the following code:
function rss_post_thumbnail($content) {
global $post;
if(has_post_thumbnail($post->ID)) {
$content = '<p>' . get_the_post_thumbnail($post->ID) .
'</p>' . get_the_content();
}
return $content;
}
add_filter('the_excerpt_rss', 'rss_post_thumbnail');
add_filter('the_content_feed', 'rss_post_thumbnail');
For more details, see our guide on how to add post thumbnails to your WordPress RSS feed.
15. Hide Login Errors in WordPress
Hackers can use login errors to guess whether they entered the wrong username or password. By hiding login errors in WordPress, you can make your login area and WordPress website more secure.
Simply add the following code to your theme’s functions file or as a new WPCode snippet:
function no_wordpress_errors(){
return 'Something is wrong!';
}
add_filter( 'login_errors', 'no_wordpress_errors' );
Now, users will see a generic message when they enter an incorrect username or password.
For more information, see our tutorial on disabling login hints in WordPress error messages.
16. Disable Login by Email in WordPress
WordPress allows users to log in with their username or email address. You can easily disable login by email in WordPress by adding this code to your functions file or as a new WPCode snippet:
remove_filter( 'authenticate', 'wp_authenticate_email_password', 20 );
For more information, see our guide on how to disable login by email feature in WordPress.
17. Disable The Search Feature in WordPress
If you want to disable your WordPress site’s search feature, simply add this code to your functions file or in a new WPCode snippet:
function wpb_filter_query( $query, $error = true ) {
if ( is_search() ) {
$query->is_search = false;
$query->query_vars[s] = false;
$query->query[s] = false;
if ( $error == true )
$query->is_404 = true;
}}
This code simply disables the search query by modifying it and returning a 404 error instead of search results.
For more information, see our tutorial on disabling the WordPress search feature.
Pro Tip: Instead of giving up on WordPress search, we recommend trying out SearchWP. It is the best WordPress search plugin on the market that allows you to add a powerful and customizable search feature to your website.
18. Delay Posts in RSS Feed
Sometimes, you may publish an article with a grammatical error or spelling mistake.
The mistake goes live and is distributed to your RSS feed subscribers. If you have email subscriptions on your WordPress blog, then those subscribers will also get a notification.
Simply add this code to your theme’s functions file or as a new WPCode snippet to delay posts in your RSS feed:
function publish_later_on_feed($where) {
global $wpdb;
if ( is_feed() ) {
// timestamp in WP-format
$now = gmdate('Y-m-d H:i:s');
// value for wait; + device
$wait = '10'; // integer
// http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_timestampdiff
$device = 'MINUTE'; //MINUTE, HOUR, DAY, WEEK, MONTH, YEAR
// add SQL-sytax to default $where
$where .= " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait ";
}
return $where;
}
add_filter('posts_where', 'publish_later_on_feed');
In this code, we used 10 minutes as $wait or delay time. Feel free to change this to any number of minutes you want.
For a plugin method and more information, see our detailed guide on how to delay posts from appearing in the WordPress RSS feed.
19. Change Read More Text for Excerpts in WordPress
Do you want to change the text that appears after the excerpt in your posts? Simply add this code to your theme’s functions file or as a new WPCode snippet:
function modify_read_more_link() {
return '<a class="more-link" href="' . get_permalink() . '">Your Read More Link Text</a>';
}
add_filter( 'the_content_more_link', 'modify_read_more_link' );
20. Disable RSS Feeds in WordPress
Not all websites need RSS feeds. If you want to disable RSS feeds on your WordPress site, then add this code to your theme’s functions file or as a new WPCode snippet:
function new_excerpt_more($more) {
global $post;
return '<a class="moretag"
href="'. get_permalink($post->ID) . '">Your Read More Link Text</a>';
}
add_filter('excerpt_more', 'new_excerpt_more');
For more information on a plugin method, see our guide on how to disable RSS feeds in WordPress.
21. Change Excerpt Length in WordPress
WordPress limits excerpt lengths to 55 words. You can add this code to your functions file or as a new WPCode snippet if you need to change that:
function new_excerpt_length($length) {
return 100;
}
add_filter('excerpt_length', 'new_excerpt_length');
Just change 100 to the number of words you want to show in the excerpts.
For alternate methods, you may want to look at our guide on how to customize WordPress excerpts (no coding required).
22. Add an Admin User in WordPress
If you have forgotten your WordPress password and email, then you can add an admin user by adding this code to your theme’s functions file using an FTP client:
function wpb_admin_account(){
$user = 'Username';
$pass = 'Password';
$email = 'email@domain.com';
if ( !username_exists( $user ) && !email_exists( $email ) ) {
$user_id = wp_create_user( $user, $pass, $email );
$user = new WP_User( $user_id );
$user->set_role( 'administrator' );
} }
add_action('init','wpb_admin_account');
Don’t forget to fill in the username, password, and email fields.
Important: Once you log in to your WordPress site, don’t forget to delete the code from your functions file.
For more on this topic, take a look at our tutorial on how to add an admin user in WordPress using FTP.
23. Disable Language Switcher on Login Page
If you run a multilingual website, then WordPress displays a language selector on the login page. You can easily disable it by adding the following code to your functions.php file or as a new WPCode snippet:
add_filter( 'login_display_language_dropdown', '__return_false' );
24. Show the Total Number of Registered Users in WordPress
Do you want to show the total number of registered users on your WordPress site? Simply add this code to your theme’s functions file or as a new WPCode snippet:
function wpb_user_count() {
$usercount = count_users();
$result = $usercount['total_users'];
return $result;
}
// Creating a shortcode to display user count
add_shortcode('user_count', 'wpb_user_count');
This code creates a shortcode that allows you to display the total number of registered users on your site.
Now, you just need to add the shortcode [user_count]
to your post or page where you want to show the total number of users.
For more information and a plugin method, see our tutorial on how to display the total number of registered users in WordPress.
25. Exclude Specific Categories From RSS Feed
Do you want to exclude specific categories from your WordPress RSS feed? You can add this code to your theme’s functions file or as a new WPCode snippet:
function exclude_category($query) {
if ( $query->is_feed ) {
$query->set('cat', '-5, -2, -3');
}
return $query;
}
add_filter('pre_get_posts', 'exclude_category');
26. Disable URL Links in WordPress Comments
By default, WordPress converts a URL into a clickable link in comments.
You can stop this by adding the following code to your functions file or as a new WPCode snippet:
remove_filter( 'comment_text', 'make_clickable', 9 );
For details, see our article on how to disable autolinking in WordPress comments.
27. Add Odd and Even CSS Classes to WordPress Posts
You may have seen WordPress themes using an odd or even class for WordPress comments. It helps users visualize where one comment ends and the next one begins.
You can use the same technique for your WordPress posts. It looks aesthetically pleasing and helps users quickly scan pages with lots of content.
Simply add this code to your theme’s functions file:
function oddeven_post_class ( $classes ) {
global $current_class;
$classes[] = $current_class;
$current_class = ($current_class == 'odd') ? 'even' : 'odd';
return $classes;
}
add_filter ( 'post_class' , 'oddeven_post_class' );
global $current_class;
$current_class = 'odd';
This code simply adds an odd or even class to WordPress posts. You can now add custom CSS to style them differently.
Here is some sample code to help you get started:
.even {
background:#f0f8ff;
}
.odd {
background:#f4f4fb;
}
The end result will look something like this:
Need more detailed instructions? Take a look at our tutorial on how to add odd/even classes to your posts in WordPress themes.
28. Add Additional File Types to Be Uploaded in WordPress
By default, WordPress allows you to upload a limited number of the most commonly used file types. However, you can extend it to allow other file types.
Just add this code to your theme’s functions file:
function my_myme_types($mime_types){
$mime_types['svg'] = 'image/svg+xml'; //Adding svg extension
$mime_types['psd'] = 'image/vnd.adobe.photoshop'; //Adding photoshop files
return $mime_types;
}
add_filter('upload_mimes', 'my_myme_types', 1, 1);
This code allows you to upload SVG and PSD files to WordPress.
You will need to find the mime types for the file types you want to allow and then use them in the code.
For more on this topic, check out our tutorial on how to add additional file types to be uploaded in WordPress.
29. Change Sender Name in WordPress Emails
WordPress uses a non-existent email address (wordpress@yourdomain.com) to send outgoing emails by default.
This email address could be flagged as spam by email service providers.
Using the WP Mail SMTP plugin is the proper way to fix this.
It fixes email deliverability issues and allows you to choose an actual email address to send your WordPress emails.
To learn more, see our guide on how to fix WordPress not sending email issue.
On the other hand, if you want to quickly change this to a real email address, then you can add the following code in your functions file or as a new WPCode snippet:
// Function to change email address
function wpb_sender_email( $original_email_address ) {
return 'tim.smith@example.com';
}
// Function to change sender name
function wpb_sender_name( $original_email_from ) {
return 'Tim Smith';
}
// Hooking up our functions to WordPress filters
add_filter( 'wp_mail_from', 'wpb_sender_email' );
add_filter( 'wp_mail_from_name', 'wpb_sender_name' );
Don’t forget to replace the email address and name with your own information.
The problem with this method is that WordPress is still using the mail() function to send emails, and such emails are most likely to end up in spam.
For better alternatives, see our tutorial on how to change the sender name in outgoing WordPress emails.
30. Add an Author Info Box in WordPress Posts
If you run a multi-author site and want to showcase author bios at the end of your posts, then you can try this method.
Start by adding this code to your functions file or as a new WPCode snippet:
function wpb_author_info_box( $content ) {
global $post;
// Detect if it is a single post with a post author
if ( is_single() && isset( $post->post_author ) ) {
// Get author's display name
$display_name = get_the_author_meta( 'display_name', $post->post_author );
// If display name is not available then use nickname as display name
if ( empty( $display_name ) )
$display_name = get_the_author_meta( 'nickname', $post->post_author );
// Get author's biographical information or description
$user_description = get_the_author_meta( 'user_description', $post->post_author );
// Get author's website URL
$user_website = get_the_author_meta('url', $post->post_author);
// Get link to the author archive page
$user_posts = get_author_posts_url( get_the_author_meta( 'ID' , $post->post_author));
// Get User Gravatar
$user_gravatar = get_avatar( get_the_author_meta( 'ID' , $post->post_author) , 90 );
if ( ! empty( $display_name ) )
$author_details = '<p class="author_name">About ' . $display_name . '</p>';
if ( ! empty( $user_description ) )
// Author avatar and bio will be displayed if author has filled in description.
$author_details .= '<p class="author_details">' . $user_gravatar . nl2br( $user_description ). '</p>';
$author_details .= '<p class="author_links"><a href="'. $user_posts .'">View all posts by ' . $display_name . '</a>';
// Check if author has a website in their profile
if ( ! empty( $user_website ) ) {
// Display author website link
$author_details .= ' | <a href="' . $user_website .'" target="_blank" rel="nofollow noopener">Website</a></p>';
} else {
// if there is no author website then just close the paragraph
$author_details .= '</p>';
}
// Pass all this info to post content
$content = $content . '<footer class="author_bio_section" >' . $author_details . '</footer>';
}
return $content;
}
// Add our function to the post content filter
add_action( 'the_content', 'wpb_author_info_box' );
// Allow HTML in author bio section
remove_filter('pre_user_description', 'wp_filter_kses');
Next, you will need to add some custom CSS to make it look better.
You can use this sample CSS as a starting point:
.author_bio_section{
background: none repeat scroll 0 0 #F5F5F5;
padding: 15px;
border: 1px solid #ccc;
}
.author_name{
font-size:16px;
font-weight: bold;
}
.author_details img {
border: 1px solid #D8D8D8;
border-radius: 50%;
float: left;
margin: 0 10px 10px 0;
}
This is how your author box will look like:
For a plugin method and more detailed instructions, check out our article on how to add an author info box in WordPress posts.
31. Disable XML-RPC in WordPress
XML-RPC is a method that allows third-party apps to communicate with your WordPress site remotely. This could cause security issues and can be exploited by hackers.
To turn off XML-RPC in WordPress, add the following code to your functions file or as a new WPCode snippet:
add_filter('xmlrpc_enabled', '__return_false');
You may want to read our article on how to disable XML-RPC in WordPress for more information.
32. Automatically Link Featured Images to Posts
If your WordPress theme does not automatically link featured images to full articles, then you can try this method.
Simply add this code to your theme’s functions file or as a new WPCode snippet:
function wpb_autolink_featured_images( $html, $post_id, $post_image_id ) {
If (! is_singular()) {
$html = '<a href="' . get_permalink( $post_id ) . '" title="' . esc_attr( get_the_title( $post_id ) ) . '">' . $html . '</a>';
return $html;
} else {
return $html;
}
}
add_filter( 'post_thumbnail_html', 'wpb_autolink_featured_images', 10, 3 );
You may want to read our article on how to automatically link featured images to posts in WordPress.
33. Disable Block Editor in WordPress
WordPress uses a modern and intuitive editor for writing content and editing your website. This editor uses blocks for commonly used content and layout elements, which is why it’s called the Block Editor.
However, you may need to use the older Classic Editor in some use cases.
The easiest way to disable the block editor is by using the Classic Editor plugin. However, if you don’t want to use a separate plugin, then just add the following code to your functions file or as a new WPCode snippet:
add_filter('gutenberg_can_edit_post', '__return_false', 5);
add_filter('use_block_editor_for_post', '__return_false', 5);
For more details, see our tutorial on how to disable the Block Editor and use the Classic Editor.
34. Disable Block Widgets in WordPress
WordPress switched from classic widgets to block widgets in WordPress 5.8. The new block widgets are easier to use and give you more design control than classic widgets.
However, some users may still want to use classic widgets. In that case, you can use the following code in your theme’s functions file or as a new WPCode snippet:
add_filter( 'use_widgets_block_editor', '__return_false' );
For more details, see our article on how to disable widget blocks (restore classic widgets).
35. Display the Last Updated Date in WordPress
When visitors view a post or page on your WordPress blog, your WordPress theme will show the date the post was published. This is fine for most blogs and static websites.
However, WordPress is also used by websites where old articles are regularly updated. In these publications, displaying the date and time the post was last modified is essential.
You can show the last updated date using the following code in your theme’s functions file or as a new WPCode snippet:
$u_time = get_the_time( 'U' );
$u_modified_time = get_the_modified_time( 'U' );
// Only display modified date if 24hrs have passed since the post was published.
if ( $u_modified_time >= $u_time + 86400 ) {
$updated_date = get_the_modified_time( 'F jS, Y' );
$updated_time = get_the_modified_time( 'h:i a' );
$updated = '<p class="last-updated">';
$updated .= sprintf(
// Translators: Placeholders get replaced with the date and time when the post was modified.
esc_html__( 'Last updated on %1$s at %2$s' ),
$updated_date,
$updated_time
);
$updated .= '</p>';
echo wp_kses_post( $updated );
}
For alternate methods and more details, see our guide on how to display the last updated date in WordPress.
36. Use Lowercase Filenames for Uploads
If you run a multi-author website, then authors may upload images with filenames in upper and lowercase.
Adding the following code ensures that all filenames are in lowercase:
add_filter( 'sanitize_file_name', 'mb_strtolower' );
Note: The code will not change filenames for existing uploads. For alternate methods, see our tutorial on how to rename images and media files in WordPress.
37. Disable WordPress Admin Bar on Frontend
By default, WordPress displays the admin bar at the top when a logged-in user views your website.
You can disable the admin bar for all users except site administrators. Simply add the following code to your functions file or as a new WPCode snippet:
/* Disable WordPress Admin Bar for all users */
add_filter( 'show_admin_bar', '__return_false' );
For more details, see our guide on how to disable the WordPress admin bar for all users except administrators.
38. Change Howdy Admin Text in Admin Area
WordPress displays a ‘Howdy Admin’ greeting in the WordPress dashboard. ‘Admin’ is replaced by the logged-in user’s name.
You can change the default greeting to your own by adding the following code in your functions file or as a new WPCode snippet:
function wpcode_snippet_replace_howdy( $wp_admin_bar ) {
// Edit the line below to set what you want the admin bar to display intead of "Howdy,".
$new_howdy = 'Welcome,';
$my_account = $wp_admin_bar->get_node( 'my-account' );
$wp_admin_bar->add_node(
array(
'id' => 'my-account',
'title' => str_replace( 'Howdy,', $new_howdy, $my_account->title ),
)
);
}
add_filter( 'admin_bar_menu', 'wpcode_snippet_replace_howdy', 25 );
For more details, see our article on changing the ‘Howdy Admin’ message in WordPress.
39. Disable Code Editing in Block Editor
The block editor allows you to switch to the Code Editor. This comes in handy if you need to add some HTML code manually.
However, you may want to keep this feature limited to site administrators.
You can add the following code to your functions file or as a WPCode snippet to achieve this:
add_filter( 'block_editor_settings_all', function ( $settings ) {
$settings['codeEditingEnabled'] = current_user_can( 'manage_options' );
return $settings;
} );
40. Disable Plugin / Theme File Editor
WordPress comes with a built-in editor where you can edit plugin files. You can see it by going to the Plugins » Plugin File Editor page.
Similarly, WordPress also includes a file editor for classic themes at Appearance » Theme File Editor.
Note: If you use a block theme, then the theme file editor is not visible.
We don’t recommend using these editors for making changes to your theme or plugin. A tiny mistake in code can make your website inaccessible to all users.
To disable the plugin/theme editor, add the following code to your functions file or as a WPCode snippet:
// Disable the Plugin and Theme Editor
if ( ! defined( 'DISALLOW_FILE_EDIT' ) ) {
define( 'DISALLOW_FILE_EDIT', true );
}
For more details, see our tutorial on how to disable the plugin/theme editor in WordPress.
41. Disable New User Notification Emails
By default, WordPress sends an email notification when a new user joins your WordPress website.
If you run a WordPress membership website or require users to signup, then you will get a notification each time a user joins your website.
To turn off these notifications, you can add the following to your functions file or as a new WPCode snippet:
function wpcode_send_new_user_notifications( $user_id, $notify = 'user' ) {
if ( empty( $notify ) || 'admin' === $notify ) {
return;
} elseif ( 'both' === $notify ) {
// Send new users the email but not the admin.
$notify = 'user';
}
wp_send_new_user_notifications( $user_id, $notify );
}
add_action(
'init',
function () {
// Disable default email notifications.
remove_action( 'register_new_user', 'wp_send_new_user_notifications' );
remove_action( 'edit_user_created_user', 'wp_send_new_user_notifications' );
// Replace with custom function that only sends to user.
add_action( 'register_new_user', 'wpcode_send_new_user_notifications' );
add_action( 'edit_user_created_user', 'wpcode_send_new_user_notifications', 10, 2 );
}
);
For more details, see our tutorial on how to disable new user email notifications in WordPress.
42. Disable Automatic Update Email Notifications
Occasionally, WordPress may automatically install security and maintenance updates or update a plugin with a critical vulnerability.
It sends an automatic update email notification after each update. If you manage multiple WordPress websites, then you may get several such emails.
You can add this code to your functions file or as a new WPCode snippet to turn off these email notifications:
/ Disable auto-update emails.
add_filter( 'auto_core_update_send_email', '__return_false' );
// Disable auto-update emails for plugins.
add_filter( 'auto_plugin_update_send_email', '__return_false' );
// Disable auto-update emails for themes.
add_filter( 'auto_theme_update_send_email', '__return_false' );
To learn more, see our article on how to disable automatic update emails in WordPress.
43. Add a Link to Easily Duplicate a Post
Ever wished for an easier way to copy all the contents of a post quickly for editing without touching the published post?
The following code snippet will add an option to easily duplicate a post with all its contents:
// Add duplicate button to post/page list of actions.
add_filter( 'post_row_actions', 'wpcode_snippet_duplicate_post_link', 10, 2 );
add_filter( 'page_row_actions', 'wpcode_snippet_duplicate_post_link', 10, 2 );
// Let's make sure the function doesn't already exist.
if ( ! function_exists( 'wpcode_snippet_duplicate_post_link' ) ) {
/**
* @param array $actions The actions added as links to the admin.
* @param WP_Post $post The post object.
*
* @return array
*/
function wpcode_snippet_duplicate_post_link( $actions, $post ) {
// Don't add action if the current user can't create posts of this post type.
$post_type_object = get_post_type_object( $post->post_type );
if ( null === $post_type_object || ! current_user_can( $post_type_object->cap->create_posts ) ) {
return $actions;
}
$url = wp_nonce_url(
add_query_arg(
array(
'action' => 'wpcode_snippet_duplicate_post',
'post_id' => $post->ID,
),
'admin.php'
),
'wpcode_duplicate_post_' . $post->ID,
'wpcode_duplicate_nonce'
);
$actions['wpcode_duplicate'] = '<a href="' . $url . '" title="Duplicate item" rel="permalink">Duplicate</a>';
return $actions;
}
}
/**
* Handle the custom action when clicking the button we added above.
*/
add_action( 'admin_action_wpcode_snippet_duplicate_post', function () {
if ( empty( $_GET['post_id'] ) ) {
wp_die( 'No post id set for the duplicate action.' );
}
$post_id = absint( $_GET['post_id'] );
// Check the nonce specific to the post we are duplicating.
if ( ! isset( $_GET['wpcode_duplicate_nonce'] ) || ! wp_verify_nonce( $_GET['wpcode_duplicate_nonce'], 'wpcode_duplicate_post_' . $post_id ) ) {
// Display a message if the nonce is invalid, may it expired.
wp_die( 'The link you followed has expired, please try again.' );
}
// Load the post we want to duplicate.
$post = get_post( $post_id );
// Create a new post data array from the post loaded.
if ( $post ) {
$current_user = wp_get_current_user();
$new_post = array(
'comment_status' => $post->comment_status,
'menu_order' => $post->menu_order,
'ping_status' => $post->ping_status,
'post_author' => $current_user->ID,
'post_content' => $post->post_content,
'post_excerpt' => $post->post_excerpt,
'post_name' => $post->post_name,
'post_parent' => $post->post_parent,
'post_password' => $post->post_password,
'post_status' => 'draft',
'post_title' => $post->post_title . ' (copy)',// Add "(copy)" to the title.
'post_type' => $post->post_type,
'to_ping' => $post->to_ping,
);
// Create the new post
$duplicate_id = wp_insert_post( $new_post );
// Copy the taxonomy terms.
$taxonomies = get_object_taxonomies( get_post_type( $post ) );
if ( $taxonomies ) {
foreach ( $taxonomies as $taxonomy ) {
$post_terms = wp_get_object_terms( $post_id, $taxonomy, array( 'fields' => 'slugs' ) );
wp_set_object_terms( $duplicate_id, $post_terms, $taxonomy );
}
}
// Copy all the custom fields.
$post_meta = get_post_meta( $post_id );
if ( $post_meta ) {
foreach ( $post_meta as $meta_key => $meta_values ) {
if ( '_wp_old_slug' === $meta_key ) { // skip old slug.
continue;
}
foreach ( $meta_values as $meta_value ) {
add_post_meta( $duplicate_id, $meta_key, $meta_value );
}
}
}
// Redirect to edit the new post.
wp_safe_redirect(
add_query_arg(
array(
'action' => 'edit',
'post' => $duplicate_id
),
admin_url( 'post.php' )
)
);
exit;
} else {
wp_die( 'Error loading post for duplication, please try again.' );
}
} );
After adding the code, go to the Posts » All Posts screen and take your mouse over to a post title.
You’ll notice a new ‘Duplicate’ link under the options.
Clicking on the link will create a copy of the post with all its contents. You can then work on that draft.
Once finished, you can copy and paste your changes to the original published post and delete the copy.
For a plugin method, see our article on duplicating a WordPress post or page.
44. Remove Welcome Panel From the WordPress Admin Dashboard
The Welcome Panel appears in the WordPress admin dashboard. It can be easily dismissed or hidden by clicking on the ‘Screen Options’ button.
However, if you are working to make a cleaner dashboard experience for users, you may want to hide it permanently.
Add the following code to disable it for all users on your site:
add_action(
'admin_init',
function () {
remove_action( 'welcome_panel', 'wp_welcome_panel' );
}
);
45. Add a Featured Image Column for Posts in WordPress Admin
By default, WordPress only shows featured images when you are viewing your site or when you edit a post or page.
The following code will add a new column to the Posts » All Posts screen for featured images:
add_filter( 'manage_posts_columns', function ( $columns ) {
// You can change this to any other position by changing 'title' to the name of the column you want to put it after.
$move_after = 'title';
$move_after_key = array_search( $move_after, array_keys( $columns ), true );
$first_columns = array_slice( $columns, 0, $move_after_key + 1 );
$last_columns = array_slice( $columns, $move_after_key + 1 );
return array_merge(
$first_columns,
array(
'featured_image' => __( 'Featured Image' ),
),
$last_columns
);
} );
add_action( 'manage_posts_custom_column', function ( $column ) {
if ( 'featured_image' === $column ) {
the_post_thumbnail( array( 300, 80 ) );
}
} );
Here is how it would look after adding the code.
46. Block WordPress Admin Area for Everyone Except Administrators
Some WordPress websites may need users to register an account. For instance, a WordPress membership site or an eCommerce store.
Most such plugins will prevent those users from accessing the admin area. However, if you are not using such a plugin, then you can add the following code to block all users except administrators from accessing the admin area:
add_action( 'admin_init', function() {
if ( ! current_user_can( 'administrator' ) ) {
wp_redirect( home_url() );
exit;
}
} );
Users with other user roles can still log in to their accounts, but after logging in, they will be redirected to the homepage.
We hope this article helped you learn some new useful tricks for the functions.php file in WordPress. You may also want to see our guide on displaying code in WordPress to share your snippets easily and our expert picks for the best code editors for Mac and Windows.
If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.
DANISH
such a great and useful tricks..
Marco
thank you so much!
Webtechideas
Such a nice list of useful tricks. It will help both plugin and theme developers.
ahmed
In #14, isn’t that a instead of ?
Mick O
Thanks for the helpful article. I really appreciate it. Can you possibly explain why the snippet to add Google analytics (#1) code includes the php declarations. If I have an existing functions.php file that is already defined with , do I need to include the markers again in the snippet? I’m trying to add other customizations into the functions.php and it’s getting hard to keep track.
Editorial Staff
It includes opening php because it is closing PHP tag to allow you to paste plain HTML Google analytics code.
Admin
Luke Gibson
The one about the copyright date seems a little OTT when you could simply cut and paste in © 2006- and it would do exactly the same job, just replace 2006 with whatever static start date you wish. Or am I missing something?
Editorial Staff
Yes, you can definitely do that. But if you are releasing this as part of a theme meant for distribution, then you can’t do that.
Admin
Zeeshan Arshad
Excellent, I was done with my theme and learning but there was much left. This post saved my day and of course I learnt many things as well.
Best Wishes!
DesignSkew
In “Add Author Profile Fields”, the function you mentioned to echo is not working.
Editorial Staff
The curauth would only work if it is on author.php file.
Admin
Mark
Great set of tools. I immediately copied the guest author function as I saw it and will now disable a clumsy plugin I’ve been using. Do you have a function that will provide the post ID of the item being worked with in the editor? I’m trying to auto fill a form with media attachments for the current post but have only been able to get it to work in a custom meta-box but not in a thickbox . The thickbox returns all the media files for all the posts when I just want the current posts’s attachments.
mommyblogger
Thanks for the great Wordpress tips! I was hoping you could help me with an additional one?
I’d like to prevent my tags/categories from spilling over onto another line by limiting the number of tags/categories that appear in the footer of my individual homepage posts. Is it possible to do this with the “the_excerpt”? I would also like the excerpt to be a “…read more” link and limit the number of characters in it. Here is the code it would need to be added to;
$tags_list = get_the_tag_list( ”, __( ‘, ‘, ‘mummyblog’ ) ); if ( $tags_list ): ?> <li> <?php printf( __( ‘<span class=”%1$s”>Tagged</span> %2$s’, ‘mummyblog’ ), ‘entry-utility-prep entry-utility-prep-tag-links’, $tags_list ); ?> </li> <?php endif; // End if $tags_list ?>
Thanks!
SteveEBoy
Like all the others have said below – just too good, a massive help for a newbie and very useful for learning too. Great site all round. Thanks.
LambrosPower
one of the best tutorials i read. Many important topics pointed out and for sure i didn’t know most of them since i just started wordpress custom design.
Xiaozhuli
This article is endlessly useful. I bookmarked it and often refer to it when updating my theme or trying to answer a question. Great job!
Mohammad Yeasin
You guys are just awesome. You know what, wpbegineer is the first website for which i have a separate folder in my bookmark menu. Too good for a wp begineer. youe name suits ur personality. lolz. One day i would must do something special for you. Inshallah.
The only problem i face is related post with thumbnail. your coder are not working. vDont know what to do. Whatever, Keep up the marvelous job. Love the site wpbegineer.
AA
Great post! You obviously know a lot about wordpress coding so I’m hoping you can answer a question. How to you remove the date & time stamp from a wordpress feed-rss? I’ve looked everywhere and can’t find any information on this. I’m working on a wordpress “site” and do not have a use for the dates. I have already removed them from the posts & pages.
Much thanks in advance!
Editorial Staff
Date is NOT optional for RSS feeds. It is a MUST because that is how posts / articles are organized (reverse chronological order). You can remove the display of dates from the template, but you cannot remove them from the XML.
Admin
Michele Welch
Awesome post! Can’t wait to get started on the custom dashboard gravatar! Really exceptional post.
Phil
Great article, I’ve bookmarked it for future reference. Just found wpbeginner by chance what a great resource, thanks!
wparena
it is really good that you compiled all impotent things at one place
Mark Welburn
Good stuff, bookmarked this already. Can see a few of these come to good use more than once. Cheers, Mark.
Connor Crosby
Just a note, be careful when you copy and paste the “end of excerpt” function. It showed a question mark instead of “…” since it was one character. I had to rewrite “…” for it show up.
Martin
Probably the best post about the use of functions.php. Thanks for the tricks and for saving our time.
Huw Rowlands
Wow! Some really handy stuff there!
Thanks for sharing.
mark.
I would suggest an addendum be made to Tip #3 mentioning the fact that this is not security in any way shape or form, and is definitely not an alternative to upgrading as people should.
Hiding the version number is only beneficial to those of us who like to keep unnecessary junk out of the HEAD of your HTML document. Outside of that, it serves no purpose and should not be confused with security; to help illustrate that point: http://dd32.id.au/2010/07/31/what-version-of-wordpress-is-behind-that-website/
helpin
Could you tell me if I need to add these codes for every theme which my multi site have? Is there any there way which these codes automatically apply to the newly added themes?
Thanks !
Editorial Staff
You would have to add these to your theme’s functions.php file. So if it is a theme that is available on all networks, then only once. If there are custom themes being used on each network site, then you would have to do it on each….
Admin
Connor Crosby
Very nice list. I didn’t know you could do so much with the functions.php file!
Andy
You guys rock!!! Thanks for the awesome post.
Best,
Andy
Jennifer R
thanks you for these useful tricks
Marcelo Torres
Wow very good! Thanks for sharing
tarpontech
Best Damn Wordpress Article I’ve ever stumbled across.
ddeja
Thanks for those tips. Some are new for me. So I will be probably try to use them:)
Thanks again.
Chuck Reynolds
Since WP3 final release you need to update #11 to
add_theme_support( ‘menus’ );
Editorial Staff
Fixed thanks
Admin
William
Thanks for the insightful post. Registering sidebar widgets and customising the excerpt mode is going to be handy. Cheers
Kate Mag
Thanks for sharing extremely useful tricks. I didn’t know few tricks before, i know now!.
Adam
Okay, the dynamic copyright date in the footer is one of the coolest tricks for Wordpress I’ve come across. Always hate having to do that each year, but not anymore. Thanks for sharing that one!
Susan
Hi, I am trying to change the default gravatar. The option to choose my new gravatar is showing up however instead of my pic for my gravatar it is showing a broken pic link. I know the path works cause it does when I plug it in to the browser the pic comes up. I have also tried .gif, .png, .jpg and they are all broken. Also it is sized per my theme at 48px X 48px Can you help?
Susan
I finally got it!! Thanks for the awesome post btw.
Dave Z
There are some good suggestions here. Implementation could be improved for a few of them.
For instance, in #8 – Dynamic Copyright, it would probably be better to call the function during the publish_page and publish_post actions. Then, instead of printing the year to the screen, the value (year range) could be stored in the options table (with update_option()). In the theme, you would do something like: echo get_option( ‘comicpress_copyright’, date( ‘Y’ ) );. This would give the current year as the default date, or your preset range. The advantage here is that you eliminate the constant need to query the database for the years during every page load (since get_option can be configured to load automatically with the rest of the options). WordPress can already be heavy on database queries, no need to add an additional one if it can be avoided!
#18 – Remove Login Errors is removing -all- login errors, which could be bad because it also omits notices about disabled cookies, etc. A more effective approach would be to have the function return:
str_replace( array( ‘Invalid username’, ‘Incorrect password’ ), ‘Invalid username or password’, $str );
This keeps the user informed of potential errors while obfuscating which field the error actually occurred in. One thing to keep in mind is that if the username is correct, WordPress will auto-populate that field in subsequent login attempts. A hacker aware of WordPress operation would then know that the username was indeed valid. You can prevent this by commenting out the appropriate section in the wp-login.php file (lines 529-530 in version 2.9.2)–not ideal, I know, but there are no hooks at that point in the code.
Nice tips. I like the Post Thumbnails demonstration.
Editorial Staff
Thank you for your tips Really appreciate it.
Admin
Abdullah
Nice post.. very useful information.
Thnkx wpbeginner for making us more professional in our field.
Regards
Mohummad Abdullah
Zhu
Thank you for the tips, I already implemented a few (like the custom Gravatar) and they work just fine!
Waheed Akhtar
Great list. Bookmarked for any reference in future
Sahus Pilwal
Thanks for the extremely helpful tips. I wish I could find more extremely useful tricks/hack articles for WordPress!
Cheers, Sahus
patrick andrew adams
i can’t wait to try a few of these out, pretty new to wp still.
graphicbeacon
slight problem with NO. 14. Widget title starts with a h2 tag and ends with an h3- Wouldnt validate well methinks.
Todd Santoro
here is one for changing the login logo:
function the_custom_login_logo() {
echo ‘
h1 a { background-image:url(‘.get_bloginfo(‘template_directory’).’/images/custom-login-logo.gif) !important; }
‘;
}
add_action(‘login_head’, ‘the_custom_login_logo’);
Todd Santoro
Make sure you change the single quotes in this code to actuall single quotes as WP strips them in the comments so the PHP code is not executed. Better yet retype it and you will have no problem.
Cheers!
Kenton Bell
I am really impressed with this list, better options than hacking away at the theme files that get lost in upgrades. Thank you.
Raoni
Hi,
just an update, in item 4. Add a Custom Dashboard Logo, in WordPress 3 the “custom-logo.gif” now is a .png image.
Great collection!!!!
Andris
That was a very useful post. I just implemented “4. Add a custom Dashboard Logo” to my Website.
Todd Santoro
Great post. I have this in my WP tool box now. It has everything a theme designer would need in one article. Thanks WPBeginner!
Jake Goldman
Great tips. Got a kick out of seeing a few of mine in there. lots of new tips coming soon in my next article!
Editorial Staff
Will keep my eyes open
Admin
Tony
Finally! I know how to cure the incorrect comment count! Thanks, WPBeginner!
DaveK
Brilliance, I will be putting quite a few of these to good use.
Congrats on the site guys you go from strength to strength, I usually manage to find something useful here.
Keep up the good work.