Wie WordPress Metaabfragen verwendet, um mehrere Beitragstypen abzufragen
P粉170858678
P粉170858678 2024-01-16 15:52:53
0
1
361

Ich habe drei ziemlich komplexe Probleme. Erstens habe ich zwei benutzerdefinierte Beitragstypen: einen für Abteilungen und einen für Mitarbeiter. Unter „Mitarbeiter“ können Sie für jeden Mitarbeiter verschiedene Positionen/Felder auswählen (beschriftet mit „Zusätzliche Rollen“), aber die beiden, die ich brauchte, waren „Mitarbeiter“ und „Bibliothek“.

Die erste Abfrage, die ich benötige, sind alle Mitarbeiter einer Abteilung, Mitarbeiter von Mitarbeitern oder Mitarbeiter einer Bibliothek. Manche Mitarbeiter sind nur einer davon oder eine Kombination aus allen dreien.

Die nächsten beiden sind etwas einfacher. Ich habe nur eine Abfrage für Mitarbeiter durchgeführt, die nur Angestellte (nicht Teil einer Abteilung) oder nur Bibliothekar (auch nicht Teil einer Abteilung) waren.

Ich habe diese Abfragen immer wieder geschrieben, aber keine Fortschritte gemacht. Ich denke, es erfordert einen SQL-Befehl, den ich nicht verstehen kann. Ich werde meine neueste Iteration teilen.

Für die erste Anfrage (Abteilung, Mitarbeiter oder Bibliothekspersonal):

$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);

Zweiter (nur Personal)

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

Die Abfrage für die Bibliothek ist dieselbe wie für das Personal, außer dass der Metawert „Bibliothek“ lautet. Ich weiß, dass das erste nicht funktionieren sollte, weil es nicht mit dem Abteilungsleiter verbunden ist, aber ich weiß nicht, was ich tun soll. Aber ich bin mir nicht sicher, warum die anderen beiden nicht funktionieren. Ich erhalte derzeit keine Beiträge zurück.

Ich hoffe, ich habe es gut genug erklärt. Bei Bedarf teile ich gerne mehr mit. Danke!

P粉170858678
P粉170858678

Antworte allen(1)
P粉200138510

posts_per_page 是一个INT(您提供一个字符串)

$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);

我还没有测试过这段代码。让我知道这是否有帮助

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!