Mastering WordPress: 20 Essential Codes for WordPress Developers

WordPress, renowned for its flexibility and extensibility, offers a plethora of predefined functions that simplify the development process. In this comprehensive guide, we’ve compiled 20 essential WordPress codes to empower developers in various scenarios and Mastering WordPress. This curated collection serves as a quick reference, ensuring that you can easily access and utilize these codes whenever needed during your WordPress development projects.

1. Get all users with the role ‘Administrator’ – Mastering WordPress

<?php
$user_query = new WP_User_Query( array( 'role' => 'Administrator' ) );
if ( ! empty( $user_query->results ) ) {
    foreach ( $user_query->results as $user ) {
        echo '<p>' . $user->display_name . '</p>'; // Display the name of users with the 'Administrator' role
    }
} else {
    echo 'No users found.';
}
?>

Explanation:

This code snippet uses WP_User_Query to fetch and display all users with the ‘Administrator’ role. It’s handy for scenarios where you need to list administrators on your WordPress site.

2. Display only authors

$user_query = new WP_User_Query( array( 'who' => 'authors' ) );
if ( ! empty( $user_query->results ) ) {
    foreach ( $user_query->results as $user ) {
        echo '<p>' . $user->display_name . '</p>'; // Display the name of users with the 'Author' role
    }
} else {
    echo 'No users found.';
}

Explanation: This code snippet fetches and displays users with the ‘Author’ role. It’s useful when you want to showcase authors specifically on your WordPress site.

3. Disable plugin updates for a specific plugin only

Way 1: Add this code in your plugin root file

add_filter('site_transient_update_plugins', 'remove_update_notification');
function remove_update_notification($value) {
    unset($value->response[ plugin_basename(__FILE__) ]);
    return $value;
}

Way 2: Adding code to theme’s functions.php

function my_filter_plugin_updates( $value ) {
    if( isset( $value->response['wp-faker/wp-faker.php'] ) ) {        
        unset( $value->response['wp-faker/wp-faker.php'] );
    }
    return $value;
}
add_filter( 'site_transient_update_plugins', 'my_filter_plugin_updates' );

Explanation: These snippets prevent updates for a specific plugin. Choose the method that suits your project, either by modifying the plugin’s root file or using the theme’s functions.php.

4. Show errors

Scenario 1: Show errors on a specific page

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

Scenario 2: Show errors globally on all WordPress pages

define( 'WP_DEBUG', true );

Explanation: Enable error display for debugging. Use the first snippet on specific pages or the second to show errors globally across your WordPress site.

5. Retrieve posts with a specific category

$args = array(
    'category_name' => 'your-category-slug',
    'posts_per_page' => 5,
);

$posts = new WP_Query( $args );

if ( $posts->have_posts() ) {
    while ( $posts->have_posts() ) {
        $posts->the_post();
        the_title();
        // Additional post content can be displayed here
    }
} else {
    echo 'No posts found.';
}

wp_reset_postdata(); // Reset post data after the loop

Explanation: Fetch and display posts from a specific category using WP_Query. Modify the category slug and adjust the loop content as needed.

6. Customise excerpt length

function custom_excerpt_length( $length ) {
    return 20; // Adjust the number of words in the excerpt
}
add_filter( 'excerpt_length', 'custom_excerpt_length' );

Explanation: Modify the length of post excerpts by adjusting the number of words returned in the custom_excerpt_length function.

7. Redirect users after login

function custom_login_redirect( $redirect_to, $request, $user ) {
    if ( isset( $user->roles ) && is_array( $user->roles ) ) {
        if ( in_array( 'administrator', $user->roles ) ) {
            return home_url( '/admin-dashboard' ); // Adjust the redirect URL for administrators
        } else {
            return home_url(); // Default redirect URL for other user roles
        }
    } else {
        return $redirect_to; // Default redirect if roles are not available
    }
}
add_filter( 'login_redirect', 'custom_login_redirect', 10, 3 );

Explanation: Customize user redirection after login based on their roles. Redirect administrators to ‘/admin-dashboard’ and others to the default home URL.

8. Remove WordPress version number

remove_action('wp_head', 'wp_generator');
remove_action('wp_head', 'wlwmanifest_link');
remove_action('wp_head', 'rsd_link');

Explanation: Improve security by removing WordPress version information from the site’s head. This makes it less predictable for potential attackers.

9. Display the current post’s categories

