自定义字段问题的订单在wordpress


Custom field issue on orderby in wordpress

我在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);