お問い合わせフォーム作成プラグイン「MW WP Form」で問い合わせフォームを作成してサイト運営する際、本番環境とテスト環境でIDが異なり困ることがあります。
今回は、運用ルール上フォームのスラッグを決めて指定したスラッグ(MW WP Form のもの)から投稿IDを取得する関数を書いて行きます。
MW WP Form の投稿IDをスラッグから取得する関数
$wpdb で MW WP Form の投稿タイプ(mw-wp-form)を指定してフォームの投稿IDを取得する関数を用意してみました。
/**
* MW WP Form の投稿IDをスラッグから取得する関数
*/
function ag_get_mwwpform_id($slug='')
{
global $wpdb;
$table = $wpdb->prefix.'posts';
$query = "SELECT * FROM $table WHERE post_type='mw-wp-form' AND post_status='publish' AND post_name= %s";
$result = $wpdb->get_row( $wpdb->prepare( $query, $slug) );
return (int)$result->ID;
}
呼び出し箇所で以下のようにスラッグをして指定してショートコードを展開してフォームを表示させます。
<?php echo do_shortcode('[mwform_formkey key="'.ag_get_mwwpform_id('contact_test').'"]'); ?>
動作環境情報
エックスサーバー(x10) PHP 7.3.14 MySQL 5.7 WordPress 5.4 MW WP Form 4.2.0
コメント