/** * Checks one or more comments against the Akismet API. * * ## OPTIONS * <comment_id>... * : The ID(s) of the comment(s) to check. * * [--noaction] * : Don't change the status of the comment. Just report what Akismet thinks it is. * * ## EXAMPLES * * wp akismet check 12345 * * @alias comment-check */ public function check($args, $assoc_args) { foreach ($args as $comment_id) { if (isset($assoc_args['noaction'])) { // Check the comment, but don't reclassify it. $api_response = Akismet::check_db_comment($comment_id, 'wp-cli'); } else { $api_response = Akismet::recheck_comment($comment_id, 'wp-cli'); } if ('true' === $api_response) { WP_CLI::line(sprintf(__("Comment #%d is spam.", 'akismet'), $comment_id)); } else { if ('false' === $api_response) { WP_CLI::line(sprintf(__("Comment #%d is not spam.", 'akismet'), $comment_id)); } else { if (false === $api_response) { WP_CLI::error(__("Failed to connect to Akismet.", 'akismet')); } else { if (is_wp_error($api_response)) { WP_CLI::warning(sprintf(__("Comment #%d could not be checked.", 'akismet'), $comment_id)); } } } } } }
public static function recheck_queue_portion($start = 0, $limit = 100) { global $wpdb; $paginate = ''; if ($limit <= 0) { $limit = 100; } if ($start < 0) { $start = 0; } $moderation = $wpdb->get_col($wpdb->prepare("SELECT * FROM {$wpdb->comments} WHERE comment_approved = '0' LIMIT %d OFFSET %d", $limit, $start)); $result_counts = array('processed' => count($moderation), 'spam' => 0, 'ham' => 0, 'error' => 0); foreach ($moderation as $comment_id) { $api_response = Akismet::recheck_comment($comment_id, 'recheck_queue'); if ('true' === $api_response) { ++$result_counts['spam']; } elseif ('false' === $api_response) { ++$result_counts['ham']; } else { ++$result_counts['error']; } } return $result_counts; }