原因となるプラグインを発見することはできませんでした。
Contact Form 7 だけを有効(Contact Form 7 Modules: Hidden Fields を含む他のプラグインをすべて停止)しても変わりないのですね。
それなら、現在のテーマが影響している可能性を検証するために、テーマを Twenty Sixteen に変えて試してはどうでしょう。
ありがとうございます!
まさにテーマが影響している様で、テーマをRwentySixteen等に変更したところ正常に動作しました。
使用しているParabolaというテーマのどこが影響しているのかを調査し、修正しようと思います。
一方で、ログイン時と非ログイン時で挙動が変わるという現象は初めての経験で、足がかりも思いつかないのですが、考えうる原因はございますでしょうか。。。?
検証しましたが再現できません。WordPeess 4.5.2にParabolaテーマとContact Form 7プラグインを入れ、新規フォームを作り、投稿へ配置しました。
Parabolaテーマの設定変更や、フィルターやアクションの利用(子テーマでカスタマイズ)は行っていません。gobyloverさんのところでは?
新しくフォームを作って(内容はデフォルト)配置しても変わりないでしょうか。
[追記]テーマはバージョン1.7.0を入れました。
何か
if ( is_user_logged_in() ) {
から始まる、ログインした場合のみ処理するなどのコードが入っていませんでしょうか。
入っているなら、そこにcontact form 7のショートコードが入りこんでいないか確認してみてはと思います。
参考:https://wordpress.org/support/topic/show-form-only-to-logged-in-users?replies=11
gblsmさん
kimipoohさん
ありがとうございます。
以前、functions.phpに以下のコードを追記したことを思い出しました。
function my_form_tag_filter($tag) {
if (!is_array($tag))
return $tag;
if(is_user_logged_in()){
$grade = get_the_author_meta('grade');
$sex = get_the_author_meta('sex');
if($sex == "男"){
$sex = 1;
}else{
$sex = 2;
}
$name = $tag['name'];
if ($name == 'grade') {
$tag['options'][1] = 'default:'.$grade;
}
if ($name == 'sex') {
$tag['options'][0] = 'default:'.$sex;
}
return $tag;
}
}
add_filter('wpcf7_form_tag', 'my_form_tag_filter', 11);
ログインユーザーのフォーム記入を簡素化するためのカスタマイズのつもりが、そもそもContactForm7自体の挙動に影響を与えてしまっていたようですね…
ひとまず上記コードを削除したところ、現象は改善されました。ありがとうございます。
一方で、ログインユーザーのフォーム入力を簡素化する方法がマズかった、ということでしょうか。。。?
ユーザーネームやテキスト形式のユーザー情報はContactForm7で準備されているdefalt機能で対応できますが、選択式のユーザー情報(今回の場合は独自に追加した性別、学年)についてを自動入力にしたく、実装したつもりでした。
直ってよかったですね。
簡素化の件は新たにトピックを起こすことにして、こちらは解決済みにして頂けますか。ご協力をお願いします。
[追記]ふたつ目の if 文が不成立のときに $tag を return していないのが原因でしょう。