web-dev-qa-db-ja.com

コメント形式の成功メッセージ

私はワードプレス3.8を使用しています。私はcomment_form();を使っています私はブログにうまく投稿されたコメントにsuccess messageを表示する必要があります。これを行う方法?

2
marsweb

Ajaxもプラグインもなし。 function.phpに追加します。

add_action( 'set_comment_cookies', function( $comment, $user ) {
    setcookie( 'ta_comment_wait_approval', '1' );
}, 10, 2 );

add_action( 'init', function() {
    if( $_COOKIE['ta_comment_wait_approval'] === '1' ) {
        setcookie( 'ta_comment_wait_approval', null, time() - 3600, '/' );
        add_action( 'comment_form_before', function() {
            echo "<p id='wait_approval' style='padding-top: 40px;'><strong>Your comment has been sent successfully.</strong></p>";
        });
    }
});

add_filter( 'comment_post_redirect', function( $location, $comment ) {
    $location = get_permalink( $comment->comment_post_ID ) . '#wait_approval';
    return $location;
}, 10, 2 );
2
Mario62RUS

これを試してみてください: http://wordpress.org/plugins/wp-ajaxify-comments/ /

または(手動で)

テーマのfunctions.phpファイルに次のコードを追加します。

    add_action('init', 'wdp_ajaxcomments_load_js', 10);  
function wdp_ajaxcomments_load_js(){  
        wp_enqueue_script('ajaxValidate', get_stylesheet_directory_uri().'/wdp-ajaxed-comments/js/jquery.validate.min.js', array('jquery'), '1.5.5');  
        wp_enqueue_script('ajaxcomments', get_stylesheet_directory_uri().'/wdp-ajaxed-comments/js/ajax-comments.js',    array('jquery', 'ajaxValidate'), '1.1');  
}  
add_action('comment_post', 'wdp_ajaxcomments_stop_for_ajax',20, 2);  
function wdp_ajaxcomments_stop_for_ajax($comment_ID, $comment_status){  
    if(!emptyempty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){  
    //If AJAX Request Then  
        switch($comment_status){  
            case '0':  
                //notify moderator of unapproved comment  
                wp_notify_moderator($comment_ID);  
            case '1': //Approved comment  
                echo "success";  
                $commentdata=&get_comment($comment_ID, ARRAY_A);  
                $post=&get_post($commentdata['comment_post_ID']); //Notify post author of comment  
                if ( get_option('comments_notify') && $commentdata['comment_approved'] && $post->post_author != $commentdata['user_ID'] )  
                    wp_notify_postauthor($comment_ID, $commentdata['comment_type']);  
                break;  
            default:  
                echo "error";  
        }     
        exit;  
    }  
}  

テーマのjsディレクトリに2つのJavaScriptファイルjquery.validate.min.jsとajax-comments.jsを追加する必要があります。 http://bassistance.de/jquery-plugins/jquery-plugin-validation/ /

そしてajax-comments.jsは次のとおりです。

jQuery('document').ready(function($){  
    var commentform=$('form[action$=wp-comments-post.php]');  
    commentform.prepend('<div id="wdpajax-info" ></div>');  
    var infodiv=$('#wdpajax-info');  
    commentform.validate({  
        submitHandler: function(form){  
            //serialize and store form data in a variable  
            var formdata=commentform.serialize();  
            //Add a status message  
            infodiv.html('<p>Processing...</p>');  
            //Extract action URL from commentform  
            var formurl=commentform.attr('action');  
            //Post Form with data  
            $.ajax({  
                type: 'post',  
                url: formurl,  
                data: formdata,  
                error: function(XMLHttpRequest, textStatus, errorThrown){  
                    infodiv.html('<p class="wdpajax-error" >You might have left one of the fields blank.</p>');  
                },  
                success: function(data, textStatus){  
                    if(data=="success")  
                        infodiv.html('<p class="wdpajax-success" >Thanks for your comment. We appreciate your response.</p>');  
                    else  
                        infodiv.html('<p class="wdpajax-error" >Error in processing your form.</p>');  
                    commentform.find('textarea[name=comment]').val('');  
                }  
            });  
        }  
    });  
});  

メッセージのスタイルをカスタマイズする

.wdpajax-error{   
    border:1px solid #f9d9c9;   
    padding:5px;   
    color:#ff3311;   
}  
.wdpajax-success{   
    border:1px solid #339933;   
    padding:5px;   
    color:#339933;   
}  
label.error{   
    float:none !important;   
    padding-left:5px;   
    color:#ff3311;   
} 

あなたのテーマのcomments.phpを開き、説明されているようにCSSフォームをコメントフォーム入力フィールドに追加します:著者名入力をコメントするにはclass = "required"を追加しますコメントのテキストエリアにclass = "必須"を追加

1
item251