webentwicklung-frage-antwort-db.com.de

Beiträge mit Bedingung für Kommentar-Metawert abrufen

Ich muss alle Posts post_type=projects und post_status=publish abrufen, deren letzter Kommentar vom Typ message älter als 5 Tage ist und deren comment_meta-Wert key=value ist.

Ich möchte wissen, wie ich die Abfrage für die Ausführung in der Funktion get_posts() vorbereiten kann.

3
muaaz

Sie können zuerst die folgende Kommentarabfrage versuchen:

$comments = get_comments( 
    [
        'post_type'     => 'projects',
        'post_status'   => 'publish',
        'type'          => 'message',
        'date_query'    => [
            [
                'before'    => '5 days ago midnight', 
                'inclusive' => true,
            ]
        ],
        'meta_query'    => [
            [
                'key'   => 'foo',       // <-- Adjust to your needs!
                'value' => 'bar'        // <-- Adjust to your needs!
            ]
        ]           
    ] 
);

und sammle dann die Post-IDs mit:

$post_ids = array_unique( wp_list_pluck( $comments, 'comment_post_ID' ) );

Möglicherweise möchten Sie die Anzahl der abgefragten Kommentare mit dem Attribut number einschränken.

Dann könnten Sie z. Verwenden Sie es mit:

$query = new WP_Query( [ 'post__in' => $post_ids, ... ] );

für ein nicht leeres $post_ids-Array.

1
birgire