我在wp_terms中创建了一个自定义字段"term_order",并创建了一个重新排序自定义分类法的功能。当我拖放术语时,它成功地将重新排序保存在"term_order"字段中,但当我编写并执行"orderby => term_order"查询时,它不起作用。
下面是我的代码:<?php
$foo_parent_ID = 0;
$foo_args = array(
'orderby' => 'term_order',
'order' => 'ASC',
'hide_empty' => false,
'parent' => $foo_parent_ID
);
$foo_terms = get_terms('foo_cat', $foo_args);
if($foo_terms){
?>
<ul id="foo_order_sortable" class="foo_admin_order">
<?php
foreach($foo_terms as $foo_term) :
?>
<li id="foo_parent_id_<?php echo $foo_term->term_id; ?>" class="lineitem <?php echo ($i % 2 == 0 ? 'alternate ' : ''); ?>ui-state-default">
<?php echo $foo_term->name.' _ id='.$foo_term->term_id.' ==> order-'.$foo_term->term_order; ?>
</li>
<?php
endforeach;
?>
</ul>
显示的是order Id,哪里出错了,我不明白
好的,经过多次搜索,我找到了解决方案。
当你在wordpress数据库的任何表中创建自定义字段时,你只需要添加这个过滤器:
add_filter('get_terms_orderby', 'function name', 10, 2);
这是我的解决方案:
function foo_tax_order($orderby, $args){
$kbe_tax = "foo_cat";
if($args['orderby'] == 'term_order'){
return 't.term_order';
}elseif($kbe_tax == 1 && !isset($_GET['orderby'])){
return 't.term_order';
}else{
return $orderby;
}
}
add_filter('get_terms_orderby', 'foo_tax_order', 10, 2);