web-dev-qa-db-fra.com

Filtrage des publications par meta data

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 .

8
porton

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.

10
Stephen Harris

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/

1
Liz Eipe C