WordPress

【WordPress】管理画面の投稿一覧でアイキャッチ画像が表示されない!カスタムリライトスラッグの罠?!

やまだ
こんにちは、山田です。

つい先日、WordPressのオリジナルテーマをイジくってた時の事。

管理画面の投稿一覧にアイキャッチ(サムネイル)を表示させたくて、funcitons.phpをいじってみたところ…

アイキャッチ画像を表示させる列は表示されるものの、肝心のアイキャッチ画像が表示されない。

↓こんな風に表示させたいのに、うんともすんとも言わない。シュン。

ネットで拾ったコードをそのままコピペしたからか?とか思いましたが、どうやら違ったようで…

スポンサーリンク

カスタムリライトスラッグを使っていた

よくよく調べてみると、特定のカスタム投稿だけ表示されず、その他の投稿は表示されているという現象が起きていまして。

その他の投稿ページは以下のコードで列も追加され、正常にアイキャッチ画像も表示されました。

// 管理画面にサムネイルを表示させる
function customize_manage_posts_columns($columns) {
    $columns['thumbnail'] = __('Thumbnail');
    return $columns;
}
add_filter( 'manage_posts_columns', 'customize_manage_posts_columns' );
 
//サムネイル画像表示
function customize_manage_posts_custom_column($column_name, $post_id) {
    if ( 'thumbnail' == $column_name) {
        $thum = get_the_post_thumbnail($post_id, 'small', array( 'style'=>'width:100px;height:auto;' ));
    } if ( isset($thum) && $thum ) {
        echo $thum;
    } else {
        echo __('None');
    }
}
add_action( 'manage_posts_custom_column', 'customize_manage_posts_custom_column', 10, 2 );

 

そこで、なぜか表示されないカスタム投稿の設定を見てみると、カスタムリライトスラッグ(スラッグを書き換える)設定をしていました。

もしやそのせい…?!と思いましたが、なんとビンゴ!

 

対処法

原因は後述しますので、まずは対処法をば。

特定のカスタム投稿に列を追加するフックは、

manage_${post_type}_posts_columns

なので、この${post_type}のところに、カスタムリライトスラッグを施したカスタム投稿タイプを記述します。

たとえばカスタム投稿タイプが「item」と設定していたなら、manage_item_posts_columns みたいになります。

そんでもって以下の記述を追加してあげれば…

// カスタムリライトスラッグ用
function customize_manage_ここに特定のカスタム投稿タイプを記述_posts_custom_column($column_name, $post_id) {
    if ( 'thumbnail' == $column_name) {
        $thum = get_the_post_thumbnail($post_id, 'small', array( 'style'=>'width:100px;height:auto;' ));
    } if ( isset($thum) && $thum ) {
        echo $thum;
    } else {
        echo __('None');
    }
}
add_action( 'manage_ここに特定のカスタム投稿タイプを記述_posts_custom_column', 'customize_manage_ここに特定のカスタム投稿タイプを記述_posts_custom_column', 10, 2 );
やまだ
表示されたーーーーーーーっ!!

 

原因っぽいもの

この記事を書くにあたって参考にさせていただいた、以下のブログの記事から分析してみましたが…。

WordPress管理画面の投稿一覧でアイキャッチ画像用カラムを追加しても画像だけ表示されない時に確認したいこと

 

おそらく、リライトしたスラッグが階層構造になっていたからっぽいです。

例えば、カスタム投稿タイプを「item」として作ったけど、カスタムリライトスラッグで「komono/item」みたいに階層構造にしてしまうと、カスタム投稿用のフックが効かなくなり固定ページ用のフックが有効になる…との事。

なんとなく記事から自分の陥った状況を分析しただけなので、これが合ってるのかも、なんでこの対処法でイケたのかも、ぶっちゃけよくわからんです。

有識者いたら、コメント求ム…。

やまだ
しかし、この記事を見つけられなかったらマジで解決策すら見つけられなかったです。圧倒的感謝!

 

まとめ

オリジナルテーマを仕事で作り始めてもう2年くらいたつんですが、こういう初歩的?なところでつまずきまくって凹みます。

こういうのって、最初にちゃんと設定しておくべきだったなァ…。

 

今日の東京は大雪。

周囲でコロナとインフルが大流行しているので、なんとか体調には気を付けて頑張ろう。

この記事が誰かのお役に立てる事を願って!

それでは!

-WordPress
-, , ,