2014-07-01 32 views
0

我在wp_terms中創建自定義字段「term_order」,並且我提供了重新排序自定義分類的功能。當我拖放條款時,它在「term_order」字段中成功保存了重新排序,但是當我編寫並執行「orderby => term_order」查詢時,它不起作用。在wordpress中orderby的自定義字段問題

這裏是我的代碼:

<?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> 

這表明我的OrderBy ID,其中是錯誤,我不明白。

+0

你如何保存新秩序? – hutchbat

+0

我保存更新查詢.....它保存成功,但結果不顯示與「orderby」 – deemi

+0

我也嘗試「orderby =>名稱」其工作,但「orderby => term_order」不起作用 – deemi

回答

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