我试图寻找一种方式来订购的meta值的类别。 从我读,好像我可以使用:
get_categories( 'child_of = 92&hide_empty =假的OrderBy = meta_value&meta_key =日期和顺序= ASC');
然而,这并不在所有的工作中,类别仍然没有我想要的顺序。 我不知道如何可以:
- 更正此使它工作
- 打印出来的sql看到什么是真正里面怎么回事?
预先感谢您非常多。
我试图寻找一种方式来订购的meta值的类别。 从我读,好像我可以使用:
get_categories( 'child_of = 92&hide_empty =假的OrderBy = meta_value&meta_key =日期和顺序= ASC');
然而,这并不在所有的工作中,类别仍然没有我想要的顺序。 我不知道如何可以:
预先感谢您非常多。
首先,我必须提到,我使用的模块自定义类别字段,以及所有的第二我是一个完整的WP新手
总之,学习,这不能被默认完成后,我看着get_categories功能,终于想出了一个解决方案
function category_custom_field_get_terms_orderby( $orderby, $args ){
if($args['orderby'] == 'category_custom_field' && isset($args['category_custom_field']))
return 'cv.field_value';
return $orderby;
}
function category_custom_field_get_terms_fields( $selects, $args ){
if($args['orderby'] == 'category_custom_field' && isset($args['category_custom_field']))
$selects[] = 'cv.*';
return $selects;
}
function category_custom_field_terms_clauses($pieces, $taxonomies, $args){
global $wpdb;
if($args['orderby'] == 'category_custom_field' && isset($args['category_custom_field']))
$pieces['join'] .= " LEFT JOIN $wpdb->prefix" . "ccf_Value cv ON cv.term_id = tt.term_id AND cv.field_name = '".$args['category_custom_field']."'";
return $pieces;
}
add_filter('get_terms_orderby', 'category_custom_field_get_terms_orderby',1,2);
add_filter('get_terms_fields', 'category_custom_field_get_terms_fields',1,2);
add_filter('terms_clauses', 'category_custom_field_terms_clauses',1,3);
(上面的代码可以被放入主题functions.php文件)
然后代码即可获得类别是:
get_categories('child_of=92&hide_empty=false&orderby=category_custom_field&category_custom_field=date&order=DESC');
任何修正是非常感谢!
您也可以给get_categories新的元和排序使用usort
。
$subcategories = get_categories();
foreach ($subcategories as $subcategory) {
$subcategory->your_meta_key = your_meta_value;
}
foreach ($subcategories as $subcategory) {
blah blah blah
}
function my_cmp($a, $b) {
if ($a->ordering == $b->ordering) {
return 0;
}
return ($a->ordering < $b->ordering) ? -1 : 1;
}
usort($subcategories, "my_cmp");