使用WP_Query取得WordPress Portfolio特定Category下的文章數量
過去工作中使用WordPress的大多數情境都是使用Theme + Plugin完成特定需求與目標。實際進入【程式】的實作案例並不多。這樣的模態並不是不好,但實務上經常會遭遇一些困擾:
- 受限Theme本身,導致一些想要完成的功能需要另行尋找plugin解決
- 但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。這個方案經過實測試可成功的。