attachmentにカスタムタクソノミーを使用している場合にページングが効かない問題(404)

/

タイトルそのままです。あまり調べても出てこなくて詰んでいたのでメモとして。一旦の走り書き。

メディアライブラリに対するカスタムタクソノミー(attachment)

// カスタムタクソノミー
function add_tax_mediacat() {
	register_taxonomy(
		'media_cat',
		'attachment',
		array(
			'label' => 'MediaCategories',
			'show_ui' => true,
			'show_in_menu' => true,
			'hierarchical' => true,
			'show_admin_column' => true,
			'update_count_callback' => '_update_generic_term_count',
			'query_var' => true,
			'rewrite' => array(
				'slug' => 'library',
				'hierarchical' => true
			),
			'has_archive' => true,
			'sort' => true,
			'singular_label' => 'MediaCategories'
		)
	);
}

表示箇所

$tax_properties = $wp_query->queried_object;
$tax_slug = $tax_properties->slug;
$tax_name = $tax_properties->name;
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array( 
  'paged' => $paged,
  'post_type' => 'attachment',
  'post_status' => 'attachment',
  'taxonomy' => 'media_cat',
  'term' => $tax_slug,
  'post_mime_type' => 'image/jpeg'
);

問題

ページ送り時
library/camera/film/page/2/
404エラーになる

taxonomyもarchiveも通らずに、404になる

試したこと(違ったことたち)

よく読む。設定漏れがないかどうか

微妙に違う

add_rewrite_ruleの設定 → ☓

表示数を変更してみる → ☓

ちゃうっぽい

空更新は大事。

プラグイン使ってない

解決した方法


function chg_qerytaxpage($query) {
    if ( is_admin() || ! $query->is_main_query() ) {
        return;
    }
    if ( $query->is_tax() ) {
        $query->set( 'post_type', 'attachment' );
        $query->set( 'post_mime_type', 'image/jpeg' );
        $query->set( 'post_status', 'inherit' );
        $query->set( 'taxonomy', 'media_cat' );
    }
}
add_action( 'pre_get_posts', 'chg_qerytaxpage' );

archive.phpにも書いてあるのだけど、こちらにも記述したら上手くいった。謎。

合ってるのかあってないのかもわからないけどひとまず…。

解決したときは嬉しいのだけど、理由がわからないとモヤモヤする