In WordPress è semplice reperire i custom post type usando i loro custom field.
La soluzione è la seguente:
function my_get_cpt_by_meta( $key, $value, $post_type ) {
$args = array(
'post_type' => $post_type,
'meta_key' => $key,
'meta_value' => $value,
'posts_per_page' => -1
);
$loop = new WP_Query( $args );
return $loop;
}
Esempio d'uso:
$loop = my_get_cpt_by_meta( 'test', 1, 'books' );
if( $loop->have_posts() ) {
//...
}