Проблема с настраиваемым полем при заказе в wordpress

Я создаю настраиваемое поле «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>

Он показывает мне порядок по идентификатору, где ошибка, которую я не понимаю.


person deemi-D-nadeem    schedule 01.07.2014    source источник
comment
Как вы сохраняете новый заказ?   -  person hutchbat    schedule 01.07.2014
comment
Я сохранил его с запросом на обновление ..... он успешно сохранен, но результат не отображается с помощью orderby   -  person deemi-D-nadeem    schedule 01.07.2014
comment
я также пытаюсь заказать orderby => имя его работы, но orderby => term_order не работает   -  person deemi-D-nadeem    schedule 01.07.2014
comment
Вы не можете использовать настраиваемое поле в сообщении в качестве порядка для терминов. Допустимые значения для orderby можно найти здесь в кодексе.   -  person doublesharp    schedule 01.07.2014


Ответы (1)


Хорошо, после многих поисков я нашел решение.

Когда вы создаете настраиваемое поле в любой таблице базы данных 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);
person deemi-D-nadeem    schedule 02.07.2014