1

私は高低を探してこれに答えてきましたが、実際にそれが可能かどうかはわかりません!

ほとんどすべてから投稿を取得する WP_Query がありますが、特定のカテゴリおよび/またはそのすべてのサブカテゴリを除外したいと考えています。

人々の周りを検索しても、これに対する解決策はまだ見つかりません。

これまでの私のクエリは次のとおりです。

$args = array(
    'post_type' => 'sell_media_item',
    'cat' => -98,
    'orderby' => 'desc',
    'paged' => $paged,
    'posts_per_page' => 20
); ?>

<?php $loop = new WP_Query( $args ); ?>

cat 98除外するだけですべてのサブカテゴリも取得できると思いましたが、明らかにそうではありません。

私は使用してみました:

category__not_indepth=0、そしてこれの適応でparent=0さえ、運が悪い.

何か案は?

[編集] コレクションと呼ばれるカスタム分類法を使用しているため'collection' => 'vip'、クエリに入れると、このコレクションのみが表示されます。これを元に戻す方法があるかどうか考えているので、代わりにコレクションを除外しますか?

常に変化するため、ここに表示されるすべてのカテゴリをリストすることはできません。

[編集 2] 以下のコメントでの議論の後、更新されたコードを次に示します。

$ex = array(
    'taxonomy' => 'collection',
    'child_of' => 98,
    'hide_empty' => 0
);
$categories = get_categories($ex);

$categoriesToExclude = array();
foreach ($categories as $category) {
    $categoriesToExclude[] = $category->cat_ID;
}

echo('<pre>'); var_dump($categories);


$args = array(
    'post_type' => 'sell_media_item',
    'category__not_in' => $categoriesToExclude,
    'orderby' => 'desc',
    'paged' => $paged,
    'posts_per_page' => 20
); ?>

<?php echo('<br /><pre>'); var_dump($args); ?>

<?php $loop = new WP_Query( $args ); ?>
4

3 に答える 3

4

get_categories()ですべてのサブカテゴリのリストを取得'cat'し、結果に基づいて除外配列を作成します。

$args = array('parent' => 98);
$categories = get_categories($args);

$categoriesToExclude = array();
foreach ($categories as $category) {
    $categoriesToExclude[] = $category->cat_ID;
}


$args = array(
    'post_type' => 'sell_media_item',
    'category__not_in' => $categoriesToExclude,
    'orderby' => 'desc',
    'paged' => $paged,
    'posts_per_page' => 20
); ?>

<?php $loop = new WP_Query( $args ); ?>

これは一例ですので、必要に応じて少し変更する必要があるかもしれません。

于 2013-08-01T12:26:40.283 に答える
0

そう!

私は不可能なことをしようとしていたようです。このスクリプトを私の人生で機能させることはできませんでした。ということで、違う角度にしてみました。カスタム分類法とその用語を除外する代わりに、他のすべての用語を親用語に移動し、代わりにそれを呼び出すことにしました。

誰かが興味を持っているなら、ここにコードがあります...

<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;               

$args = array(
    'post_type' => 'sell_media_item',
    'taxonomy' => 'collection',
    'term' => 'clubs',
    'orderby' => 'desc',
    'paged' => $paged,
    'posts_per_page' => 20
);


$loop = new WP_Query( $args );

if ( $loop->have_posts() ) : while ($loop->have_posts()) : $loop->the_post(); ?>
于 2013-08-01T14:39:54.650 に答える