Comment WordPress utilise les méta-requêtes pour interroger plusieurs types de publications
P粉170858678
P粉170858678 2024-01-16 15:52:53
0
1
423

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粉170858678
P粉170858678

répondre à tous(1)
P粉200138510

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal