Published On: 2022 年 4 月 25 日

使用WP_Query取得WordPress Portfolio特定Category下的文章數量

過去工作中使用WordPress的大多數情境都是使用Theme + Plugin完成特定需求與目標。實際進入【程式】的實作案例並不多。這樣的模態並不是不好,但實務上經常會遭遇一些困擾:

  1. 受限Theme本身,導致一些想要完成的功能需要另行尋找plugin解決
  2. 但plugin可能屬於付費要多花一筆錢,又或者太大組,本來其實只是要殺雞的,卻去買了牛刀,總覺得有點不符合效益

最近一個案例就是如此:這個案子使用avada Theme 的prebuilts demo:  influencer 【連結】,在他設計的首頁playlist 區塊中 列出了每個 portfolio category 下的影片(portfolio)數量,如下圖

實際使用後發現,這些數量都是直接用pagebulder寫死上去的,這也未免太蠢,總不能每次新增影片就要編輯首頁手動更新這些資訊吧?所以便花了一點時間來尋找對應的解決方案:

嘗試1:get_post

這是初心者如我看到最能夠理解的一段程式了

<?php
$posts = get_posts( 'numberposts=-1&category=分类id1,分类id2,分类id3' );
echo count($posts);
?>
不過這個方法實測後只能取得一般post分類下的文章數量,並無法取得portfolio的。
嘗試2:
經過不死心的持續尋找跟重複嘗試,終於找到可work的解決方案
<?php
$the_query = new WP_Query( array(
'post_type' => 'avada_portfolio',
'tax_query' => array(
array(
'taxonomy' => 'portfolio_category',
'field' => '[category_name]',
'terms' =>[category_id],
)
)
) );
$count = $the_query->found_posts;
echo $count;
?>
其中,[category_name]跟[category_id]部分請自行置換為要取出文章數量的category name 跟 id。這個方案經過實測試可成功的。