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!