<?php
$categories = get_the_category();
foreach ( $categories as $category ) {
    echo '<a href="' . esc_url( get_category_link( $category->term_id ) ) . '">' . esc_html( $category->name ) . '</a> ';
}
?>

Explanation: Display the categories of the current post. Useful when you want to showcase the post’s categories within its content.

10. Exclude specific categories from the main loop

<?php
$args = array(
    'category__not_in' => array( 1, 2, 3 ), // Adjust category IDs to exclude
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        // Display post content here
    }
}
wp_reset_postdata(); // Reset post data after the loop
?>

Explanation: Exclude specific categories from the main loop using WP_Query. Customize by adjusting the category IDs in the array.

11. Add a custom logo to the WordPress login page

function custom_login_logo() {
    echo '<style type="text/css">
        h1 a { background-image: url(' . get_template_directory_uri() . '/images/custom-login-logo.png) !important; }
    </style>';
}
add_action('login_head', 'custom_login_logo');

Explanation: Enhance branding by adding a custom logo to the WordPress login page. Replace ‘custom-login-logo.png’ with your image file.

12. Enable shortcodes in widgets

add_filter('widget_text','do_shortcode');

Explanation: Enable the execution of shortcodes within widgets, providing more flexibility in widget content.

13. Disable WordPress emoji script

remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('wp_print_styles', 'print_emoji_styles');

Explanation: Improve site performance by disabling the unnecessary emoji script in the site’s head.

14. Set a custom excerpt for a post

function custom_excerpt($length) {
    return get_the_excerpt();
}
add_filter('excerpt_length', 'custom_excerpt');

Explanation: Override the default excerpt with the full post content. Useful when you want to display the entire post content in excerpts.

15. Add custom fields to user profile

function custom_user_profile_fields($user) {
    ?>
    <h3><?php _e('Custom User Fields', 'your_text_domain'); ?></h3>
    <table class="form-table">
        <tr>
            <th><label for="custom_field"><?php _e('Custom Field', 'your_text_domain'); ?></label></th>
            <td>
                <input type="text" name="custom_field" id="custom_field" value="<?php echo esc_attr(get_the_author_meta('custom_field', $user->ID)); ?>" class="regular-text" />
            </td>
        </tr>
    </table>
    <?php
}
add_action('show_user_profile', 'custom_user_profile_fields');
add_action('edit_user_profile', 'custom_user_profile_fields');

function save_custom_user_profile_fields($user_id) {
    if (current_user_can('edit_user', $user_id)) {
        update_user_meta($user_id, 'custom_field', $_POST['custom_field']);
    }
}
add_action('personal_options_update', 'save_custom_user_profile_fields');
add_action('edit_user_profile_update', 'save_custom_user_profile_fields');

Explanation: This code adds a custom field to the user profile page, allowing the storage of additional information for each user.

16. Disable the WordPress admin bar for non-admins

if (!current_user_can('administrator')) {
    add_filter('show_admin_bar', '__return_false');
}

Explanation: Hide the WordPress admin bar for non-administrative users, providing a cleaner interface for non-admins.

17. Change the default sender name and email address for emails

function custom_wp_mail_from($original_email_address) {
    return 'your_email@example.com';
}
function custom_wp_mail_from_name($original_email_from) {
    return 'Your Name';
}
add_filter('wp_mail_from', 'custom_wp_mail_from');
add_filter('wp_mail_from_name', 'custom_wp_mail_from_name');

Explanation: Customize the sender name and email address for outgoing WordPress emails, ensuring a professional and branded appearance.

18. Disable the WordPress REST API

add_filter('rest_enabled', '__return_false');
add_filter('rest_jsonp_enabled', '__return_false');

Explanation: If you don’t need the WordPress REST API, these filters can be used to disable it and improve security.

19. Customize the login page URL

function custom_login_url() {
    return home_url('/custom-login-url');
}
add_filter('login_url', 'custom_login_url');

Explanation: Change the default WordPress login page URL to enhance security by making it less predictable.

20. Limit post revisions

define('WP_POST_REVISIONS', 5); // Change the number to limit revisions

Explanation: Limit the number of post revisions stored in the database, optimising performance and database size.

These 20 WordPress code snippets form a valuable toolkit for developers, addressing common tasks efficiently. Feel free to integrate, modify, and explore these codes in your projects, enhancing your WordPress development journey.

Happy coding!