Ordenar get_terms pelo termo meta

3

Eu tenho uma taxonomia personalizada chamada prod-cat

Eu quero ordenar a saída no modelo por número, então eu adicionei um term_meta à taxonomia assim:

add_action( 'prod-cat_add_form_fields', 'add_feature_group_field', 10, 2 );
function add_feature_group_field($taxonomy) {
    ?>
    <div class="form-field term-order-wrap">
        <label for="term-order">Order</label>
        <input type="text" name="wm-cat-prod-order" />
    </div>
    <?php
}

E então:

add_action( 'created_prod-cat', 'save_feature_meta', 10, 2 );
function save_feature_meta( $term_id, $tt_id ){
    if( isset( $_POST['wm-cat-prod-order'] ) && '' !== $_POST['wm-cat-prod-order'] ){
        add_term_meta( $term_id, 'wm-cat-prod-order', $_POST['wm-cat-prod-order'], true );
    }
}

Eu tenho o term_meta funcionando. Está sendo salvo. Então, no modelo, faço isso:

$args = array(
    'taxonomy'      =>  'categoria-de-productos',
    'orderby'       =>  'wm-cat-prod-order',
    'order'         =>  'ASC',
    'hide_empty'    =>  false,
    'hierarchical'  =>  false,
    'parent'        =>  0,
);

$terms = get_terms( $args );

Mas não consigo ordenar pela meta "wm-cat-prod-order". Alguém nisso? Obrigado

    
por Ariel Nonamë 22.11.2016 / 03:55

3 respostas

8

get_terms suporta um meta_query que chama um novo parâmetro WP_Meta_Query como você pode ver here . Para consultar seus termos com a meta desejada, você pode alterar sua chamada de função para algo assim:

$args = array(
  'taxonomy' => 'categoria-de-productos',
  'orderby' => 'meta_value_num',
  'order' => 'ASC',
  'hide_empty' => false,
  'hierarchical' => false,
  'parent' => 0,
  'meta_query' => [[
    'key' => 'wm-cat-prod-order',
    'type' => 'NUMERIC',
  ]],
);

$terms = get_terms( $args );

Esse código não foi testado e pode precisar ser alterado no seu exemplo. Mas os links devem guiá-lo para a solução.

    
por Fabian Marz 22.11.2016 / 10:45
0

para mim, fiz uma taxonomia personalizada e nessa taxonomia personalizada eu tinha uma meta personalizada. Eu queria ter no backend do administrador uma coluna e torná-la classificável. Para fazer um trabalho classificável para uma taxonomia personalizada em um meta personalizado, eu fiz isso.

enlace

public function pre_get_terms( $query ) {
$meta_query_args = array(
    'relation' => 'AND', // Optional, defaults to "AND"
    array(
        'key'     => 'order_index',
        'value'   => 0,
        'compare' => '>='
    )
);
$meta_query = new WP_Meta_Query( $meta_query_args );
$query->meta_query = $meta_query;
$query->orderby = 'position_clause';

Eu encontrei a resposta neste link enlace

Eu só tive que adaptar a resposta fornecida nos comentários por @ eherman24

    
por Lucas Gabriel 10.11.2017 / 15:20
0
$args = array(

    'taxonomy'      => 'MY_TAX',
    'meta_key'      => 'ordem',
    'meta_compare'  => 'NUMERIC',
    'orderby'       => 'meta_value_num',
    'order'         => 'ASC',
    'hide_empty'    => false,
);

$the_query = new WP_Term_Query($args);

foreach ( $the_query->get_terms() as $term )
{
    ...
}
    
por Danilo Bruno 29.08.2018 / 19:12