web-dev-qa-db-fra.com

Comment définir un ordre de référencement par défaut sur la page d'administration pour une taxonomie personnalisée? (sans plugins)

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

2
MrValueType

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.

1
kaiser

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

ev_mktime est un méta de post personnalisé.

C'est tout. Simple et puissant.

1
realmag777

Pourquoi ne pas utiliser simplement get_terms( 'taxonomy-slug', array( 'orderby' => id,'hierarchical' => 1 ) ); et parcourir ensuite cela?

0
mor7ifer