Je souhaite filtrer les publications de telle sorte que seules les publications pour lesquelles get_post_meta($post->ID, "project_cat", true)
(il renvoie un ID de publication) équivaut à ma valeur spécifiée sont affichées.
Un moyen de faire ça?
Je suis particulièrement intéressé par les façons de le faire compatible avec WP-Paginate plugin .
L'objet WP_Query
accepte un argument post-méta. De manière générale, vous souhaitez procéder comme suit:
$my_query = new WP_Query(
array(
'post_type' => 'post',
'meta_query' => array(
array(
'key' => 'project_cat',
'value' => 'my-value',
)
),
// Other query properties
)
);
Où "ma-valeur" est votre "valeur spécifiée".
Exemple d'utilisation:
add_action( 'pre_get_posts' , 'my_pre_get_posts' );
function my_pre_get_posts( $query ) {
// Check this is main query and other conditionals as needed
if( $query->is_main_query() ) {
$query->set(
'meta_query',
array(
array(
'key' => 'project_cat',
'value' => 'my-value'
)
)
);
}
}
Voir WP_Query , pre_get_posts . Toutes les conditions sont disponibles pour vous. Actuellement, cela fonctionne sur chaque requête principale - ce que vous ne voulez probablement pas.
Vous pouvez également utiliser query_posts
(méthode plus simple, mais beaucoup moins efficace) pour modifier la requête pour une instance spécifique dans un modèle.
vous pouvez filtrer la publication en fonction de la méta-valeur et l'afficher sur la page cms.
'meta_query' => array(
array(
'key' => 'front_page',
'value' => 'yes',
'compare' => 'LIKE',
))
veuillez vous référer au tutoriel pour une explication étape par étape
http://www.pearlbells.co.uk/filter-posts-custom-fields-wp_query/