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

作成日:

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

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

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

解決策

改めてラベルを設定する

PHP functions.php
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 );

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

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

解決策

カスタムフィールドで振り分ける

PHP
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' );
favicon
https://appcoder.link/wordpress-limit-pages-displayed-in-the-parent-page-drop-down/

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

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

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

解決策

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

PHP
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' );
}
favicon
Set Default Order of CPTs in WordPress Admin | NJE Design http://www.njedesign.com/default-order-custom-post-types-admin/

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

師走だ。
師走だ。
師走だ。

物草 灸太郎
物草 灸太郎

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

Loading...

コメントをどうぞ

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