こんにちは
まず、advanced custom fieldsでカスタムタクソノミーのフィールドを作った場合ですが
これはカスタムフィールドのcostom_selectとして保存されるのであって
タクソノミー tax_postと記事が結び付けられるわけではありません
ですのでターム一覧で記事数に1が付いているという時に
投稿した記事の右側のチェックボックスで選択している状態であればそれは正しい動作です
逆にチェックボックスで選択している記事がひとつもない状態でも記事数が1となって
いる場合はおかしいことになりますが…
次にcostom_selectが保存しても未選択になるという点ですが
例えばadvanced custom fieldsで作ったフィールドグループ内でカスタムフィールド名に
同じcostom_selectという名前のフィールドを作っていることはないでしょうか?
またはもしかしたらそのフィールド名が何か別のもので使われている可能性もあります。
例えばrikuchanman_costom_select とつけるようにする等
ほとんど被りそうにない名前をつけてみてはいかがでしょうか?
jdbb様
遅くなりまして、申し訳御座いません。
教えて頂いた通り、カスタムフィールド名を変更した所、管理画面のカスタム投稿の投稿画面から登録する事が出来ました。
本当に有難うございました。
度々すみません。
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;
———————————————————————————–