web-dev-qa-db-ja.com

カスタム投稿タイプの管理画面に「メニュー順」列を追加する

menu order属性を使用して、特定の目的に使用される予定のカスタム投稿タイプの順序を制御します。

supports => array('page-attributes')でCPTにこれを追加するのは十分簡単ですが、どのように私はこのCPTのために管理者リスト画面でメニューオーダー値を公開するのですか?

31
anu

menu_order$postオブジェクトの中の変数です(念のため@bradyに感謝します)。

@ scribuの 並べ替え可能な列値の作成に関する投稿 その後、残りの部分を示します。

したがって、カスタム投稿タイプがheader_textと呼ばれると仮定すると、これらは必要とされる関数とフックです:

注文に新しい列を追加します

/**
* 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');

列値をレンダリングします

/**
* 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');

列をソート可能に設定します

/**
* 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');
46
anu

長すぎましたが、記録のためだけに、 'supports'オプション配列に 'page-attributes'を含めることで、管理者に 'menu order'オプションを表示できます。例えば:

    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
    )
);
5
Juan Salas