menu

information WordPress

HOMEWordPress 投稿画面で親カテゴリーをチェックできない状態に制御

2021年09月17日

投稿画面で親カテゴリーをチェックできない状態に制御

WordPressの投稿画面で、親カテゴリーをチェックできないようにしたい場合。

ブログの投稿をするカテゴリー構造を「親カテゴリー」に属する「子カテゴリー」としたい場合、「子カテゴリー」のみにチェックを入れて運用して欲しいケースがあります。

その場合は、function.php に下記の記述を追加。

 

//親カテゴリーをチェックできないようにする
require_once(ABSPATH . '/wp-admin/includes/template.php');
class Parent_Category_Checklist extends Walker_Category_Checklist {

	function start_el( &$output, $category, $depth, $args, $id = 0 ) {
		extract($args);
		if ( empty($taxonomy) )
			$taxonomy = 'category';

		if ( $taxonomy == 'category' )
			$name = 'post_category';
		else
			$name = 'tax_input['.$taxonomy.']';

		$class = in_array( $category->term_id, $popular_cats ) ? ' class="popular-category"' : '';
	$cat_child = get_category_children($category->term_id);
	if($cat_child !== "") {
			$output .= "\n<li id='{$taxonomy}-{$category->term_id}'$class>" . '<label class="selectit"><input value="' . $category->term_id . '" type="checkbox" name="'.$name.'[]" id="in-'.$taxonomy.'-' . $category->term_id . '"' . checked( in_array( $category->term_id, $selected_cats ), true, false ) . disabled( empty( $args['disabled'] ), true, false ) . ' /> ' . esc_html( apply_filters('the_category', $category->name )) . '</label>';
		}else{
			$output .= "\n<li id='{$taxonomy}-{$category->term_id}'$class>" . '<label class="selectit"><input value="' . $category->term_id . '" type="checkbox" name="'.$name.'[]" id="in-'.$taxonomy.'-' . $category->term_id . '"' . checked( in_array( $category->term_id, $selected_cats ), true, false ) . disabled( empty( $args['disabled'] ), false, false ) . ' /> ' . esc_html( apply_filters('the_category', $category->name )) . '</label>';
		}
	}
	
}

function wp_category_no_top_terms_checklist( $args, $post_id = null ) {
	$args['checked_ontop'] = false;
	$args['walker'] = new Parent_Category_Checklist();
	return $args;
}
add_action( 'wp_terms_checklist_args', 'wp_category_no_top_terms_checklist' );

会社案内はこちら

〒410-0822
静岡県沼津市下香貫宮脇200-3

055-935-1339

営業時間 9:00~18:00

お問い合わせ