The ‘posts_fields_request‘ WordPress PHP filter allows you to modify the SELECT statement used to retrieve posts from the database.
On this pageJump to a section
This filter is useful if you need to add custom fields to the SELECT statement or modify the default fields.
Usage
add_filter('posts_fields_request', 'your_custom_function', 10, 2);
function your_custom_function($fields, $query) {
// your custom code here
return $fields;
}
Parameters
- $fields (string): The SELECT clause of the query.
- $query (WP_Query): The WP_Query instance (passed by reference).
More information
See WordPress Developer Resources: posts_fields_request
Examples
Select Post ID and Title Only
Select only the post ID and title from the query.
add_filter('posts_fields_request', 'select_post_id_and_title', 10, 2);
function select_post_id_and_title($fields, $query) {
$fields = "ID, post_title";
return $fields;
}
Add Custom Field to Query
Add a custom field called “price” to the query.
add_filter('posts_fields_request', 'add_custom_field_price', 10, 2);
function add_custom_field_price($fields, $query) {
$fields .= ", meta_value AS price";
return $fields;
}
Add Post Author Name to Query
Add the post author name to the query.
add_filter('posts_fields_request', 'add_post_author_name', 10, 2);
function add_post_author_name($fields, $query) {
$fields .= ", users.display_name AS author_name";
return $fields;
}
Modify Select Clause for Custom Post Type
Modify the SELECT clause only for a custom post type called “book”.
add_filter('posts_fields_request', 'modify_select_for_book_post_type', 10, 2);
function modify_select_for_book_post_type($fields, $query) {
if ('book' == $query->get('post_type')) {
$fields = "ID, post_title, post_date";
}
return $fields;
}
Add Post Thumbnail URL to Query
Add the post thumbnail URL to the query.
add_filter('posts_fields_request', 'add_post_thumbnail_url', 10, 2);
function add_post_thumbnail_url($fields, $query) {
$fields .= ", (SELECT guid FROM wp_posts WHERE ID = (SELECT meta_value FROM wp_postmeta WHERE post_id = wp_posts.ID AND meta_key = '_thumbnail_id')) as thumbnail_url";
return $fields;
}