web-dev-qa-db-ja.com

カスタム投稿タイプ専用の管理投稿のサムネイルサイズを変更する

1つのカスタム投稿タイプについてのみ、おすすめ画像のサイズを変更したいです。これは私が現在持っているものです:

function custom_admin_thumb_size($thumb_size){

    global $post_type;
    if( 'slider' == $post_type ){

        return array(1000,400);

    }else{

        return array(266,266);
    }

}
add_filter( 'admin_post_thumbnail_size', 'custom_admin_thumb_size');

この関数は私が期待していたことをしますが、他のものに触れずにカスタムの投稿タイプを「スライダー」と呼ぶよりよい方法があるかどうか疑問に思いました。

前もって感謝します

2
Wilco

admin_post_thumbnail_size は3つのパラメータを取ります。

  1. $ thumb_size:フィルタで何もしない場合は、Thumb Sizeを選択します。

  2. $ thumbnail_id:サムネイルの添付ファイルID。

  3. $ post:関連付けられているWP_Postインスタンス

それであなたはあなたのCODEでより良いコントロールを持つためにこれらのパラメータを利用するかもしれません。以下のようにコードを使用してください。

function custom_admin_thumb_size( $thumb_size, $thumbnail_id, $post ) {
    if( 'slider' === $post->post_type ) {
        return array( 1000, 400 );
    }

    return $thumb_size;
}
add_filter( 'admin_post_thumbnail_size', 'custom_admin_thumb_size', 10, 3);
3
Fayaz

特定のpost_typeだけにこれを実行するためのフィルタはありませんが、基本的に1行のコードを保存するためにget_post_type( esc_attr( $_GET['post'] ) )を使用できます。

いずれにしてもifステートメントにはリターンがないので、elseステートメントを取り出すこともできます。それ以外は、これは基本的にあなたがすることです。

function custom_admin_thumb_size( $thumb_size ){

    if( 'slider' == get_post_type( esc_attr( $_GET['post'] ) ) ) {

        return array( 1000, 400 );

    }

    return array( 266, 266);

}
add_filter( 'admin_post_thumbnail_size', 'custom_admin_thumb_size' );