alleyinteractive / wp-find-one
Query for and return one WordPress post, term, or other object, bypassing intermediate arrays.
Installs: 6 202
Dependents: 0
Suggesters: 0
Security: 0
Stars: 4
Watchers: 23
Forks: 1
Open Issues: 0
Requires
- php: ^8.0
Requires (Dev)
README
The find_one()
family of functions are wrappers for common WordPress retrieval functions like get_posts()
or get_terms()
that reduce the return value of those retrieval functions into a single result.
Installation
Install the latest version with:
$ composer require alleyinteractive/wp-find-one
Basic usage
To find one item in a person
post type:
<?php use function Alley\WP\find_one_post; // Returns a \WP_Post or null. $person = find_one_post( [ 'meta_key' => 'twitter', 'meta_value' => '@potatomaster', 'post_type' => 'person', ] );
which is equivalent to:
<?php $person = \get_posts( [ 'meta_key' => 'twitter', 'meta_value' => '@potatomaster', 'post_type' => 'person', 'posts_per_page' => 1, 'suppress_filters' => false, ] ); if ( ! empty( $person[0] ) ) { $person = $person[0]; }
Taxonomy terms can be searched for similarly:
<?php use function Alley\WP\find_one_term; // Returns a \WP_Term or null. $category = find_one_term( [ 'slug' => 'potatomaster', 'taxonomy' => 'category', ] );
which is equivalent to:
<?php $category = \get_terms( [ 'number' => 1, 'slug' => 'potatomaster', 'taxonomy' => 'category', ] ); if ( ! empty( $category[0] ) ) { $category = $category[0]; }
The underlying find_result()
function accepts the fully qualified class name of the object to search for and the array of query results:
<?php use function Alley\WP\find_result; // Returns a \WP_Network or null. $network = find_result( \WP_Network::class, \get_networks() );
Helper functions are available for all core WordPress data types that have meta tables:
find_one_comment()
find_one_post()
find_one_site()
find_one_term()
find_one_user()