順序をサポートしたカスタム投稿タイプのデフォルト表示順を変更してみる

カスタム投稿タイプを利用する際に、register post type の has_archiveパラメータを true とすると、投稿タイプのアーカイブ(一覧)表示を行うことができるようになります。

ただし、表示順については設定や入力にかかわらず公開日順になってしまうため、page-attributes をサポートして順序の入力を可能にしていても、表示に反映されることがありません。

今回は、この投稿タイプアーカイブの表示の際に、page-attributes がサポートされていれば、自動的に順序(menu_order)順に従って表示されるようにしてみましょう。

CODE 1では、記事を取得する直前の pre_get_posts にフックしてクエリーの条件を書き換える処理を行っています。ただし、条件指定がされていた場合は、上書きせずに指定値をそのまま利用するため、固定ページ同様に管理画面などの挙動も含めてデフォルトの表示順が順序の入力値通りとなり、ソートを行った場合は、それに従うようになります。

CODE 1

function custom_post_archive_orderby_menu_order( $wp_query ) {
	if ( $wp_query->is_post_type_archive() && post_type_supports( $wp_query->query_vars['post_type'], 'page-attributes' ) ) {
		if ( ! isset( $wp_query->query_vars['orderby'] ) ) {
			$wp_query->query_vars['orderby'] = 'menu_order';
		}
			if ( ! isset( $wp_query->query_vars['order'] ) ) {
			$wp_query->query_vars['order'] = 'ASC';
		}
	}
}
add_action( 'pre_get_posts', 'custom_post_archive_orderby_menu_order' );

管理画面も順序で指定した値通りになります

もっとも nest_posts_link、previous_posts_link のリンクテキストを変える必要はあるかもしれませんが。。

この記事は、jim912によって書かれたものです。
引用を行う場合は、著作権法に定める範囲にて、引用元であるSimple Colorsの出展元表示とhttp://www.warna.info/archives/1827/へのリンクを必ず行って下さい。

カテゴリー: WordPressの小技 タグ: , , パーマリンク

順序をサポートしたカスタム投稿タイプのデフォルト表示順を変更してみる への2件のフィードバック

  1. ピンバック: WordBench長野の第1回勉強会に参加してきました。 #wbNagano ::: Toro_Unit

  2. ピンバック: カスタム投稿タイプでpage-attributesが有効になってる時に管理画面をmenu_order順にする。 | firegoby

コメントを残す

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