MW WP Form | 本番環境とテスト環境で個別のIDを指定せずスラッグベースの運用でメンテしやすくする方法

MW WP Form はとても便利で簡単に問い合わせフォームを作成出来るプラグインですが、本番環境と開発環境を分けて運用する場合、フォームのID(投稿ID)が異なるものになってしまい環境ごとに個別のIDでフォームを呼びだしたりドメイン情報や何かしらの環境情報をもとに切り替える方法をとることもあると思いますが、今回はフォーム作成時にスラッグを設定してスラッグベースで運用できるようにしたいと思います。

スラッグを設定

MW WP Form のフォーム編集ページでスラッグを設定します。スラッグの入力項目が表示されていない場合は、画面右上の「表示オプション」から “スラッグ” にチェックを入れます。

スラッグからフォームID(投稿ID)を取得

MW WP Form でフォームを作成する際に設定したスラッグ情報からフォームID(投稿ID)を取得する関数を用意します。

ID取得関数サンプル

/**
 * MW WP Form のスラッグからフォームID(投稿ID)を取得する
 */
function ag_get_mwf_form_id( $form_slug )
{
  $args = [
    'post_type'      => 'mw-wp-form',
    'name'           => $form_slug,
    'posts_per_page' => 1
  ];
  $mwf_query = new WP_Query($args);

  // 
  if ($mwf_query->have_posts()) {
    while ($mwf_query->have_posts()) { $mwf_query->the_post();
        $mwf_id = get_the_ID();
    }
  }

  wp_reset_postdata();

  return $mwf_id;
}

IDを取得

“mwf_contact” というスラッグにしている場合は、以下のように引数にスラッグを渡してフォームID(投稿ID)を取得します。

$form_id = ag_get_mwf_form_id('mwf_contact');

フォーム呼び出し

以下、テンプレートからフォームを呼び出す場合ですが、予め取得したフォームIDを指定してフォームを呼び出します。

<?php echo do_shortcode("[mwform_formkey key={$form_id}]"); ?>

上記のようにすることで、個別の数字のIDを指定する必要がなくなりますので、環境ごとの分岐処理がなくなりコードがスッキリすると思います。

動作環境情報

"エックスサーバー" スタンダード(旧X10)
"PHP" 7.4.28
"MariaDB" 10.5
"WordPress" 6.0.1
"MW WP Form" 4.4.1

コメント

タイトルとURLをコピーしました