お望みの効果を得るための関数は is user logged in ではないかと思うのですがいかがでしょうか。
「is_user_logged_in」はユーザーがログインしているかどうかの関数かと思うのですが、
comment_form()の表記に関する部分で使用することはあるのでしょうか?
「もしもログインしていたらユーザー名を表示する」ということを実装するのに使用する印象でした。
ユーザーがログインしたときにだけコメントを表示、逆説的にユーザーがログインしていないときにはコメントは非表示で
また別件として、ユーザーのログイン、ログオフ如何にかかわらずコメントフォームはカスタマイズを施したい
ということなのかなとおもっていましたがそれらは一絡げだったでしょうか。
「ユーザーがログインしたときにだけコメントを表示しかつコメントフォームカスタマイズする」と
「ユーザーがログインしていないときにはコメントは表示以外のなにかでかつコメントフォームはカスタマイズしない」という形でしょうか。
どちらにしても「ユーザーがログインしているとき、いないとき」という分岐と、分岐の結果「カスタマイズしたコメントないしコメントフォームを表示」するのではないかと思っていたのですが思い違いでしたら申し訳ございません。
予想していた式は以下のようなものでした。
if(ユーザーがログインしていたら:is_user_logged_in()){
//ユーザーがログインしているときの表示
echo "かつ、カスタマイズされたコメントフォームが表示されます。";
}else{
//ユーザーがログインしていないときの表示
echo "ログインしたときにコメントフォームが表示されます。";
}
すみませんいま改めて確認しまして、フィルターの設定についてログインの如何で動作が異なっている現象が発生している現状についてのお話だったのですね。
どうなっているのか、というご質問と、どうしたい、の希望と取り違えておりました。
comment form はパラメータにログインしているときの挙動などの指定をするところがあると思うのですが、どのような設定でコメントフォームを動作しているのかお教えいただけると幸いです。
「ログインしていないときのみカスタマイズが利いており」
「ログインしている場合にはフィルターとしてきのうしていない」
とありますが、カスタマイズにはフィルターを使っているんですよね?
それだと、ログインしていないときにフィルターは動作しているのですから、
「これらのフィルターはログインしていなければ動作しないものなのでしょうか?」
の意味がよくわからないのですが、書き間違いでしょうか。
ちなみに、ログインしている場合はコメントフォームの「名前」「メールアドレス」「URL」の入力欄が表示されないので、 comment_form_fields
フィルターの大部分と comment_form_default_fields
フィルターのおそらく全部は、実質的には無意味になるでしょう。
@msio
返信遅くなりました、すみません。
文章がわかりにくく、申し訳ございません…
comment_form()
はそのまま呼び出していて、function.php
にfilterを追加しております。
追加しているのはcomment_form_default_fields
comment_form_fields
comment_form_defaults
になります。
追加している内容は、デフォルトの入力欄よりも項目を増やしたいので、$fieds[]
に追加する旨の記述を書いています。
@latobeam
文章がわかりにくく、申し訳ございません。
ログインすると動作しないものなのでしょうか?の間違いです…
今回実装したいのは、$fields['title']
、$fields['data']
など入力項目を増やしたいのですが、ログインしているユーザーのコメントフォームに入力欄を追加するにはどのような処理を書けばよろしいでしょうか?
ログインしているユーザーに対してのみ、実行されるアクション 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すればいいかと思いますが、アクションの実行タイミングとしては若干思い通りにならないかもしれません。
-
この返信は7年、 8ヶ月前にLABEが編集しました。
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 );
こちらだと、ログインの有無にかかわらず適用され、表示位置としても妥当かと思います。
-
この返信は7年、 8ヶ月前にLABEが編集しました。
>@latobeam
返信が大変遅くなりました。申し訳ございません。
結局社内の他のエンジニアに、comments.phpを直接修正する形で実装してもらいました。
ご教授いただいたfilterに関しては改めて調べて知識として身につけさせていただきます。
ありがとうございます。<(_ _)>