我制作了一个自定义字段" term_order"在wp_terms中,我创建了一个重新排序自定义分类的功能。当我拖放条款时,它会将重新订单保存在" 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>
它显示了我的顺序,我不理解的错误在哪里。
答案 0 :(得分:0)
在经过多次搜索后我找到了解决方案。
在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);