注目画像のみのサムネイルを生成する


9

注目の画像(index.php、archive.phpなど)として使用する予定の画像に対してのみサムネイルサイズを作成する簡単な方法(カスタムコードまたはプラグイン)があるかどうかを知りたい投稿で使用されます(single.php)。私の主な目標は、私のテーマが決して使用しないサムネイルを作成しないことにより、サーバー領域の使用量を減らすことです。

私のサムネイルは実際には720px幅と328px幅の2つのサイズしかなく、720px幅の注目画像(ホームページのみ)にも328px幅の画像があります(archive.phpおよびsidebar.php用)。

現在、私が知っている唯一のプログラマティックな方法は、すべての画像アップロードに対してサムネイル生成することです。これは私のアップロードのほとんどが投稿画像であり、サーバーから多くの画像を手動で削除する必要があるためです。

プラグインよりもカスタムコードを使用したいのですが、プラグインでも問題ありません。いくつかの画像サイズ変更プラグインがあることは知っていますが、長い間更新されていません(TimThumb、Dynamic Image Resizer )。

私もWordpress SEで同様の質問を見つけましたが、受け入れられた回答は私の問題を実際に解決しません。


編集:私は注目の画像ではなく、投稿内の画像のサムネイルを削除または防止する必要があります、すなわち:

(1)注目の画像:WPによって自動生成された追加のサムネイルは問題ありません。

(2)投稿内で使用される画像:元の画像をアップロードし、追加のサイズを生成しません。アップロードする前に画像をトリミング、サイズ変更、最適化し、1つのサイズで自分のニーズに合わせます。



1
まず、重複の可能性があります。第二に、問題を解決するのに役立つ可能性があります。おそらく、それをニーズに合わせることができるからです。最後に重要なことですが、「Dynamic Image Resizer」プラグインへの回答がありますが、プラグインは異なります。
Nicolai

2
それに入る時間はありませんが、知っているのはサムネイルID-メタキー:_thumbnail_id-です。これで十分save_postです。同様のフックを使用することもできます。ただし、投稿内のこれらの画像をサムネイルとして他の投稿で使用できることを忘れないでください。それを説明するメカニズムが必要になる場合があります。
ニコライ

1
あなたが書いたものを考慮して、あなたは注目画像の追加のサイズを気にしません、私はもっと考えていました:投稿のサムネイル/注目画像がどの添付画像であるかわかっていれば、他の追加画像サイズを削除できます、そのプロセスから注目画像を除外することにより。前に、1つの可能な制限/欠点について述べました。
ニコライ

1
提案:Glideを使用してサイズ変更を完全に無効にしてからadd_filter('intermediate_image_sizes_advanced', '__return_false')、オンザフライでサムネイルのサイズを変更します
gmazzap

回答:


2

この関数は、画像サイズを一時的に登録し、画像を生成し(必要な場合)、サイズを削除して画像を生成します。これにより、そのサイズで新しい画像が作成されなくなります。

function lazy_image_size($image_id, $width, $height, $crop) {
    // Temporarily create an image size
    $size_id = 'lazy_' . $width . 'x' .$height . '_' . ((string) $crop);
    add_image_size($size_id, $width, $height, $crop);

    // Get the attachment data
    $meta = wp_get_attachment_metadata($image_id);

    // If the size does not exist
    if(!isset($meta['sizes'][$size_id])) {
        require_once(ABSPATH . 'wp-admin/includes/image.php');

        $file = get_attached_file($image_id);
        $new_meta = wp_generate_attachment_metadata($image_id, $file);

        // Merge the sizes so we don't lose already generated sizes
        $new_meta['sizes'] = array_merge($meta['sizes'], $new_meta['sizes']);

        // Update the meta data
        wp_update_attachment_metadata($image_id, $new_meta);
    }

    // Fetch the sized image
    $sized = wp_get_attachment_image_src($image_id, $size_id);

    // Remove the image size so new images won't be created in this size automatically
    remove_image_size($size_id);
    return $sized;
}

必要になるまで画像が生成されないため、これは「遅延」です。

ユースケースでは、それlazy_image_sizeを投稿サムネイルIDで呼び出して、目的のサイズの画像を取得します。最初の呼び出しで画像が生成されます。後続の呼び出しは、既存のイメージをフェッチします。

要旨:https : //gist.github.com/mtinsley/be503d90724be73cdda4


0

あなたはこのリンクを見ることができます。のようないくつかの例があります

add_action( 'after_setup_theme', 'baw_theme_setup' );
function baw_theme_setup() {
  add_image_size( 'category-thumb', 300 ); // 300 pixels wide (and unlimited height)
  add_image_size( 'homepage-thumb', 220, 180, true ); // (cropped)
}

2
アップロードするすべてのものではなく、特定の画像のサムネイルのみが必要です。基本的に、画像をアップロードするときに、サムネイルを作成するかどうかを制御します。
imrek 2015年

しかし、なぜ?保管スペースに問題はありますか?利用可能なストレージスペースが非常に多い場合は、想像もできません。
aequalsb

0

1. [ダッシュボード]> [設定]> [メディア]に移動します。2。[
サムネイルを正確なサイズにトリミング]のチェックを外します(通常、サムネイルは比例します)
3.すべての入力に0を入力します(すべてのサイズに0)
4.これらをfunctions.phpに追加します

// Enable support for Post Thumbnails, and declare sizes.
add_theme_support( 'post-thumbnails' );
set_post_thumbnail_size( 400, 400, array("center","center") );
function fw_add_image_insert_override($sizes){
    // unset( $sizes['thumbnail']);
    unset( $sizes['small']);
    unset( $sizes['medium']);
    unset( $sizes['large']);
    return $sizes;
}
add_filter('intermediate_image_sizes_advanced', 'fw_add_image_insert_override' );

