タイトルそのままです。あまり調べても出てこなくて詰んでいたのでメモとして。一旦の走り書き。
メディアライブラリに対するカスタムタクソノミー(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にも書いてあるのだけど、こちらにも記述したら上手くいった。謎。
合ってるのかあってないのかもわからないけどひとまず…。
解決したときは嬉しいのだけど、理由がわからないとモヤモヤする