web-dev-qa-db-ja.com

カスタムの画像アップロードサイズを追加してデフォルトで選択する

カスタムメディアアップロードサイズを550pxの幅で追加し、それを[メディアの追加]ページでデフォルトで選択できるようにする方法を教えてください。

現在、利用可能な4つのサイズがあります:ThumbnailMediumLargeおよびFull Size。デフォルトではFull Sizeオプションが選択されています。

誰もがこれに対する実用的な解決策を知っていますか?

5
Amanda Bynes

今日わかったように、これにはいくつかのステップがあります。まず、カスタムの画像サイズを追加します(テーマのfunctions.phpファイルのどこかに配置できます)。

add_theme_support( 'post-thumbnails' );
add_image_size( 'my-size', 550, 550 ); // not sure what you want your height to
                                     // be, but this'll shrink it to 550px
                                     // wide *or* tall. If you want it to be
                                     // cropped to a 550px square, add true as
                                     // a fourth argument

残念なことに、WordPressは実際にはこの新しいサイズをメディアアップローダに表示しません。これを行う関数もfunctions.phpに入れる必要があります(source: http://kucrut.org/insert-image-with-custom-size-into-post/ ):

function my_insert_custom_image_sizes( $sizes ) {
    // get the custom image sizes
    global $_wp_additional_image_sizes;
    // if there are none, just return the built-in sizes
    if ( empty( $_wp_additional_image_sizes ) )
        return $sizes;

    // add all the custom sizes to the built-in sizes
    foreach ( $_wp_additional_image_sizes as $id => $data ) {
        // take the size ID (e.g., 'my-name'), replace hyphens with spaces,
        // and capitalise the first letter of each Word
        if ( !isset($sizes[$id]) )
            $sizes[$id] = ucfirst( str_replace( '-', ' ', $id ) );
    }

    return $sizes;
}

// apply the above function as a filter on the media uploader's list of
// image sizes
add_filter( 'image_size_names_choose', 'my_insert_custom_image_sizes' );

最後に、このサイズをデフォルトに設定するには、WordPress設定を変更する必要があります。問題の設定にフィルタを追加してください。これには、上記のすべてのオプションを定義したテーマに合わせて移植性があるという利点があります。

function my_set_default_image_size () {
    return 'my-size';
}
add_filter( 'pre_option_image_default_size', 'my_set_default_image_size' );

私はこれをすべてWordPress 3.4.2でテストしたところ、うまくいったようです。

注意:上記のPHPコードをある種のinit関数に入れて'after_setup_theme'フックに追加することをお勧めします。

// define the functions first
function my_insert_custom_image_sizes( $sizes ) {
    // not going to repeat the function body, for brevity's sake
}

function my_set_default_image_size() {
    // ditto
}

// define the init function next, which sets up all the necessary stuff
function custom_image_setup () {
    add_theme_support( 'post-thumbnails' );
    add_image_size( 'my-size', 550, 550 );
    add_filter( 'image_size_names_choose', 'my_insert_custom_image_sizes' );
    add_filter( 'pre_option_image_default_size', 'my_set_default_image_size' );
}

// and attach that init function to the 'after_setup_theme' hook
// so it runs on each page load once your theme's been loaded
add_action( 'after_setup_theme', 'custom_image_setup' );
7
Paul d'Aoust

管理パネルの[設定]"[メディア]で、他のすべてのオプションを0に設定するだけです。これはそれらを無効にします。

0
kaiser