サポート » プラグイン » ContactForm7のinputが非ログインユーザーに表示されない

  • 表題の通りです。
    ログインユーザーには全て表示されるものの、非ログインユーザーには<input>タグで囲まれた部分が表示されません。

    プラグインの干渉が考えられる原因かと思い調査しましたが、原因となるプラグインを発見することはできませんでした。

    他に考えうる原因はありますでしょうか?

    〜使用プラグイン〜
    All In One SEO Pack
    Contact Form 7
    Contact Form 7 Modules: Hidden Fields
    Cryout Serious Theme Settings
    EWWW Image Optimizer
    Expander
    Home Categories
    If Menu
    Lazy Load
    Milliard Related Page
    Social Login
    Theme My Login
    TinyMCE Advanced
    User Access Manager
    WordPress インポートツール
    WP Masonry Layout
    WP Social Bookmarking Light
    外部確認

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • 原因となるプラグインを発見することはできませんでした。

    Contact Form 7 だけを有効(Contact Form 7 Modules: Hidden Fields を含む他のプラグインをすべて停止)しても変わりないのですね。
    それなら、現在のテーマが影響している可能性を検証するために、テーマを Twenty Sixteen に変えて試してはどうでしょう。

    トピック投稿者 gobylover

    (@gobylover)

    ありがとうございます!

    まさにテーマが影響している様で、テーマを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

    トピック投稿者 gobylover

    (@gobylover)

    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 していないのが原因でしょう。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「ContactForm7のinputが非ログインユーザーに表示されない」には新たに返信することはできません。