Upload page content

You can upload content for the page named below. If you change the page name, you can also upload content for another page. If the page name is empty, we derive the page name from the file name.

File to load page content from
Page name
Comment

Locked History Actions

wordpress/sluginpagelist

※以下の変更の必要はない。Admin Columnというプラグインを使用すれば簡単。

https://www.nxworld.net/wordpress/wp-plugin-codepress-admin-columns.html

スラッグを固定ページ一覧に表示

これができないと大変不便と思うのだが、なぜもともとこの機能が無いのだろうか?

検索するとすぐ見つかるが、以下のコードを使用中のテーマのfunctions.phpの最後に追加する。 twentytwelveを使用している場合は、wp-content/themes/twentytwelve/function.php なぜテーマの方に追加するのかは謎。

function add_page_columns_name($columns) {
  $columns['slug'] = "スラッグ";
  return $columns;
}
function add_page_column($column_name, $post_id) {
  if( $column_name == 'slug' ) {
  $post = get_post($post_id);
  $slug = $post->post_name;
  echo attribute_escape($slug);
  }
}
add_filter( 'manage_pages_columns', 'add_page_columns_name');
add_action( 'manage_pages_custom_column', 'add_page_column', 10, 2);

スラッグ表示位置を変える

右端だと見にくいため、タイトルの右側にする。参考は以下。

カテゴリ、コメントは不要なので削除。

function add_page_columns_name($cols) {
  // cb, title, author, categories, tags, comments, date
  $author = $cols['author'];
  $categories = $cols['categories'];
  $tags = $cols['tags'];
  $comments = $cols['comments'];
  $date = $cols['date'];
  unset($cols['author']);
  unset($cols['categories']);
  unset($cols['tags']);
  unset($cols['comments']);
  unset($cols['date']);
  $cols['slug'] = "スラッグ";
  $cols['author'] = $author;
  //$cols['categories'] = $categories;
  $cols['tags'] = $tags;
  //$cols['comments'] = $comments;
  $cols['date'] = $date;
  return $cols;
}
function add_page_column($column_name, $post_id) {
    if( $column_name == 'slug' ) {
        $post = get_post($post_id);
        $slug = $post->post_name;
        echo attribute_escape($slug);
    }
}
add_filter( 'manage_pages_columns', 'add_page_columns_name');
add_action( 'manage_pages_custom_column', 'add_page_column', 10, 2);

さらにページ順を加え、列幅を変更する

固定ページ一覧でのページの表示順を指定するため「順序」フィールドを利用することにする。ドラッグドロップで簡単にできるプラグインもあるが、操作を間違えると面倒なので、1ページ1ページ順序値を入れることにする。 固定ページ一覧にて、この順序値を表示する。さらに列幅を調整する。参考は以下。

function add_page_columns_name($cols) {
  // cb, title, author, categories, tags, comments, date
  $cb = $cols['cb'];
  $title = $cols['title'];
  $author = $cols['author'];
  $categories = $cols['categories'];
  $tags = $cols['tags'];
  $comments = $cols['comments'];
  $date = $cols['date'];
  unset($cols['cb']);
  unset($cols['title']);
  unset($cols['author']);
  unset($cols['categories']);
  unset($cols['tags']);
  unset($cols['comments']);
  unset($cols['date']);
  $cols['order'] = "順";
  $cols['cb'] = $cb;
  $cols['title'] = $title;
  $cols['slug'] = "スラッグ";

  $cols['author'] = $author;
  //$cols['categories'] = $categories;
  $cols['tags'] = $tags;
  //$cols['comments'] = $comments;
  $cols['date'] = $date;
  return $cols;
}
function add_page_column($column_name, $post_id) {
  if($column_name == 'slug') {
    $post = get_post($post_id);
    $slug = $post->post_name;
    echo attribute_escape($slug);
  } else if ($column_name == 'order') {
    $post = get_post($post_id);
    $order = $post->menu_order;
    echo attribute_escape($order);
  }
}
function my_admin_column_width() {
 echo '<style type="text/css">
   .column-order { text-align:right;   width: 30px !important; overflow:hidden }
   .chcek-column { text-align:center;  width: 100px !important; overflow:hidden }
   .column-title { text-align:left;    width: 300px !important; overflow:hidden }
   .column-slug  { text-align:left;    width: 100px !important; overflow:hidden }
   .column-author  { text-align:left;    width: 100px !important; overflow:hidden }
   .column-tags  { text-align:left;    width: 100px !important; overflow:hidden }
   .column-date  { text-align:left;    width: 100px !important; overflow:hidden }
 </style>';
}
add_filter( 'manage_pages_columns', 'add_page_columns_name');
add_action( 'manage_pages_custom_column', 'add_page_column', 10, 2);
add_action('admin_head', 'my_admin_column_width');