web-dev-qa-db-ja.com

ユーザーが投稿に挿入できるように、メディアアップローダーに新しい画像サイズを追加しますか?

ユーザーが「投稿に挿入」できるように、アップロードされた画像に追加のサイズを作成したいと思います。私はadd_image_size()が私のテーマで使用できる新しい画像サイズを追加することを理解していますが、その新しいサイズはメディアアップロード画面で利用できません。

新しいサイズをその画面に表示して投稿を追加/編集するときに利用できるようにする方法はありますか。私はデフォルトの3サイズ+オリジナル以上のものを必要とする微調整のテーマを持っています。

ありがとうございます。

6
Michelle

私が上記で説明したことを正確に実行するように思われる新しいプラグインを見つけました。

http://wordpress.org/extend/plugins/additional-image-sizes-zui/

これが誰かに役立つことを願っています!

2
Michelle

画像サイズを作成しても、それをMedia Uploadersの利用可能なサイズのドロップダウンに追加するには、追加のコードが必要になります。まずサイズを登録しましょう。 init または after_setup_theme hookを使用できます。

function theme_init() {
    add_image_size( 'banner_image', 1200, 200, true );
}
add_action( 'init', 'theme_init' );

利用可能なサイズに新しいサイズを追加するには image_size_names_choose フックを使用する必要があります。 開発者向けリソースでは、 を次のように使用しています。

/**
 * @param Array $default_sizes - Array( 'size_slug' => 'Size Title' )
 *
 * @return Array $default_sizes
 */
function image_sizes_to_mediapicker( $default_sizes ) {
    return array_merge( $default_sizes, array(
        'banner_image' => __( 'Banner Image' ),
    ) );
}
add_filter( 'image_size_names_choose', 'image_sizes_to_mediapicker' );

上記はうまくいきますが、多少自動化できるかもしれません。以下では、追加のサイズはアンダースコアで命名されていると仮定しているため、独自のサイズを追加するプラグインでは最適な解決策とは言えません。また、各変数が何であるかを示すために大いにコメントされています。

/**
 * @param Array $default_sizes - Array( 'size_slug' => 'Title' )
 *
 * @return Array $return_sizes
 */
function image_sizes_to_mediapicker( $default_sizes ) {
    global $_wp_additional_image_sizes;                             // All additionally added sizes

    $size_slugs     = array_keys( $_wp_additional_image_sizes );    // Get array of additional sizes
    $default_slugs  = array_keys( $default_sizes );                 // Get array of default sizes
    $exclude_sizes  = array( 'medium_large' );                      // Exclude any image sizes
    // $exclude_sizes = get_option( 'mediapicker_exlcuded_sizes', array() )             // IF we want to previously set / retrieve an array of excluded options
    $sizes_needed   = array_diff( $size_slugs, $default_slugs, $exclude_sizes );        // Get difference between the defaults and additional sizes
    $return_sizes   = $default_sizes;                               // Let's keep separation between passed and returned

    foreach( $sizes_needed as $size_slug ) {
        $pretty_title               = ucwords( str_replace( '_', ' ', $size_slug ) );   // Create a pretty title
        $return_sizes[ $size_slug ] = __( $pretty_title );
    }

    return $return_sizes;
}
add_filter( 'image_size_names_choose', 'image_sizes_to_mediapicker' );
1
Howdy_McGee

私はコードを解読しましたが、これを実行する方法はないようです。

これらのラジオボタンのレンダリング中にWPが繰り返すサムネイルサイズのリストはハードコーディングされており、フックするフィルタやアクションはありません。

これは本当に奇妙です。私はこれを行う方法があることを十分に期待しています。

特定のサイズのカスタムサイズを投稿に挿入できるようにする必要がありますか。それともそれらのいくつかはテンプレートでのみ使用されますか?私が求めているのは、1つまたは複数のデフォルトサイズ(サム、ミディアム、ラージ)を投稿に追加するサイズにして、カスタムサイズ用の追加バージョンを保存することが可能かどうかです。言いたいことが分かる?

1
MathSmath