1

私はこのコードを使用しようとしました:

$terms = get_terms('translates_category', 'include=220,238');

ただし、2 つの個別のオブジェクトを含む配列が返されます。

Array
(
[0] => stdClass Object
    (
        [term_id] => 220
        [name] => Degrees of comparison
        [slug] => degrees-of-comparison
        [term_group] => 0
        [term_taxonomy_id] => 272
        [taxonomy] => translates_category
        [description] => 
        [parent] => 217
        [count] => 2
    )

[1] => stdClass Object
    (
        [term_id] => 238
        [name] => Lesson
        [slug] => lesson
        [term_group] => 0
        [term_taxonomy_id] => 290
        [taxonomy] => translates_category
        [description] => 
        [parent] => 0
        [count] => 1
    )
)

私が推測できるように、これらの 2 つのカテゴリのすべての投稿 (カウント) の数を個別に返します。しかし、両方のカテゴリに同時に配置された投稿のみの合計数が必要です。

最初のカテゴリに 100 件の投稿、2 番目のカテゴリに 10 件の投稿がある場合がありますが、一度に両方のカテゴリに関連付けられるのはそのうちの 1 つだけです。そして、私はそのような投稿を数える必要があります。

どうやってやるの?

4

3 に答える 3

3

これで問題が解決するはずです。

function my_post_count($tax, $cat1, $cat2) {
    $args = array(
        'tax_query' => array(
            'relation' => 'AND',
            array(
                'taxonomy' => $tax,
                'field' => 'term_taxonomy_id',
                'terms' => array( $cat1 ),
                'operator' => 'IN'
            ),
            array(
                'taxonomy' => $tax,
                'field' => 'term_taxonomy_id',
                'terms' => array( $cat2 ),
                'operator' => 'IN'
            ),
        )
    );
    $query = new WP_Query( $args );
    return $query->post_count;
}
echo my_post_count('translates_category', 220, 238);
于 2012-09-26T12:45:45.750 に答える
0

この関数をfunctions.php

function get_post_count($categories) {
    global $wpdb;
    $post_count = 0;
    $post_count_array=array();
    foreach($categories as $cat) :
        $catID=get_cat_id($cat);
        $querystr = "SELECT count FROM $wpdb->term_taxonomy WHERE term_id = $catID";
        $result = $wpdb->get_var($querystr);
        $post_count += $result;
        $post_count_array[$cat]=$result;
    endforeach;
    $post_count_array['total']=$post_count;
    return $post_count_array;
}

次に、この関数を次のように呼び出します

$posts_Cat_Num=get_post_count(array('plugin', 'php')); // these are category names
print_r($posts_Cat_Num); // Array ( [plugin] => 2 [php] => 3 [total] => 5 ) 
echo $posts_Cat_Num['plugin']; // 2
echo $posts_Cat_Num['php']; // 3
echo $posts_Cat_Num['total']; // 5

更新(コメントから質問を理解しました)

$q=new WP_Query(array('category__and' => array(220, 238))); // get posts for both category ids
echo $q->post_count;
于 2012-09-26T12:21:39.330 に答える
0

以下のコードを使用します。このため、投稿用に 2 つの部分、つまりそれぞれに 1 つを作成する必要があります。

<?php
global $post;
$args = array( 'numberposts' => 5, 'category' => 3 );


$myposts = get_posts( $args );
foreach( $myposts as $post ) :
setup_postdata($post); ?>

<?php the_title(); ?>
<?php the_content(); ?>

<?php endforeach; ?>

表示する投稿数とカテゴリを変更してください...

于 2012-09-26T12:01:31.887 に答える