web-dev-qa-db-ja.com

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

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

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

現在のところ、私が知っている唯一のプログラム的な方法は、 画像をアップロードするたびにサムネイルを生成することです これは望ましくありません。

私はプラグインよりカスタムコードを好むでしょうが、プラグインは受け入れられるでしょう。私はそこにいくつかの画像サイズ変更プラグインがあることを知っていますが、それらは長い間更新されていません(TimThumb、 Dynamic Image Resizer )。

私は 同様の質問 をここWordpress SEで見つけました、しかし受け入れられた答えは本当に私の問題を解決しません。


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

(1) おすすめ画像 :WPで自動生成された追加のサムネイルは問題ありません。

(2) 投稿内で使用されている画像 :元の画像をアップロードし、それ以上のサイズを生成しないでください。アップロードする前に、画像をトリミング、サイズ変更、および最適化します。サイズが自分のニーズに合うようになります。

8
Drunken Master

この関数は、一時的に画像サイズを登録し、必要に応じて画像を生成し、そのサイズで新しい画像が作成されないようにサイズを削除することによって画像を生成します。

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;
}

イメージは必要になるまで生成されないため、「遅延」します。

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

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

2
Mathew Tinsley

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

0
aequalsb

この link を見ることができます。のようないくつかの例があります

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)
}
0
Jakir Hossain

こんにちは - 私は同じような問題を抱えていた。 Woocommerceはカタログと関連商品の画像にカタログ画像を使用します。それは理想的ではありません、あなたが画質またはスピードのどちらかを失うので。だから私は私の関連製品の4番目の画像カテゴリを追加しようとしました。 Howdy McGeeが問題を解決しました。 Howdy McGeesの回答を見てください。

関連製品画像のサイズ変更: 自分のコードを読みます

それは私の必要性のために素晴らしくうまくいった。あなたの問題のために同じ論理が適用されるかもしれません。お役に立てれば。よろしく - theo

私はうまくいく解決策を見つけました。 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
}

注: 'your-thumb'、後でこの変数名を使います

  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
timholz

1. [ダッシュボード]> [設定]> [メディア]に進みます。
2.サムネイルを正確なサイズにクロップする(通常、サムネイルは比例します)のチェックを外します。
3.全入力に0を入力(全サイズに0)
4.これらをあなたの関数に追加します。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.関数にコード行がないことを確認してください。phpで始まるadd_imge_size注::サムネイルに400 x 400のサイズを使用するとします。写真をアップロードすると、2つのバージョンしか作成されません。以前の写真の少なくとも4つのバージョンの代わりに。

0
Trang