recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment WordPress utilise les méta-requêtes pour interroger plusieurs types de publications

J'ai trois problèmes assez complexes. Tout d’abord, j’ai deux types de publications personnalisés : un pour les départements et un pour les employés. Dans Employés, vous pouvez sélectionner différents postes/champs pour chaque employé (intitulés « Rôles supplémentaires »), mais les deux dont j'avais besoin étaient « Employé » et « Bibliothèque ».

La première requête dont j'ai besoin concerne tous les employés appartenant à n'importe quel département, les employés appartenant à des employés ou les employés appartenant à une bibliothèque. Certains employés ne sont qu’un de ces éléments, ou une combinaison des trois.

Les deux suivants sont légèrement plus simples. Je n'ai fait qu'une seule requête pour les employés qui n'étaient que des commis (ne faisant pas partie d'un service) ou simplement une bibliothèque (ne faisant pas non plus partie d'un service).

J'ai écrit et réécrit ces requêtes mais je n'ai fait aucun progrès. Je pense que cela nécessite une commande SQL que je n'arrive pas à comprendre. Je partagerai ma dernière itération.

Pour la première requête (service, personnel ou personnel de la bibliothèque) :

$args = array(
    'post_type'   => 'employee',
    'post_status' => 'publish',
    'posts_per_page'  => '-1',
    'orderby'   => 'meta_value',
    'meta_key'  => 'last_name',
    'order'     => 'ASC',
    'meta_query' => array(
        array(
            'key'     => 'additional_roles',
            'value'   => array('staff', 'library'),
            'compare' => 'IN',
        ),
    ),
);
$query = new WP_Query($args);

Deuxième (personnel uniquement)

$args = array(
    'post_type' => 'employee',
    'post_status' => 'publish',
    'posts_per_page' => '-1',
    'meta_key' => 'additional_roles',
    'meta_value' => 'staff',
);
$query = new WP_Query($args);

La requête pour la bibliothèque est la même que pour le personnel, sauf que la méta_valeur est « bibliothèque ». Je sais que le premier ne devrait pas fonctionner car il n'est pas connecté au département cpt, mais je ne sais pas quoi faire. Mais je ne sais pas pourquoi les deux autres ne fonctionnent pas. Je ne reçois actuellement aucun message en retour.

J'espère l'avoir assez bien expliqué. Je serais heureux de partager davantage si nécessaire. Merci!

P粉170858678P粉170858678356 Il y a quelques jours441

répondre à tous(1)je répondrai

  • P粉200138510

    P粉2001385102024-01-17 13:10:46

    posts_per_page 是一个INT(vous fournissez une chaîne)

    $args = array(
        'post_type'   => 'employee',
        'post_status' => 'publish',
        'posts_per_page'  => -1,
        'orderby'   => 'meta_value',
        'meta_key'  => 'last_name',
        'order'     => 'ASC',
        'meta_query' => array(
            'relation' => 'AND',
            array(
                'key'     => 'additional_roles',
                'value'   => array('staff', 'library'),
                'compare' => 'IN',
            ),
            array(
                'key' => 'department',
                'compare' => 'EXISTS',
            ),
        ),
    );
    $first_query = new WP_Query($args);
    
    $staff_args = array(
        'post_type' => 'employee',
        'post_status' => 'publish',
        'posts_per_page' => -1,
        'meta_key' => 'additional_roles',
        'meta_value' => 'staff',
    );
    $staff_query = new WP_Query($staff_args);
    
    $library_args = array(
        'post_type' => 'employee',
        'post_status' => 'publish',
        'posts_per_page' => -1,
        'meta_key' => 'additional_roles',
        'meta_value' => 'library',
    );
    $library_query = new WP_Query($library_args);

    Je n'ai pas encore testé ce code. Faites-moi savoir si cela aide

    répondre
    0
  • Annulerrépondre