Adicionando a coluna 'ordem de menu' à tela de administração de tipo de postagem personalizada

29

Eu quero usar o atributo menu order para controlar a ordem de um tipo de postagem personalizado que será usado para uma finalidade específica.

É fácil adicionar isso ao CPT por meio de supports => array('page-attributes') , mas como expor o valor do pedido de menu na tela de listagem do administrador para este CPT?

    
por anu 29.02.2012 / 21:06
fonte

3 respostas

44

OK - no final acabou sendo bastante simples - já que eu tinha algum tipo de bloqueio mental - menu_order é uma variável no objeto $post (graças ao @brady por me lembrar disso).

A postagem sobre a criação de valores de colunas classificáveis do scribu fornece o resto.

Portanto, supondo que o tipo de postagem personalizada seja chamado de header_text , estas são as funções e os ganchos necessários:

Adicione uma nova coluna ao pedido

/**
* add order column to admin listing screen for header text
*/
function add_new_header_text_column($header_text_columns) {
  $header_text_columns['menu_order'] = "Order";
  return $header_text_columns;
}
add_action('manage_edit-header_text_columns', 'add_new_header_text_column');

Renderize os valores das colunas

/**
* show custom order column values
*/
function show_order_column($name){
  global $post;

  switch ($name) {
    case 'menu_order':
      $order = $post->menu_order;
      echo $order;
      break;
   default:
      break;
   }
}
add_action('manage_header_text_posts_custom_column','show_order_column');

Defina a coluna como ordenável

/**
* make column sortable
*/
function order_column_register_sortable($columns){
  $columns['menu_order'] = 'menu_order';
  return $columns;
}
add_filter('manage_edit-header_text_sortable_columns','order_column_register_sortable');
    
por anu 01.03.2012 / 20:24
fonte
6

Já faz muito tempo, mas apenas para registro, você pode exibir a opção 'menu order' no admin, apenas incluindo 'page-attributes' no array de opções 'supports'. Por exemplo:

    register_post_type( 'columna',
    array(
        'labels' => array(
            'name' => __( 'Columnas' ),
            'singular_name' => __( 'Columna' ),
        ),
        'supports' => array( 'title', 'thumbnail', 'excerpt', 'page-attributes' ),
        'public' => true,
        'has_archive' => false,
        'menu_position'=>5
    )
);
    
por Juan Salas 23.11.2012 / 23:25
fonte
-3

Você precisa registrar seu CPT com:

'hierachical' => true
    
por ungestaltbar 29.02.2012 / 21:22
fonte