web-dev-qa-db-fra.com

Vérifier si quelqu'un a récemment commenté dans l'un de mes messages

Y at-il une fonction wordpress comme -

Si quelqu'un a récemment commenté l'une de mes publications (pas une autre publication d'auteur), je veux sa carte d'identité?

S'il n'y a pas de fonction comme celle-là, comment puis-je y arriver?


En fait, je construis un système de notification et ce sera quelque chose comme ça

Nom d'utilisateur est commenté sur votre postTitle .

1
Jamille

Il semble que vous deviez vérifier auprès d'un utilisateur actuel .

Comme il s'agit d'un système de notification, vous devez prendre tous les identifiants de post de l'utilisateur actuel et les vérifier globalement.

Sinon, vous devez vérifier chaque message. Et vous ne pourrez pas accéder aux valeurs de n’importe où sur le site.

Donc, ce sont les codes pour obtenir les dernières (commentaire, commentaire ID utilisateur) ... globalement :)

// Grab all posts' (array)ids by current user
function current_author_post_ids() {

    global $current_user;

    $args = array(
        'author' => $current_user->ID,
        'post_type' => 'post',
        'post_status' => 'publish',
        'posts_per_page' => -1
    ); // get all posts


    $author_posts = get_posts($args);

    // check if only one id return
    if (count($author_posts) > 1) {

        $allIds = array();

        foreach ($author_posts as $c_post) :
            $allIds[] = $c_post->ID;
        endforeach;

        return $allIds;

    } else {

        return $author_posts[0]->ID;

    }

}

function get_last_comment_and_author_id() {
    $args = array(
        'number' => '1',
        'post__in' => current_author_post_ids(),
        'orderby' => 'post_date',

        // order by Time Stamp Here
        // 'oderby' => 'meta_type' TIME

        'order' => 'DSC',
        'posts_per_page' => 1
    ); // get only one comment


    // Get the latest comment

    $comments = get_comments($args);

    foreach ($comments as $comment) :
        echo 'Last author ID =' . $comment->user_id . '<br>';
        echo 'Last author =' . $comment->comment_author . '<br>';
        echo 'Last Comment =' . $comment->comment_content;
    endforeach;

}

Pour obtenir les valeurs, vous pouvez exécuter cette fonction

 <?php echo get_last_comment_and_author_id(); ?>
1
Ronald

pour récupérer le dernier commentaire d'un article, vous pouvez essayer ce code:

$comments = get_comments([
    "post_id" => $post_id,
    "number" => 1,
]);

if (isset($comments[0])) {

    $lastComment = $comments[0];

    if ("0" === $lastComment->user_id) {
        // comment of a non connected user
    } else {
        // author identifier is in $lastComment->user_id
    }
}
1
mmm