• 解決済 fungia

    (@fungia)


    コメント投稿時に投稿されたコメントのIDを、javascriptメソッドへ引数として渡して実行させる方法を探しています。
    functions.phpに以下を記述しまして、いろいろと試みておりますが一向に解決策を見つけることができずに、困っております。
    参考になる記事でも結構ですので、ご助言等、お教え頂けますと大変助かります。

    【functions.phpの記述】

    function my_comment_post()
    {
    $com_id = get_comment_ID();
    /* print “<script type=”text/javascript>func($com_ID)</script>”;
    というように、このタイミングでfunc()にコメントのIDを渡して実行したいのですが・・・当然エラーになります。*/
    }
    add_action( ‘comment_post’, ‘my_comment_post’);

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • コメントが投稿された際の主な挙動は以下の通りです。

    1. コメント投稿フォームの送信ボタンを押すと、wp-comments-post.php へコメントの内容が送信される。この時点ではコメントのIDは未発行
    2. wp-commens-post.php がコメントをデータベースに格納し、元のページへリダイレクト。この処理ではブラウザへの表示は行われない。この時点でコメントのIDが発行
    3. コメント後のページを表示

    javascript は、ブラウザ上で実行されるものですから、なんらかの表示がなされていなければなりません。と、同時に comment_post は、2のタイミングで実行されるものであり、表示がなされない以上、javascriptでなんらかの処理を行う事は不可能です。

    トピック投稿者 fungia

    (@fungia)

    大変わかりやすくご説明を頂まして、ありがとうございます。
    「できない」ということがわかっただけでも、選択肢を絞ることができ、感謝しております。
    別の方法にて検討させていただきます。

    トピック投稿者 fungia

    (@fungia)

    以下の方法にて当初望んでいました動作を実現することができました。
    (最新のコメントIDは test.php にて直接取得しています。)
    コメントを頂きましたjim912様、誠にありがとうございました。

    javascript
    ——————————————–

    jQuery(‘#submit’).live(“click”, function(){
    jQuery.ajax({
    type: ‘post’,
    url: lc_jqpost_info.ajax_url,
    data: {
    ‘comment’: “test”
    },
    success: function(data){
    alert(“success”);
    }
    });
    });

    ——————————————–

    functions.php
    ——————————————–

    function lc_load_jquery(){
    wp_enqueue_script(‘lcjquerytest’, ‘/js/sample.js’, array(‘jquery’), ‘1.0’, true);
    global $post;
    $data = array( ‘ajax_url’ => ‘/test.php’, ‘post_id’ => $post->ID, ‘post_title’ => $post->post_title );
    wp_localize_script( ‘lcjquerytest’, ‘lc_jqpost_info’, $data );
    }
    add_action( ‘wp_enqueue_scripts’, ‘lc_load_jquery’ ,1, 1);

    ——————————————–

    【参考サイト】
    http://www.limecanvas.com/passing-variables-between-php-and-jquery/

3件の返信を表示中 - 1 - 3件目 (全3件中)

トピック「投稿されたコメントのIDを引数としたjavascriptを実行する方法」には新たに返信することはできません。