【WordPress】カスタムフィールドの入力値をタームに保存する設定等

作成日:

やりたいことは以下の通りです。

  • カスタム投稿にカスタム分類とセレクトフォームのカスタムフィールドを設定する。
  • カスタム分類のタームはカスタムフィールドの入力値とする。
  • タームは編集画面、クイック編集画面では変更出来ないようにする(カスタムフィールドの値と齟齬が起きるため)。
  • - - - - - - ✂ - - - - - - - -

カスタム投稿にカスタム分類とカスタムフィールドを設定する。

これは簡単に設定出来るので省略。

カスタム分類のタームはカスタムフィールドの入力値とする。

カスタム投稿(my_post)の保存時にカスタムフィールド(my_field)の値を取得して、カスタム分類(my_taxonomy)のタームとして登録します。

[php]function my_pre_save_option() {
global $wpdb, $post;
if ( 'my_post' === $post->post_type ) {
$my_field = get_post_meta( 'my_field', $post->ID, true );
if ( $my_field ) {
wp_set_object_terms( $post->ID, $my_field, 'my_taxonomy', true );
}
}
}
add_action( 'save_post', 'my_pre_save_option', 999 );[/php]

タームは編集画面、クイック編集画面では変更出来ないようにする(カスタムフィールドの値と齟齬が起きるため)。

投稿編集画面のカスタム分類の選択エリアを非表示設定にします。

[php]function my_remove_meta_boxes() {
remove_meta_box( 'my_taxonomydiv', 'my_post', 'normal' );
}
add_action( 'admin_menu', 'my_remove_meta_boxes' );[/php]

カスタム分類の登録時にクイック編集を非表示設定にします。

[php]register_taxonomy(
'mx_taxonomy',
'mx_post',
array(
'show_in_quick_edit' => false,
)
);[/php]

これで大丈夫なはず。

物草 灸太郎

WordPressでホームページを制作しつつ、休日は畑を耕したりDIYを楽しんでいます。

コメントをどうぞ

  • メールアドレスが公開されることはありません。
  • コメント欄にURLは入力できません。
  • このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシー利用規約が適用されます。