2017-04-12 30 views
0

我需要您的解決方案爲我的網站。對不起,我的英語不好。如何修復我的網站中的replytocom&comment_error_msg

我有一個網站與wordpress cms。我的wp-comments-post.php正在工作,當我的網站在共享託管,但在我移動我的網站在VPS後,回覆&評論錯誤不起作用在我的網站。我的vps使用centos 6.9 x 64,php 5.6。這是我的WP-評論-post.php中

<?php 
/** 
* Handles Comment Post to WordPress and prevents duplicate comment posting. 
* 
* @package WordPress 
*/ 

if ('POST' != $_SERVER['REQUEST_METHOD']) { 
    header('Allow: POST'); 
    header('HTTP/1.1 405 Method Not Allowed'); 
    header('Content-Type: text/plain'); 
    exit; 
} 

/** Sets up the WordPress Environment. */ 
require(dirname(__FILE__) . '/wp-load.php'); 

nocache_headers(); 

$comment_post_ID = isset($_POST['comment_post_ID']) ? (int) $_POST['comment_post_ID'] : 0; 

$post = get_post($comment_post_ID); 

if (empty($post->comment_status)) { 
    do_action('comment_id_not_found', $comment_post_ID); 
    exit; 
} 

// get_post_status() will get the parent status for attachments. 
$status = get_post_status($post); 

$status_obj = get_post_status_object($status); 

if (!comments_open($comment_post_ID)) { 
    do_action('comment_closed', $comment_post_ID); 
    wp_die(__('My error masssage.......')); 
} elseif ('trash' == $status) { 
    do_action('comment_on_trash', $comment_post_ID); 
    exit; 
} elseif (!$status_obj->public && !$status_obj->private) { 
    do_action('comment_on_draft', $comment_post_ID); 
    exit; 
} elseif (post_password_required($comment_post_ID)) { 
    do_action('comment_on_password_protected', $comment_post_ID); 
    exit; 
} else { 
    do_action('pre_comment_on_post', $comment_post_ID); 
} 

$comment_author  = (isset($_POST['author'])) ? trim(strip_tags($_POST['author'])) : null; 
$comment_author_email = (isset($_POST['email'])) ? trim($_POST['email']) : null; 
$comment_author_url = (isset($_POST['url']))  ? trim($_POST['url']) : null; 
$comment_content  = (isset($_POST['comment'])) ? trim($_POST['comment']) : null; 

// If the user is logged in 
$user = wp_get_current_user(); 
if ($user->ID) { 
    if (empty($user->display_name)) 
     $user->display_name=$user->user_login; 
    $comment_author  = $wpdb->escape($user->display_name); 
    $comment_author_email = $wpdb->escape($user->user_email); 
    $comment_author_url = $wpdb->escape($user->user_url); 
    if (current_user_can('unfiltered_html')) { 
     if (wp_create_nonce('unfiltered-html-comment_' . $comment_post_ID) != $_POST['_wp_unfiltered_html_comment']) { 
      kses_remove_filters(); // start with a clean slate 
      kses_init_filters(); // set up the filters 
     } 
    } 
} else { 
    if (get_option('comment_registration') || 'private' == $status) 
     wp_die(__('My error masssage.......')); 
} 

$comment_type = ''; 

//MOD Customize comment error message. 
//Need to add the following code to your comments.php file wherever you want error message to display: 
/* 
    <?php if ($_GET['comment_error_msg']) { // Display Comment Error Message ?> 
    <div class="comment_error_message">Comment <?php echo $_GET['comment_error_msg']; ?><br>Note: If your comment text disappeared, try clicking your browser BACK button.</div> 
    <?php } ?> 
*/ 
$comment_error_true = false; //MOD new code 
if ('' == $comment_content) { 
    $comment_error_msg = __('&nbsp;&nbsp; My error masssage.......'); //MOD new code 
    $comment_error_true = true; //MOD new code 
    //wp_die(__('My error masssage.......')); //original 
} 

if (get_option('require_name_email') && !$user->ID) { 
    if (6 > strlen($comment_author_email) || '' == $comment_author) { 
     $comment_error_msg = __('&nbsp;&nbsp; My error masssage.......'); //MOD new code 
     $comment_error_true = true; //MOD new code 
     //wp_die(__('My error masssage.......')); //original 
    } elseif (!is_email($comment_author_email)) { 
     $comment_error_msg = __('&nbsp;&nbsp; My error masssage.......'); //MOD new code 
     $comment_error_true = true; //MOD new code 
     //wp_die(__('My error masssage.......')); //original 
    } 
} 

//MOD Original code is now in the ELSE statement 
if (true == $comment_error_true) { //MOD new code 

    //Set this to false to use default wp_die page 
    $use_comment_custom_error_page = true; //MOD new code 

    if ($use_comment_custom_error_page) { //MOD new code 
     $location = get_permalink() . '?comment_error_msg=' . urlencode($comment_error_msg); //MOD new code 
     if (!$user->ID) { //MOD new code 
      $comment_cookie_lifetime = apply_filters('comment_cookie_lifetime', 30000000); //MOD new code 
      setcookie('comment_author_' . COOKIEHASH, $comment_author, time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN); //MOD new code 
      setcookie('comment_author_email_' . COOKIEHASH, $comment_author_email, time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN); //MOD new code 
      setcookie('comment_author_url_' . COOKIEHASH, esc_url($comment_author_url), time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN); //MOD new code 
      //setcookie('comment_content_' . COOKIEHASH, $comment_content, time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN); //MOD new code //TO DO: Figure out how to get Comment field to re-appear and not be deleted. 
     } //MOD new code 
    } else { //MOD new code 
     wp_die($comment_error_msg); //MOD new code //This performs the default comment error page action 
    } //MOD new code 
} else { //MOD new code 

    //Original unmodified code STARTS here 
    $comment_parent = isset($_POST['comment_parent']) ? absint($_POST['comment_parent']) : 0; 

    $commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'comment_parent', 'user_ID'); 

    $comment_id = wp_new_comment($commentdata); 

    $comment = get_comment($comment_id); 
    if (!$user->ID) { 
     $comment_cookie_lifetime = apply_filters('comment_cookie_lifetime', 30000000); 
     setcookie('comment_author_' . COOKIEHASH, $comment->comment_author, time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN); 
     setcookie('comment_author_email_' . COOKIEHASH, $comment->comment_author_email, time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN); 
     setcookie('comment_author_url_' . COOKIEHASH, esc_url($comment->comment_author_url), time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN); 
    } 

    $location = empty($_POST['redirect_to']) ? get_comment_link($comment_id) : $_POST['redirect_to'] . '#comment-' . $comment_id; 
    $location = apply_filters('comment_post_redirect', $location, $comment); 
    //Original unmodified code ENDS here 

} //MOD new code 

wp_redirect($location); 
exit; 
?> 

請幫我....謝謝

回答

0

我看到我自己的WordPress網站這個問題。只需從wp-comments-post.php頁面刪除以下代碼即可解決此問題。

if ('POST' != $_SERVER['REQUEST_METHOD']) { 
    header('Allow: POST'); 
    header('HTTP/1.1 405 Method Not Allowed'); 
    header('Content-Type: text/plain'); 
    exit; 
} 

我希望它的工作原理...