Spaces:
Sleeping
Sleeping
/** | |
* Handles Comment Post to WordPress and prevents duplicate comment posting. | |
* | |
* @package WordPress | |
*/ | |
if ( 'POST' !== $_SERVER['REQUEST_METHOD'] ) { | |
$protocol = $_SERVER['SERVER_PROTOCOL']; | |
if ( ! in_array( $protocol, array( 'HTTP/1.1', 'HTTP/2', 'HTTP/2.0', 'HTTP/3' ), true ) ) { | |
$protocol = 'HTTP/1.0'; | |
} | |
header( 'Allow: POST' ); | |
header( "$protocol 405 Method Not Allowed" ); | |
header( 'Content-Type: text/plain' ); | |
exit; | |
} | |
/** Sets up the WordPress Environment. */ | |
require __DIR__ . '/wp-load.php'; | |
nocache_headers(); | |
$comment = wp_handle_comment_submission( wp_unslash( $_POST ) ); | |
if ( is_wp_error( $comment ) ) { | |
$data = (int) $comment->get_error_data(); | |
if ( ! empty( $data ) ) { | |
wp_die( | |
'<p>' . $comment->get_error_message() . '</p>', | |
__( 'Comment Submission Failure' ), | |
array( | |
'response' => $data, | |
'back_link' => true, | |
) | |
); | |
} else { | |
exit; | |
} | |
} | |
$user = wp_get_current_user(); | |
$cookies_consent = ( isset( $_POST['wp-comment-cookies-consent'] ) ); | |
/** | |
* Fires after comment cookies are set. | |
* | |
* @since 3.4.0 | |
* @since 4.9.6 The `$cookies_consent` parameter was added. | |
* | |
* @param WP_Comment $comment Comment object. | |
* @param WP_User $user Comment author's user object. The user may not exist. | |
* @param bool $cookies_consent Comment author's consent to store cookies. | |
*/ | |
do_action( 'set_comment_cookies', $comment, $user, $cookies_consent ); | |
$location = empty( $_POST['redirect_to'] ) ? get_comment_link( $comment ) : $_POST['redirect_to'] . '#comment-' . $comment->comment_ID; | |
// If user didn't consent to cookies, add specific query arguments to display the awaiting moderation message. | |
if ( ! $cookies_consent && 'unapproved' === wp_get_comment_status( $comment ) && ! empty( $comment->comment_author_email ) ) { | |
$location = add_query_arg( | |
array( | |
'unapproved' => $comment->comment_ID, | |
'moderation-hash' => wp_hash( $comment->comment_date_gmt ), | |
), | |
$location | |
); | |
} | |
/** | |
* Filters the location URI to send the commenter after posting. | |
* | |
* @since 2.0.5 | |
* | |
* @param string $location The 'redirect_to' URI sent via $_POST. | |
* @param WP_Comment $comment Comment object. | |
*/ | |
$location = apply_filters( 'comment_post_redirect', $location, $comment ); | |
wp_safe_redirect( $location ); | |
exit; | |