【WordPress】MW WP Formのカスタム設定《メモ》
MW WP Formは2023年に開発終了をしています。
下記の記事は記事公開時の情報です。ご注意ください。
1.動的にタームをチェックボックスの項目として表示したい場合
項目にカスタムタクソノミーを使いたいなって時に使う(実際動くか不明)
<?php
add_filter('mwform_choices_mw-wp-form-70', 'add_terms_list', 10, 2);
function add_terms_list($children, $atts)
{
if ($atts['name'] === 'your_checkbox_name') {
$tax_terms = get_terms([
// タクソノミースラッグを指定
'taxonomy' => 'your_taxonomy_slug',
'hide_empty' => false,
]);
if (!is_wp_error($tax_terms) && !empty($tax_terms)) {
// 投稿に紐づくタームの一覧を配列に格納
foreach ($tax_terms as $tax_term) {
// term_id をキーにするのが最も安全
$children[$tax_term->term_id] = $tax_term->name;
}
}
}
return $children;
}
?>2.カスタム投稿+ACFとの連携
MW WP Formで送信ボタンを押すとカスタム投稿として登録でき、各項目はカスタムフィールド内に格納される。
“mwform_before_send_admin_mail_mw-wp-form-70”の最後の数字部分は、使用するフォームのIDを入力する
<?php
function mw_wp_form_save($Mail_admin, $Data){
$post_title = sanitize_text_field( $Data->get('title-name') );
$new_post = [
'post_type' => 'your_custom_post', //登録するカスタム投稿
'post_title' => $post_title ?: '無題のお問い合わせ', //タイトル
'post_status' => 'publish', // 公開保存
];
$post_id = wp_insert_post($new_post, true);
if (!is_wp_error($post_id)) {
// 単一値
$field1 = sanitize_text_field( $Data->get('field_name_1') );
update_post_meta($post_id, 'acf_field_name_1', $field1);
// 複数選択(チェックボックス)
$field2 = $Data->get('field_name_2');
if (is_array($field2)) {
$field2 = array_map('sanitize_text_field', $field2);
}
update_post_meta($post_id, 'acf_field_name_2', $field2);
}
}
add_filter('mwform_before_send_admin_mail_mw-wp-form-70', 'mw_wp_form_save', 10, 2);
?>