【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);
?>
  • X