web-dev-qa-db-fra.com

register_post_type ordre de tri par titre par défaut

Si j'ajoute un type d'article personnalisé (exemple de code ci-dessous), dans la page d'administration du nouveau type d'article personnalisé, les articles sont triés par ID par défaut. Existe-t-il un moyen de définir l'ordre de tri par défaut sur le titre de l'article (uniquement pour ce nouveau type d'article personnalisé)?

    $labels = array(
    'name' => 'States',
    'singular_name' => 'State',
    'add_new' => __( 'Add State' ),
    'add_new_item' => __( 'Add New State' ),
    'edit_item' => __( 'Edit State' ),
    'new_item' => __( 'New State'),
    'view' => __( 'View State'),
    'view_item' => __( 'View State'),
    'search_items' => __( 'Search States'),
    'not_found' => __( 'No States found' ),
    'not_found_in_trash' => __( 'No States found in trash' ),
    'parent' => __( 'Parent State')
);

$args = array('public' => true, 
              'show_ui' => true,
              'show_in_nav_menus' => true,
              'show_in_menu' => true,
              'labels' => $labels,
              'supports' => array( 'title','editor')
              );
register_post_type( 'states', $args );
5
David Barnes

Vous pouvez forcer la commande via pre_get_posts :

function wpa_order_states( $query ){
    if( !is_admin() )
        return;

    $screen = get_current_screen();
    if( 'edit' == $screen->base
    && 'states' == $screen->post_type
    && !isset( $_GET['orderby'] ) ){
        $query->set( 'orderby', 'title' );
        $query->set( 'order', 'ASC' );
    }
}
add_action( 'pre_get_posts', 'wpa_order_states' );
7
Milo

J'ai trouvé que cette réponse était meilleure ici (modifié pour répondre à la question):

function se91124_order_post_type($query) {
  if($query->is_admin) {

        if ($query->get('post_type') == 'States')
        {
          $query->set('orderby', 'title');
          $query->set('order', 'ASC');
        }
  }
  return $query;
}
add_filter('pre_get_posts', 'se91124_order_post_type');

Veuillez noter que se91124_order_post_type peut être remplacé par n'importe quel nom de fonction. States est le nom ou l'étiquette du type post_type, la commande by titre peut être celle que vous préférez (par exemple, menu_order) , et évidemment ASC peut être changé pour DESC.

Original de l'URL:

function posts_for_current_author($query) {

  if($query->is_admin) {

        if ($query->get('post_type') == 'portfolio')
        {
          $query->set('orderby', 'menu_order');
          $query->set('order', 'ASC');
        }
  }
  return $query;
}
add_filter('pre_get_posts', 'posts_for_current_author');
2
hazrpg