WordPressで投稿に「階層」設定したら結構面倒なことになった。

WordPressで投稿に「階層」設定したら結構面倒なことになった。



WordPressで通常の投稿に固定ページ同様に「階層」を設定しましたら、色々と面倒なことになりました。

1. ラベル表示が「固定ページ」になった。

編集画面の「投稿の編集」などの表記ラベルが「固定ページの編集」と変わってしまいました。

解決策:改めてラベルを設定する

function post_add_options( $args, $post_type ) {
	if ( 'post' === $post_type ) {
		$post_labels         = array(
			'name'               => '投稿',
			'singular_name'      => '投稿',
			'menu_name'          => '投稿',
			'name_admin_bar'     => '投稿',
			'add_new'            => '新規追加',
			'add_new_item'       => '新規投稿を追加',
			'new_item'           => '新規投稿',
			'edit_item'          => '投稿の編集',
			'view_item'          => '投稿の表示',
			'all_items'          => 'すべての投稿',
			'search_items'       => '投稿の検索',
			'not_found'          => '投稿が見つかりませんでした。',
			'not_found_in_trash' => 'ゴミ箱に投稿が見つかりませんでした。',
			'attributes'         => '投稿の属性',
		);
		$args['labels']      = $post_labels;
		$args['hierarchical'] = true;
		add_post_type_support( 'post', 'page-attributes' );
	}
	return $args;
}
add_filter( 'register_post_type_args', 'post_add_options', 10, 2 );

2. 親ページを選択する際に投稿数が多すぎて選択出来ない。

固定ページは、もし最大に作成しても100ページ未満でしょうが、投稿の場合、軽く1000を超えてしまいます。そうすると、親ページを選択するドロップダウンで全件の中から選択することが出来なくなります。

解決策:カスタムフィールドで振り分ける

function modify_parent_dropdown_args( $args ) {
	global $post_type_object;
	if ( 'post' === $post_type_object->name ) {
		$args['meta_key']   = 'has_parent';
		$args['meta_value'] = 1;
	}
	return $args;
}
add_filter( 'page_attributes_dropdown_pages_args', 'modify_parent_dropdown_args', 10, 2 );
add_filter( 'quick_edit_dropdown_pages_args', 'modify_parent_dropdown_args' );
Wordpress - Limit pages displayed in the parent page drop down - AppCoder
参考
Wordpress - Limit pages displayed in the parent page drop down - AppCoder

あなたのワードプレスサイトにたくさんのページがある場合、それは巨大なドロップダウンから親ページを選択することは非常に大きな問題になります。ドロップダウンで選択したページだけを選択可能な親ページとして表示する方法があります。ブログの親投稿を選択する必要がないので、これは投稿に自分のコンテンツの大部分を持っているブロガーにとって決して問題ではありません。

Wordpress - Limit pages displayed in the parent page drop down - AppCoder AppCoder

3. 投稿一覧画面の並び順がタイトル順に

投稿に階層を設定すると、投稿一覧画面の並び順が固定ページ同様にタイトル順に変わってしまいます。カラムの「日付」をクリックすれば日付順になるのですが、これも元に戻したい。

解決策:クエリを再設定して並び順を日付順に戻す。

function admin_post_order( $query ) {
	$post_type = $query->get( 'post_type' );
	if ( 'post' === $post_type ) {
		$query->set( 'orderby', 'date' );
		$query->set( 'order', 'DESC' );
	}
}
if ( is_admin() ) {
	add_action( 'pre_get_posts', 'admin_post_order' );
}
Set Default Order of CPTs in WordPress Admin | NJE Design
参考
Set Default Order of CPTs in WordPress Admin | NJE Design

WordPress管理でカスタム投稿タイプのデフォルトの順序を変更します。順序をタイトル順にし、順序を設定するためにタイトルをクリックする必要はありません。

Set Default Order of CPTs in WordPress Admin | NJE Design NJE Design

師走だ。

今日はここまで
WordPressで投稿に「階層」設定したら結構面倒なことになった。

WordPressで投稿に「階層」設定したら結構面倒なことになった。


開発

WordPressで通常の投稿に固定ページ同様に「階層」を設定しましたら、色々と面倒なことになりました。 1. ラベル表示が「固定ページ」になった。 編集画面の「投稿の編集」などの表記ラベルが「固定ページの編集」と変わっ…


関連する記事



こちらはいかが?


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*(必須)

*(必須・表示されません)