Je recherche ce problème pendant jours sans succès ... Ce que je veux est très simple: voir mes termes de taxonomie personnalisés triés par ID sur la page d'administration. Je ne peux pas croire que quelque chose d'aussi simple ne puisse être accompli sans plugins.
(J'ai déjà une colonne personnalisée triable, mais il serait important de définir également l'ordre par défaut .)
Jusqu'à présent, j'ai trouvé les deux solutions suivantes, qui ne fonctionnent pas pour une raison quelconque:
1) Enregistrement de la taxonomie avec "sort => true":
register_taxonomy( 'issue', 'post', array( 'hierarchical' => false, 'labels' => $labels, 'public' => true, 'sort' => true, 'args' => array( 'orderby' => 'id' ), 'query_var' => 'issue', 'rewrite' => array( 'slug' => 'issues' ) ) );
Source: http://codex.wordpress.org/Taxonomies#Registering_a_taxonomy
2) Filtrage de "demande" et ajout de "commande par":
function my_default_orderby( $vars ) {
$screen = get_current_screen();
if ( 'edit-issue' == $screen->id ) {
if ( !isset( $vars['orderby'] ) ) {
$vars['orderby'] = 'id';
}
}
return $vars;
}
if ( is_admin() )
add_filter( 'request', 'my_default_orderby' );
Source: http://scribu.net/wordpress/custom-sortable-columns.html#comment-4456
Vous devez jeter un oeil à
/core_root/wp-admin/includes/class-wp-terms-list-table.php
puis ajoutez une classe étendue et utilisez la classe WP_list_Table
et la documentation. En gros, vous remplacez les order
et orderby
dans un plugin personnalisé.
Btw: "Pas de plugins" n'est jamais une bonne idée car les plugins peuvent vous montrer comment cela fonctionne dans le code et donc être a) une réponse valide et b) une bonne référence ou un bon point de départ.
Ma décision alors que j'ai fait le thème wp est de le faire par javascript: in general.js qui inclus dans
add_action('wp_head', 'thememakers_theme_wp_head');
function thememakers_theme_admin_head() {
wp_enqueue_script('thememakers_theme_admin_js', THEMEMAKERS_THEME_URI . '/admin/js/general.js');
}
en cela general.js écris:
jQuery(document).ready(function() {
//for events
var event_link=jQuery('.wp-submenu-wrap a[href$="?post_type=event"]').eq(0);
jQuery(event_link).attr('href', jQuery(event_link).attr('href')+"&orderby=ev_mktime&order=desc");
});
où ev_mktime est un méta de post personnalisé.
C'est tout. Simple et puissant.
Pourquoi ne pas utiliser simplement get_terms( 'taxonomy-slug', array( 'orderby' => id,'hierarchical' => 1 ) );
et parcourir ensuite cela?