管理画面の投稿一覧ページでアイキャッチ画像を表示させたい時、Google先生にきくとすぐに答えが返ってきますよね。

次のコードを function.phpにコピペでOK! と。

//投稿一覧画面でサムネイル表示
function add_posts_columns_thumbnail($columns) {
  $columns['thumbnail'] = 'アイキャッチ';
  return $columns;
}
function add_posts_columns_thumbnail_row($column_name, $post_id) {
  if ( 'thumbnail' == $column_name ) {
  $thumb = get_the_post_thumbnail($post_id, array(100,100), 'thumbnail');
  echo ( $thumb ) ? $thumb : '-';
  }
}
add_filter( 'manage_posts_columns', 'add_posts_columns_thumbnail' );
add_action( 'manage_posts_custom_column', 'add_posts_columns_thumbnail_row', 10, 2 );

なるほどこれは便利!

実際、コピペするだけ投稿一覧画面にアイキャッチ画像が表示されます。

ということでコピペで使い回しをしていると、カスタム投稿の場合「アイキャッチ」というテーブルは追加されるのに画像が表示されない、というような現象にぶち当たってしまいまして、コピペでOKだと思い込んでいたので少し焦りました。

同様の状況に陥る人がいるかもしれないので、対処法をメモしておきます。

目次

フックさせる関数名に注意!

落ち着いて、今までコピペだけしていたコードを見直します。

最後の2行に注目。

add_filter( 'manage_posts_columns', 'add_posts_columns_thumbnail' );
add_action( 'manage_posts_custom_column', 'add_posts_columns_thumbnail_row', 10, 2 );

アクションフックがされていますね。functionの内容的に、

1行目が、アイキャッチという項目を追加しますよ、というフック。

2行目が、その項目に何を表示させるか、というフック。

今回陥った現象、「アイキャッチ」というテーブルは追加されるのに画像が表示されないという現象から考えると、2つ目のフックだけ反応していないことが推測されます。

つまり、カスタム投稿の場合、フック先がこれじゃなく別にあるだろうということが分かります。

「manage_posts_custom_column カスタム投稿」 とかで調べてみるとすぐに答えを発見できました。

パパッと調べるだけでは冒頭のコードだけを記載しているサイトが多く、それでOKだと思ってましたが、投稿タイプによってフック先が違うみたいです。

各投稿タイプでのフック先

一つ目のフックについては、

  • 投稿では : manage_posts_columns
  • 固定ページでは : manage_pages_columns
  • カスタム投稿では : manage_posts_columns  または  manage_${post_type}_posts_columns

 

2つ目のフックについては、

  • 投稿では : manage_posts_custom_column
  • 固定ページでは : manage_pages_custom_column
  • カスタム投稿では : manage_${post_type}_posts_custom_column

カスタム投稿については、1つ目のフックのように通常の投稿と同じくmanage_posts_custom_columnでもいいとされている記事もありますが、私の環境では動作しませんでした。

おわりに

やはり仕組みをあまり理解せずにコピペするだけってのはよくないですね。

 

- Thank you for reading. -

コメント

コメントする