J'ai une taxonomie personnalisée appelée prod-cat
Je veux commander la sortie dans le modèle par numéro, alors j'ai ajouté un term_meta à la taxonomie comme ceci:
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
}
Et alors:
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 );
}
}
J'ai le term_meta qui fonctionne, il est sauvé. Ensuite, dans le modèle, je fais ceci:
$args = array(
'taxonomy' => 'categoria-de-productos',
'orderby' => 'wm-cat-prod-order',
'order' => 'ASC',
'hide_empty' => false,
'hierarchical' => false,
'parent' => 0,
);
$terms = get_terms( $args );
Mais je n'arrive pas à le commander par le méta "wm-cat-prod-order". Quelqu'un à ce sujet? Merci
get_terms
supporte un meta_query
qui appelle un nouveau paramètre WP_Meta_Query comme vous pouvez le voir ici . Pour interroger vos termes avec la méta désirée, vous pouvez changer l'appel de fonction en quelque chose comme ceci:
$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 );
Ce code n'a pas été testé et doit éventuellement être modifié dans votre exemple. Mais les liens devraient vous guider vers la solution.
$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 )
{
...
}
pour moi, j'ai fait une taxonomie personnalisée et dans cette taxonomie, j'avais une méta personnalisée. Je voulais avoir dans le backend d'administration une colonne et la rendre triable. faire un travail triable pour une taxonomie personnalisée dans une méta personnalisée, je l'ai fait.
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';
} J'ai trouvé la réponse dans ce lien https://core.trac.wordpress.org/ticket/34996
Il me suffisait d'adapter la réponse fournie dans les commentaires de @ eherman24