サポート » 使い方全般 » ユーザーログイン時のコメントフォームの挙動について

  • ユーザーがログインしたときにだけコメントを表示できるようにし、かつコメントフォームカスタマイズしたいと思っています。

    現在は、ログインしていないときのみカスタマイズが利いており、
    「comment_form_default_fields」
    「comment_form_fields」
    がログインしている場合にはフィルターとしてきのうしていないみたいなのですが、
    解説サイトを見るとログインしていても同じように動作をするように思います。

    もしかしてこれらのフィルターはログインしていなければ動作しないものなのでしょうか?

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • お望みの効果を得るための関数は is user logged in ではないかと思うのですがいかがでしょうか。

    トピック投稿者 kabachanta

    (@kabachanta)

    「is_user_logged_in」はユーザーがログインしているかどうかの関数かと思うのですが、
    comment_form()の表記に関する部分で使用することはあるのでしょうか?

    「もしもログインしていたらユーザー名を表示する」ということを実装するのに使用する印象でした。

    ユーザーがログインしたときにだけコメントを表示、逆説的にユーザーがログインしていないときにはコメントは非表示で
    また別件として、ユーザーのログイン、ログオフ如何にかかわらずコメントフォームはカスタマイズを施したい
    ということなのかなとおもっていましたがそれらは一絡げだったでしょうか。
    「ユーザーがログインしたときにだけコメントを表示しかつコメントフォームカスタマイズする」と
    「ユーザーがログインしていないときにはコメントは表示以外のなにかでかつコメントフォームはカスタマイズしない」という形でしょうか。
    どちらにしても「ユーザーがログインしているとき、いないとき」という分岐と、分岐の結果「カスタマイズしたコメントないしコメントフォームを表示」するのではないかと思っていたのですが思い違いでしたら申し訳ございません。

    予想していた式は以下のようなものでした。

    if(ユーザーがログインしていたら:is_user_logged_in()){
    //ユーザーがログインしているときの表示
    echo "かつ、カスタマイズされたコメントフォームが表示されます。";
    }else{
    //ユーザーがログインしていないときの表示
    echo "ログインしたときにコメントフォームが表示されます。";
    }

    すみませんいま改めて確認しまして、フィルターの設定についてログインの如何で動作が異なっている現象が発生している現状についてのお話だったのですね。
    どうなっているのか、というご質問と、どうしたい、の希望と取り違えておりました。
    comment form はパラメータにログインしているときの挙動などの指定をするところがあると思うのですが、どのような設定でコメントフォームを動作しているのかお教えいただけると幸いです。

    LABE

    (@latobeam)

    「ログインしていないときのみカスタマイズが利いており
    「ログインしている場合にはフィルターとしてきのうしていない
    とありますが、カスタマイズにはフィルターを使っているんですよね?
    それだと、ログインしていないときにフィルターは動作しているのですから、
    「これらのフィルターはログインしていなければ動作しないものなのでしょうか?」
    の意味がよくわからないのですが、書き間違いでしょうか。

    ちなみに、ログインしている場合はコメントフォームの「名前」「メールアドレス」「URL」の入力欄が表示されないので、 comment_form_fields フィルターの大部分と comment_form_default_fields フィルターのおそらく全部は、実質的には無意味になるでしょう。

    トピック投稿者 kabachanta

    (@kabachanta)

    @msio
    返信遅くなりました、すみません。
    文章がわかりにくく、申し訳ございません…

    comment_form()はそのまま呼び出していて、function.phpにfilterを追加しております。
    追加しているのはcomment_form_default_fieldscomment_form_fieldscomment_form_defaultsになります。

    追加している内容は、デフォルトの入力欄よりも項目を増やしたいので、$fieds[]に追加する旨の記述を書いています。

    • この返信は5年、 4ヶ月前にkabachantaが編集しました。
    トピック投稿者 kabachanta

    (@kabachanta)

    @latobeam

    文章がわかりにくく、申し訳ございません。
    ログインすると動作しないものなのでしょうか?の間違いです…

    今回実装したいのは、$fields['title']$fields['data']など入力項目を増やしたいのですが、ログインしているユーザーのコメントフォームに入力欄を追加するにはどのような処理を書けばよろしいでしょうか?

    LABE

    (@latobeam)

    ログインしているユーザーに対してのみ、実行されるアクション comment_form_logged_in_after があり、 comment_form() の引数の logged_in_as のメッセージ表示直後に実行されます。

    function my_logged_in_after( $commenter, $user_identity ) {
    }
    add_action( 'comment_form_logged_in_after', 'my_logged_in_after', 10, 2 );

    ログインしているユーザーとしていないユーザーの両方に対して実行されるアクションは、それより少し前に実行される comment_form_top になります。

    function my_comment_form_top() {
    }
    add_action( 'comment_form_top', 'my_comment_form_top' );

    このいずれかのアクションにて入力項目をechoすればいいかと思いますが、アクションの実行タイミングとしては若干思い通りにならないかもしれません。

    • この返信は5年、 3ヶ月前にLABEが編集しました。
    LABE

    (@latobeam)

    comment_form_submit_field というフィルターもありますね。
    こちらはコメントフォームの送信ボタンに対するフィルターですが、ここで入力項目を追加することもできると思います。

    function my_submit_field( $submit_field, $args ) {
        $my_fields = 'ここに追加';
        return $my_fields . $submit_field;
    }
    add_filter( 'comment_form_submit_field', 'my_submit_field', 10, 2 );

    こちらだと、ログインの有無にかかわらず適用され、表示位置としても妥当かと思います。

    • この返信は5年、 3ヶ月前にLABEが編集しました。
    トピック投稿者 kabachanta

    (@kabachanta)

    >@latobeam
    返信が大変遅くなりました。申し訳ございません。

    結局社内の他のエンジニアに、comments.phpを直接修正する形で実装してもらいました。
    ご教授いただいたfilterに関しては改めて調べて知識として身につけさせていただきます。

    ありがとうございます。<(_ _)>

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • トピック「ユーザーログイン時のコメントフォームの挙動について」には新たに返信することはできません。