フォーラムへの返信

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • フォーラム: 使い方全般
    返信が含まれるトピック: カスタムフィールドのタクソノミーに関して
    トピック投稿者 rikuchanman

    (@rikuchanman)

    度々すみません。

    jdbb様に教えて頂き、管理画面の投稿画面からカスタムフィールド(フィールドタイプがタクソノミー)に値を登録することは出来ました。

    ただ自分で作成したフォームで入力・選択した値をカスタムフィールドに登録させようとしていますがフィールドタイプがタクソノミーでセレクトボックスの場合が登録出来ません。

    カスタムフィールドを登録する際の関数として、「update_post_meta」と「update_field」を使用してみましたがどちらも駄目でした。

    下記にコードを記載します。

    [update_post_metaの場合]
    ———————————————————————————–

    add_action('template_redirect', 'insert_data');
    function insert_data() {
     if(is_page('insert_page')) :
      $insert_post_data = $_POST // フォームで入力・選択した値を代入
      $post_data['post_title']   = 'タイトル';
      $post_data['post_status'] = 'publish';
      $post_data['post_type']   = 'カスタム投稿タイプ';
    
     $post_id = wp_insert_post($post_data);
    
      if(!is_wp_error($post_id)) :
       $acf_id         = 'カスタムフィールドid';
       $get_acf_fields = get_acf_all_fields_in_group($acf_id); // カスタムフィールドを全て取得
    
      foreach($get_acf_fields as $key => $value) :
        $acf_name = $value['name']; // カスタムフィールド名を代入
        if(isset($insert_post_data[$acf_name])) : // カスタムフィールドに入力する値があるか判定(セレクトボックスの場合、タームIDが入っている。)
       update_post_meta($post_id, $acf_name, $insert_post_data[$acf_name]); // カスタムフィールドを登録
      endif;
       endforeach;
      endif;

    ———————————————————————————–

    [update_fieldの場合]
    ———————————————————————————–

    add_action('template_redirect', 'insert_data');
    function insert_data() {
     if(is_page('insert_page')) :
      $insert_post_data = $_POST // フォームで入力・選択した値を代入
      $post_data['post_title']   = 'タイトル';
      $post_data['post_status'] = 'publish';
      $post_data['post_type']   = 'カスタム投稿タイプ';
    
     $post_id = wp_insert_post($post_data);
    
      if(!is_wp_error($post_id)) :
       $acf_id         = 'カスタムフィールドid';
       $get_acf_fields = get_acf_all_fields_in_group($acf_id); // カスタムフィールドを全て取得
    
      foreach($get_acf_fields as $key => $value) :
        $acf_name = $value['name']; // カスタムフィールド名を代入
        if(isset($insert_post_data[$acf_name])) : // カスタムフィールドに入力する値があるか判定(セレクトボックスの場合、タームIDが入っている。)
       $field_key = $get_acf_all_fields[$acf_name]['key'];
          $value     = array($acf_name => $insert_post_data[$acf_name]);
          update_field($field_key, $value, $post_id); // カスタムフィールドを登録
      endif;
       endforeach;
      endif;

    ———————————————————————————–

    フォーラム: 使い方全般
    返信が含まれるトピック: カスタムフィールドのタクソノミーに関して
    トピック投稿者 rikuchanman

    (@rikuchanman)

    jdbb様

    遅くなりまして、申し訳御座いません。

    教えて頂いた通り、カスタムフィールド名を変更した所、管理画面のカスタム投稿の投稿画面から登録する事が出来ました。

    本当に有難うございました。

2件の返信を表示中 - 1 - 2件目 (全2件中)