2012-09-26 50 views
1
同一時間的帖子數量

我曾嘗試使用此代碼:如何獲取位於2個特定類別在WordPress的

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

但它返回與兩個不同的對象的數組:

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 
    ) 
) 

正如我可以假設,它是分別返回在這兩個類別中的所有帖子(計數)的數量。但是,我只需要同時處於這兩個類別的帖子總數。

第一類可能有100個帖子,第二個可能有10個帖子,但其中只有一個可能同時與兩個類別關聯。我需要統計這些帖子。

我該怎麼做?

+0

你想獲得總數爲CAT1有3個和CAT1有1'3 + 1 = 4'? –

+0

我需要獲取當時與兩個網站相關的帖子數量。第一類可能有100個帖子,第二個可能有10個帖子,但其中只有一個可能與這兩個類別相關聯 –

回答

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); 
+0

似乎它是真的有效!我不完全舒服,但我會測試它在這兩個類別的更多職位。謝謝!!! –

+0

確保它的工作原理或要求更多的幫助!:) – Octav

0

使用此下面的代碼,爲此,你必須作出後,即一二部分的每個

<?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; ?> 

更改後的數量,並且要顯示種類...

+0

但我不需要放置帖子或類別。我需要得到位於兩個類別的帖子數量 –

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; 
} 

粘貼此函數然後調用像

此功能10
$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; 
+0

這實際上並不是我需要的 –

+0

我問你,但現在我得到了你需要的東西。 –

+0

@NikitaGavrilov ,.檢查更新的答案。 –

相關問題