原本預計是想探討個大家的loader或者是開始下一個mutiple roles,但是昨天wp_query讓我弄的不是很爽,所以做個專門的講解
原本的使用是在一開始對上taxonomy,但是新版(4.5版之後)的使用是在第一個參數直接帶進一個object來做,但是官方網站之中,他很糟糕的就只有details get_terms,昨天當下看到真的超怒,我們來看看他主要能被使用什麼參數吧,從官網一個頁面需要連轉兩層真是不好的感受。
在裡頭的參數物件,是WP_Term_Query
組成,而裡頭的參數,而自使用之前,我們得先了解woocommerce的目錄是被儲存在taxonomy之中,所以需要去調動,就是使用taxonomy
去對product_cat
,然後再來做比對。
get_the_ID
來做連結。DESC
或是遞增ASC
"23 64 54"
。count
的使用很相似而他不只是單純只有這個,因為extends的關係,他也支援transform_query,而在裡頭可以對taxonomy的陣列做關聯,如果你在第一層回傳的有超過一個的話,而下面的圖面是她所提供的欄位來做條件,也可以看下方的程式碼是如何設定從post中,再將所屬目錄66的文章抓回。
$args = array(
'post_type' => 'post',
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'term_id',
'terms' => '66',
),
),
);
$query = new WP_Query( $args );
昨天母親需要靠著get_term回傳的原始物件,再來說unshift,老實說這並不是很靠譜,也不是很好看有違典雅寫法的規則,所以今日試著將整個query重新製作來處理。
不過時間所限沒有製作出一個好的結果,不過寫了一個util來當處理這個問題,我試過了include,parent與childof但仍然無法將他的媽媽與女兒串再一起,我只能使用非常粗暴的拉取法了XD這個方式有個問題是,抓取的方式不確切,但是現在不是想要對funtion做深度確認是否為子目錄,因為我猜測應該還是有辦法在一個option之中抓回所有的子目錄。
$term = get_queried_object();
$parent_id = empty( $term->term_id ) ? 0 : $term->term_id;
$option = array(
'taxonomy' => 'product_cat',
'hide_empty' => false,
'orderby' => 'term_id'
);
$cats = get_categories($option);
$relationship_list = array($parent_id);
foreach($cats as $index => $cat){
if(true === in_array($cat->parent,$relationship_list,true) && false === in_array($cat->term_id,$relationship_list,true)) {
array_push($relationship_list,$cat->term_id);
}
}
foreach($cats as $index => $cat){
if(false === in_array($cat->term_id,$relationship_list,true)){
unset($cats[$index]);
}
}
var_dump($cats);
WP_Term_Query
get_terms
get_categories() only returns categories in use
WP_Tax_Query
List all subcategories from category
WP_QUERY