web-dev-qa-db-fra.com

Obtenir des publications avec condition sur la méta-valeur du commentaire

Je dois récupérer tous les articles post_type=projects et post_status=publish qui ont le dernier commentaire de type message datant de plus de 5 jours avec la valeur comment_meta en tant que key=value.

Je veux savoir comment peut préparer la requête à exécuter dans la fonction get_posts().

3
muaaz

Vous pouvez d’abord essayer la requête de commentaire suivante:

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

puis collectez les identifiants de post avec:

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

Vous voudrez peut-être envisager de limiter le nombre de commentaires demandés avec l'attribut number.

Ensuite, vous pourriez par exemple utilisez-le avec:

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

pour un tableau $post_ids non vide.

1
birgire