The pre_get_terms WordPress PHP action fires before terms are retrieved, allowing you to modify the query.
Usage
add_action('pre_get_terms', 'your_custom_function');
function your_custom_function($query) {
// your custom code here
return $query;
}
Parameters
$query(WP_Term_Query): Current instance of WP_Term_Query (passed by reference).
More information
See WordPress Developer Resources: pre_get_terms
Examples
Exclude a specific term from the query
Exclude a specific term (by term ID) from the terms query.
add_action('pre_get_terms', 'exclude_specific_term');
function exclude_specific_term($query) {
$term_id_to_exclude = 42; // Replace with the term ID you want to exclude
$query->query_vars['exclude'] = $term_id_to_exclude;
return $query;
}
Limit the number of terms returned
Limit the number of terms returned by the query.
add_action('pre_get_terms', 'limit_number_of_terms');
function limit_number_of_terms($query) {
$query->query_vars['number'] = 5; // Limit the number of terms to 5
return $query;
}
Order terms by title
Order the terms returned by the query alphabetically by their title.
add_action('pre_get_terms', 'order_terms_by_title');
function order_terms_by_title($query) {
$query->query_vars['orderby'] = 'name';
$query->query_vars['order'] = 'ASC';
return $query;
}
Retrieve only parent terms
Retrieve only parent terms from the terms query.
add_action('pre_get_terms', 'get_only_parent_terms');
function get_only_parent_terms($query) {
$query->query_vars['parent'] = 0;
return $query;
}
Filter terms by custom field
Filter terms based on a custom field value.
add_action('pre_get_terms', 'filter_terms_by_custom_field');
function filter_terms_by_custom_field($query) {
$meta_query = array(
array(
'key' => 'your_custom_field_key',
'value' => 'your_custom_field_value',
'compare' => '='
)
);
$query->query_vars['meta_query'] = $meta_query;
return $query;
}