web-dev-qa-db-ja.com

特定の投稿タイプに対するadd_image_size()

set_post_thumbnail_size( 80, 80, true ); // true for all post types

ブログで、投稿、ビデオ、商品の2種類の投稿があるとします。私の投稿には80 x 80の画像サイズが必要ですが、私の動画には100 x 100、私の製品には50 x 100が必要です。私の知る限りでは、私は自分の投稿画像のサムネイルを100×100と50×100のサイズで作成することを余儀なくされています。そして私の製品では、80x80と100x100のサムネイルを作成することを強いられています。

投稿タイプに基づいた画像サイズを作成して、使用する予定のない多数の画像を作成したり、他の場所で使用できるリソースを無駄にしないようにする方法はありますか。

17
Sampson

アップロード時に画像がまだ投稿に添付されておらず、中間の画像サイズが作成されている(「New Media」で追加しただけでは添付されていないため)。すべての投稿へ).

しかし、私は最近 2つのプラグインを作成しました 一緒にあなたが望むことをするでしょう。 仮想中間画像 は中間画像サイズの作成を阻止します。それらはディスク上には作成されませんが、それでもメタデータ配列には存在します。これによりWordPressはそれらが存在するとみなし、通常の画像のように使用することができます。コンパニオンプラグイン On-Demand Resizer が要求されたときに欠けている画像サイズを作成します。イメージが初めて作成されるように要求されたときは、それ以降のすべての要求は新しく作成されたイメージにのみ対応します。

これらのプラグインは、WordPressのプラグインディレクトリに配置する前に書き直す必要がありますが、安全なはずです。あるいは、少なくとも安全でないところにTODOコメントを書いてください。

11
Jan Fabry

この他のスレッド に画像をアップロードするときに投稿タイプでトランジェントを設定し、そのトランジェントの値を確認し、アップロードが完了したときにそれに応じてポストサムネイルのサイズを調整するコードを投稿しました。それは完璧でも防弾でもありません、しかしそれは少なくとも概念を実証するべきです。

2
goldenapples

私は以下の解決策を思い付きました。追加の投稿を作成せずに、カスタム投稿タイプ専用の画像を作成します。唯一の問題は、ギャラリーフィールドをレンダリングしようとすると、高度なカスタムフィールドのようなプラグインを使用する場合、デフォルトのワードプレスの画像サイズのみが表示され、作成されたカスタム投稿画像サイズにアクセスできないことです。 。

if ( function_exists ('add_image_size') ) {

function remove_default_img($sizes) {
    unset( $sizes['medium']);
    unset( $sizes['large']); 
    return $sizes;
}
add_filter('intermediate_image_sizes_advanced', 'remove_default_img');

$type = get_post_type($_REQUEST['post_id']);
// Post_Name Image Sizes ======================================================
if ( $type === "Custom_Post_Name" || $post_type === "Custom_Post_Name" ) {
add_image_size('custom_size_img', 165, 249, true);
}

}

0
No0n