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. 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’
<?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!