デフォルトでは、WordPressは階層内の各カテゴリの投稿を一覧表示します。
例:
親
/- 子
/ - 孫
「親」カテゴリを表示すると、子、孫、親からの投稿のリストが表示されます - たとえ投稿が「孫」でチェックされている場合でも.
私の質問は次のとおりです。最後の子を表示しているときに投稿を表示するにはどうすればよいですか。このための組み込みのWordPress機能はありますか?
例えば。:
[grandchild categories] = array of grandchildren
if(in_array( [grandchild categories] )) : show posts
else:
do nothing
分類法パラメーター の一部として、 include_children
用のWP_Query
パラメーターはもちろんあります。私はあなたのためにこのように働くべきだと思います:
$args = array(
'tax_query' => array(
array(
'include_children' => false
),
),
);
$query = new WP_Query( $args );
カテゴリアーカイブの場合は、 parse_tax_query
を使用します。
add_filter(
'parse_tax_query',
'wpse163572_do_not_include_children_in_category_archive_parse_tax_query'
);
function wpse163572_do_not_include_children_in_category_archive_parse_tax_query( $query ) {
if (
! is_admin()
&& $query->is_main_query()
&& $query->is_category()
) {
// as seen here: http://wordpress.stackexchange.com/a/140952/22534
$query->tax_query->queries[0]['include_children'] = 0;
}
}
注:@PieterGoosenのおかげで、これは現在テスト済みで動作確認済みです。
Pieterが上記のコメントで概説したように、ページを使って静的なWebサイトを開発したことがある人は問題を理解するでしょう。
基本的にページを作成してそのページ上にコンテンツをリストすることができれば望ましい効果がありますが、コンテンツを管理しそれを順序付けるためにwpのカテゴリーシステムを使用することは有用です。
これが私がやったことであり、働いています:
私は " get_term_children " - ワードプレス関数の周りに小さな関数を書いた。
function category_has_children( $term_id ){
$children = get_term_children( $term_id, "category" );
if(is_array($children)){
return $children;
} else {
return false;
}
}
それからループの前に私のカテゴリページで "category_has_children"があるかどうかをチェックします。
<?php if( category_has_children( $cat ) == false) : ?>
show posts as this is the last child category.
<? endif; ?>