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

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



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

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

– – – – – – – ✂ – – – – – – – –

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

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

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

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

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 );

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

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

function my_remove_meta_boxes() {
	remove_meta_box( 'my_taxonomydiv', 'my_post', 'normal' );
}
add_action( 'admin_menu', 'my_remove_meta_boxes' );

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

register_taxonomy(
	'mx_taxonomy',
	'mx_post',
	array(
		'show_in_quick_edit' => false,
	)
);

これで大丈夫なはず。

今日はここまで

関連する記事



こちらはいかが?


コメントを残す