Search custom post type by title in WordPress
This post shows how to search custom post types in WordPress using get_page_by_title.
The returned page displays the posts of the selected category.
A user will be able to see the related posts on a single page once the post type title is searched.
Also, you will find out how to search a custom post type by a posts title
Let’s get started.
using get_page_by_title
Pass the string representing the taxonomy title to a get_page_by_title.
It is a required parameter.
Let’s assume the blog has a page named “THE BEST IN TOWNS”
To retrieve the given page a page title is going to be the first parameter.
$CustomPageType = get_page_by_title (‘THE BEST IN TOWNS’);
echo $CustomPageType;
But the function ignores the post status then the best is to build a custom query.
Method 2: Using the custom query
This method requires a function in the function.php file
It also uses the add_filter function to execute a newly added function.
Here is a code snippet for the given task.
function customPostTitleSearch($query)
{
if($query->is_search){
$args = array ( ‘post_type’, ‘about’, ‘best towns’, ‘best phones’);
$query – >set (‘post_type’, $args);
}
return $query;
}
add_filter (‘pre_get_posts’ , ‘customPostTitleSearch’);
The snippet provides a custom post type but it doesn’t return the exact match page title.
Code Explanation
To access the post a WP_Query is needed.
The function you add in functions.php takes in WP_Query object.
Otherwise, it will be difficult to achieve the object.
That is why the function parameter is $query which is the object of WP_Query class.
Another required WordPress function is add_filter.
The add_filter uses pre_get_posts to fire the created query variable.
The $query is needed to access the is_search variable and set function.
- is_search – You should check the kind of query returned. is_search helps determine if the query is designed to search the contents
- set – It sets the values of the queried variable meaning the titles of the custom page type are defined here.
The values that go to the set function are defined in an array.
The name of the array is $args.
The array contains a post_type variable that sets the kind of page the query can return.
The other members of the array are the titles of the custom post types.
The function returns the $query object which will give post types titles posts.
Some useful insights.