5. functions.phpで始まるコード行がないことを確認しますadd_imge_size 注::サムネイルに400x400のサイズを使用するとします。写真をアップロードすると、少なくとも4つのバージョンの写真ではなく、2つのバージョンのみが作成されます。前と同じように。


0

こんにちは–私は同様の問題がありました。Woocommerceは、カタログおよび関連製品の画像にカタログ画像を使用します。画質や速度が低下するため、これは理想的ではありません。そこで、関連商品の4番目の画像カテゴリを追加しようとしました。ハウディマクジーは問題を解決しました。ハウディ・マギーズの回答をご覧ください。

関連製品の画像サイズを変更する:彼のコードを読んでください

それは私のニーズに見事にうまくいきました。あなたの問題については、同じロジックを適用できます。お役に立てれば。よろしく-テオ

私はうまくいく解決策を見つけました。1.step:functions.phpに新しいサムネイルサイズを割り当てます。参照を確認:wp codex

/*add your custom size*/
add_action( 'after_setup_theme', 'your_theme_setup' );
function your_theme_setup() {
add_image_size( 'your-thumb', 123, 123, true );//insert your values
}

注:「あなたの親指」、後でこの変数名を使用します

  1. ステップ:次に、注目の商品を表示する場所に次のコードを追加します。

    <h1>featured products</h1> 
    <div class="woocommerce">
    <ul class= "products">
    
    <?php
    $args = array( 'post_type' => 'product', 'meta_key' => '_featured','posts_per_page' => 4,'columns' => '4', 'meta_value' => 'yes' );
     $loop = new WP_Query( $args );
    
     while ( $loop->have_posts() ) : $loop->the_post(); global $product; ?>
    
                    <li class="product post-<?php echo get_the_ID(); ?>">    
                        <a href="<?php echo get_permalink( $loop->post->ID ) ?>" title="<?php echo esc_attr($loop->post->post_title ? $loop->post->post_title : $loop->post->ID); ?>">
    
                            <?php woocommerce_show_product_sale_flash( $post, $product ); ?>
                            <?php if (has_post_thumbnail( $loop->post->ID )) echo get_the_post_thumbnail($loop->post->ID, 'your-thumb'); else echo '<img src="'.woocommerce_placeholder_img_src().'" alt="Placeholder" width="123px" height="123px" />'; ?></a>
                            <h3><?php the_title(); ?></h3><span class="price"><?php echo $product->get_price_html(); ?></span>
    
                    </li>
    
    <?php endwhile; ?>
    <?php wp_reset_query(); ?> 
    </ul>
    </div>

参照と情報:3番目のリンクの評判が良くない、申し訳ありません(www.haloseeker.com/display-woocommerce-featured-products-without-a-shortcode/)私はwootheme mystileのindex.php(私のホームページ)に配置しました。オンラインで「あなたの親指」を使用することを忘れないでください:

<?php if (has_post_thumbnail( $loop->post->ID )) echo get_the_post_thumbnail($loop->post->ID, 'your-thumb'); else echo '<img src="'.woocommerce_placeholder_img_src().'" alt="Placeholder" width="123px" height="123px" />'; ?></a>
  1. ステップ:サムネイルを再生成し、プラグインhttps://wordpress.org/plugins/regenerate-thumbnails/を使用します

  2. ブラウザを更新してdomを検査し、値を比較します

テーマに応じて、マークアップとクラス名を変更できます。私は上記の方法をテストし、それはうまくいきます。これまでできなかった唯一のことは、カートに追加ボタンを追加することです。カートに追加ボタンのショートコードに変数を書き込む方法がわかりません。これはコードです:

<?php echo do_shortcode('[add_to_cart id="variable number?"]'); ?>

これがお役に立てば幸いです。これを行うためのよりエレガントな方法は確かにあります。たとえば、functions.phpの関数

テオについて


0

WordPressが特定の画像に対してのみ追加のサイズを作成しないようにするには、アップロードする画像が特定の目的にのみ使用されることを示す方法が必要になります。これは、アップロードする前に行う必要があります。

アップロードアクション中にそのようなオプションを示すためのそのようなインターフェース(標準)がないため、この機能を追加したプラグインがない限り、追加の画像生成を防ぐことはできません。

しかし、なぜ世界で追加の画像サイズが必要ないのですか?別のサイズの画像を使用したい場合に、いつ遭遇するかはわかりません。収納スペースは気になりますか?

このような独自の特定のサイズ仕様を使用できませんか? the_post_thumbnail( array(100, 100) );

ここで読んだほとんどの回答とコメントでは、WordPress環境を画像サイズに合わせてカスタマイズする方法を説明していますが、条件付きで行うことについては触れていません。さらに、アップロードする前に画像の使用を示すことができなければならないという事実に対処するものはありません。

投稿の小さすぎる画像や大きすぎる画像を補正しようとしている場合は、いくつかのことを利用できます。

  1. CSS:のようなスタイルシートにエントリを追加できます.post-entry img { max-width:200px; max-height:300px; }。これは、画像自体のサイズに依存するよりも普遍的で効果的です-これは、フォトショップ時間の多くです。

  2. テンプレート:投稿HTML出力が生成されるテンプレートファイルを変更し、次のように画像サイズを指定できます。

WordPressでこのドキュメントを参照してください:https : //codex.wordpress.org/Function_Reference/the_post_thumbnail

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.