Wordpress 按元键问题获取_类别订单?
我正试图寻找一种通过元值对类别进行排序的方法。从我所读到的,我似乎可以使用: 获取类别('child_of=92&hide_empty=false&orderby=meta_value&meta_key=date&order=ASC') 但是,这根本不起作用,类别仍然不是我想要的顺序。我想知道我怎样才能:Wordpress 按元键问题获取_类别订单?,wordpress,Wordpress,我正试图寻找一种通过元值对类别进行排序的方法。从我所读到的,我似乎可以使用: 获取类别('child_of=92&hide_empty=false&orderby=meta_value&meta_key=date&order=ASC') 但是,这根本不起作用,类别仍然不是我想要的顺序。我想知道我怎样才能: 纠正此错误以使其正常工作 打印出sql,看看里面到底发生了什么 非常感谢您。首先,我必须提到,我正在使用模块自定义类别字段,其次,我是一个完全的WP新手 无论如何,在了解到这在默认情况下是无法
非常感谢您。首先,我必须提到,我正在使用模块自定义类别字段,其次,我是一个完全的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);
(上面的代码可以放在theme functions.php文件中)
那么获取类别的代码是:
get_categories('child_of=92&hide_empty=false&orderby=category_custom_field&category_custom_field=date&order=DESC');
任何更正都将不胜感激 您还可以使用
usort
为get\u类别提供新的元和排序
$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");
$subcategories=get_categories();
foreach($子类别作为$子类别){
$subcategory->your\u meta\u key=your\u meta\u值;
}
foreach($子类别作为$子类别){
废话废话
}
函数my_cmp($a,$b){
如果($a->订购==$b->订购){
返回0;
}
返回($a->订购<$b->订购)?-1:1;
}
usort($subcategories,“my_cmp”);
oops,我没有注意到该站点正在使用插件:Category自定义字段(向任何Category/taxonomy添加无限自定义字段)。我需要检查更多细节,然后使用过滤器将插件的扩展功能与默认值合并。虽然我自己从未使用过类别自定义字段,但所有内容在语法上都是正确的和最优的。