• [form_part_reservation]などフォームパーツをテンプレートとし読み込んでいます。

    HTMLの書き出し、メールの送受信は問題なく動作しているのですが、必須などのバリデーションが動作しません。Javascriptなどを無効にしても機能しませんでした。

    add_filter('wpcf7_form_elements', function ($form) {

    // [form_part_*] を置き換え
    $form = preg_replace_callback('/\[form_part_([a-zA-Z0-9_]+)\]/', function ($matches) {
    $part = $matches[1];
    $template_path = __DIR__ . "/templates/cf7/cf7-{$part}.php";

    $content = '';
    if (is_readable($template_path)) {
    ob_start();
    require_once $template_path;
    $content = ob_get_clean();
    }


    return wpcf7_replace_all_form_tags($content);
    }, $form);

    return $form;
    });
    // cf7-reservation.php

    [test* namae]
    [test* furigana]

    ContactForm7の編集画面での [test* namae] [test* furigana] は通常通り動作します。

    そもそもこういうやり方は正しくないのでしょうか?

    • このトピックはtoggleMeが1ヶ月、 2週前に変更しました。
3件の返信を表示中 - 1 - 3件目 (全3件中)
  • こんにちは。

    今の情報だけだと、正直なところ有効な回答をできないのですが、

    • ContactForm7 のバージョンが最新になっているか?
    • デバックログを出力して、ログを確認する

    問題のフォームを埋め込んでいるサイトを共有してくださった方が的確なアドバイスが可能かもしれません。

    あと、本件に限らずですが、何らかの目的(実現したいこと)があって、カスタマイズされていると思いますが、それらを共有してくださると、「こういう方法はどう?」みたいなアドバイスができるかもしれません。

    トピック投稿者 toggleMe

    (@toggleme)

    バージョンはContactForm7、WordPressともに現段階での最新バージョンです。
    ログもチェックしているのですが問題なさそうです。←いまいち見方がわからないですが。

    該当のサイトはまだ開発段階でローカル環境です。送受信はSMTPを使用してます。
    編集画面でのHTMLタグなどの管理が面倒なのでファイルで直接管理したいなと思ってこの仕様にしています。

    • タグのHTML置き換えも、編集画面で正しく設置した場合と同じ出力内容で問題ありませんでした。
    • 送受信も問題なくできている
    • バリデーションだけ動かない(php、jsともに)エラーも出てないようです。

    こんな感じで大丈夫でしょうか?

    // 呼び出し
    <?php echo do_shortcode('[contact-form-7 id="2058b9d" title="来場予約_希望日時" html_class="h-adr"]');
    // contactform7の編集画面
    [form_part_reservation]
    [form_part_user]
    [form_part_contact]
    [form_part_acceptance]

    __DIR__ . "/templates/cf7/cf7-reservation.php";
    __DIR__ . "/templates/cf7/cf7-user.php";
    __DIR__ . "/templates/cf7/cf7-contact.php";
    __DIR__ . "/templates/cf7/cf7-acceptance.php";
    // 例)cf7-contact.phpの中身

    <span class="p-country-name" style="display:none;">Japan</span>
    <dl>
    <dt>郵便番号</dt>
    <dd class="p-0 m-0">
    [text zipcode class:p-postal-code]
    <a href="https://www.post.japanpost.jp/zipcode/" class="inline-link text-nowrap"><i class="icon-search mr-1"></i><u>郵便番号検索</u></a>
    </dd>
    </dl>
    <dl>
    <dt>都道府県</dt>
    <dd class="p-0 m-0">[select pref class:p-region default:1"都道府県""北海道" "青森県" "岩手県" "宮城県" "秋田県" "山形県" "福島県" "茨城県" "栃木県" "群馬県" "埼玉県" "千葉県" "東京都" "神奈川県" "新潟県" "富山県" "石川県" "福井県" "山梨県" "長野県" "岐阜県" "静岡県" "愛知県" "三重県" "滋賀県" "京都府" "大阪府" "兵庫県" "奈良県" "和歌山県" "鳥取県" "島根県" "岡山県" "広島県" "山口県" "徳島県" "香川県" "愛媛県" "高知県" "福岡県" "佐賀県" "長崎県" "熊本県" "大分県" "宮崎県" "鹿児島県" "沖縄県"]</dd>
    </dl>
    <dl>
    <dt>市区町村</dt>
    <dd class="p-0 m-0">[text zip1 class:p-locality class:p-street-address]</dd>
    </dl>
    <dl>
    <dt>番地、建物名など</dt>
    <dd class="p-0 m-0">[text zip2 class:p-extended-address]</dd>
    </dl>

    <?php add_action('wp_footer', function () { ?>
    <script src="https://yubinbango.github.io/yubinbango/yubinbango.js" charset="UTF-8"></script>
    <?php }, 120); ?>
    • この返信は1ヶ月、 2週前にtoggleMeが編集しました。

    なるほど。
    私は @toggleme さんがしているような「HTMLタグなどの管理が面倒なのでファイルで直接管理したい」実装は行ったことがないので、何とも言えないですね。

    考え方だと思いますが、WordPress の場合には、管理画面上で行うことで、エンドユーザー(開発者以外のサイト運用者の方)が運用・更新できることがメリットかな、と思います。

    他の方が有益な助言があるかもしれませんので、お待ちください。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • このトピックに返信するにはログインが必要です。