Buat Gambar Kecil hanya untuk Gambar Unggulan

9

Saya ingin tahu apakah ada cara sederhana (kode atau plugin khusus) untuk membuat ukuran thumbnail hanya untuk gambar yang ingin saya gunakan sebagai gambar unggulan (index.php, archive.php, dll.), Tetapi tidak untuk gambar digunakan dalam posting (single.php). Tujuan utama saya adalah mengurangi penggunaan ruang server dengan tidak membuat thumbnail yang tidak akan pernah digunakan tema saya.

Thumbnail saya sebenarnya hanya memiliki dua ukuran, lebar 720px dan lebar 328px, dan gambar berfitur lebar 720px (hanya beranda) juga memiliki lebar 328px (untuk archive.php dan sidebar.php)

Saat ini, satu-satunya cara terprogram yang saya tahu adalah membuat thumbnail untuk setiap unggahan gambar , yang tidak diinginkan, karena sebagian besar unggahan saya akan memposting gambar dan saya harus menghapus banyak gambar dari server secara manual.

Saya lebih suka kode khusus daripada plugin, tetapi sebuah plugin akan diterima. Saya tahu ada beberapa plugin untuk mengubah ukuran gambar di luar sana, tetapi mereka belum memperbarui dalam waktu lama (TimThumb, Dynamic Image Resizer ).

Saya juga menemukan pertanyaan serupa di Wordpress SE, tetapi jawaban yang diterima tidak benar-benar menyelesaikan masalah saya.


EDIT: Saya perlu menghapus atau mencegah thumbnail untuk gambar di dalam posting, bukan untuk gambar unggulan, yaitu:

(1) Gambar unggulan : thumbnail tambahan yang dibuat secara otomatis oleh WP tidak masalah.

(2) Gambar yang digunakan di dalam tulisan : Unggah gambar asli dan jangan buat ukuran tambahan apa pun. Saya akan memotong, mengubah ukuran, dan mengoptimalkan gambar sebelum mengunggahnya dan satu ukuran akan sesuai dengan kebutuhan saya.

imrek
sumber
1
Pertama, itu mengatakan kemungkinan duplikat ; kedua, ini mungkin membantu Anda untuk menyelesaikan masalah Anda, karena Anda mungkin dapat membuatnya sesuai dengan kebutuhan Anda; last but not least, ada jawaban untuk plug-in «Dynamic Image Resizer« plug-in, meskipun itu berbeda.
Nicolai
2
Tidak ada waktu untuk menyelam ke dalamnya, tetapi yang Anda tahu adalah id thumbnail - kunci meta: _thumbnail_id-, yang seharusnya cukup sebenarnya, save_postdan kait serupa bisa menjadi cara untuk pergi. Tapi jangan lupa bahwa gambar-gambar dalam posting Anda dapat digunakan dalam posting lain sebagai thumbnail, Anda mungkin ingin memiliki mekanisme untuk menjelaskannya.
Nicolai
1
Mempertimbangkan apa yang Anda tulis, Anda tidak keberatan dengan ukuran tambahan untuk gambar yang ditampilkan, saya lebih berpikir: Jika Anda tahu gambar mana yang dilampirkan dari gambar kecil post thumbnail / fitur, maka Anda dapat menghapus ukuran gambar tambahan untuk yang lain. , dengan mengecualikan gambar unggulan dari proses itu. Saya menyebutkan satu kemungkinan pembatasan / kekurangan sebelumnya.
Nicolai
1
Saran: nonaktifkan pengubahan ukuran sepenuhnya melalui add_filter('intermediate_image_sizes_advanced', '__return_false')dan kemudian ubah ukuran gambar mini saat
bepergian

Jawaban:

2

Fungsi ini akan menghasilkan gambar dengan mendaftarkan sementara ukuran gambar, menghasilkan gambar (jika perlu) dan menghapus ukuran sehingga gambar baru tidak akan dibuat dalam ukuran itu.

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

Ini "malas" karena gambar tidak dihasilkan sampai dibutuhkan.

Dalam kasus penggunaan Anda, Anda akan menyebutnya lazy_image_sizedengan ID thumbnail thumbnail posting untuk mendapatkan gambar dengan ukuran yang diinginkan. Sebuah gambar akan dihasilkan pada panggilan pertama. Panggilan selanjutnya akan mengambil gambar yang ada.

Intisari: https://gist.github.com/mtinsley/be503d90724be73cdda4

Mathew Tinsley
sumber
0

Anda dapat melihat tautan ini . ada beberapa contohnya seperti

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)
}
Jakir Hossain
sumber
2
Saya membutuhkan thumbnail hanya untuk gambar tertentu, bukan untuk semua yang saya unggah. Pada dasarnya, ketika saya mengunggah gambar, saya ingin mengontrol apakah thumbnail dibuat atau tidak.
imrek
tapi kenapa? Apakah ruang penyimpanan menjadi masalah? sangat sulit membayangkan bahwa ketika ada begitu banyak ruang penyimpanan yang tersedia.
aequalsb
0

1. Pergi ke Dasbor> Pengaturan> Media
2. Hapus centang Pangkas gambar kecil ke dimensi yang tepat (biasanya gambar kecil bersifat proporsional)
3. Masukkan 0 untuk semua input (0 untuk semua ukuran)
4. Tambahkan ini ke fungsi Anda.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. Pastikan tidak ada baris kode di functions.php Anda mulai dengan add_imge_size Catatan:: Saya kira Anda menggunakan ukuran 400x400 untuk thumbnail Anda Sekarang ketika Anda mengunggah foto, itu akan membuat hanya 2 versi daripada setidaknya 4 versi foto seperti sebelumnya.

Trang
sumber
0

Hai - saya punya masalah serupa. Woocommerce menggunakan gambar katalog untuk katalog dan gambar produk terkait. Itu tidak ideal, untuk Anda kehilangan kualitas gambar atau kecepatan. Jadi saya mencoba menambahkan kategori gambar keempat untuk produk terkait saya. Howdy McGee telah memecahkan masalah. Silakan lihat jawaban Howdy McGees:

Ubah Ukuran Gambar Produk Terkait: baca kodenya !

Ini bekerja dengan baik untuk kebutuhan saya. Untuk masalah Anda, logika yang sama dapat diterapkan. Semoga ini membantu. salam - theo

Saya menemukan solusi yang berfungsi. 1.step: tentukan ukuran thumbnail baru di functions.php Anda. Periksa referensi: 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
}

Catatan: 'jempol Anda', Anda akan menggunakan nama variabel ini nanti

  1. langkah: Kemudian tambahkan kode berikut di mana pun Anda ingin menampilkan produk unggulan Anda:

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

Referensi dan info: tidak cukup reputasi untuk tautan ketiga, maaf (www.haloseeker.com/display-woocommerce-featured-products-without-a-shortcode/) Saya menempatkannya di index.php (beranda saya) dari wootheme mystile . Jangan lupa untuk menggunakan 'jempol Anda' on line:

<?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. langkah: membuat ulang thumbnail, gunakan plugin https://wordpress.org/plugins/regenerate-thumbnails/

  2. menyegarkan peramban dan periksa dom dan bandingkan nilainya

Menurut tema Anda, Anda dapat mengubah mark up dan nama kelas. Saya testet metode di atas dan itu bekerja dengan baik. Satu-satunya hal yang saya tidak bisa lakukan sejauh ini adalah menambahkan tombol add-to-cart, karena saya tidak tahu bagaimana menulis variabel ke dalam shortcode tombol add to cart. Ini kodenya:

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

Saya harap ini membantu. Tentu ada cara yang lebih elegan untuk melakukan ini. Misalnya dengan fungsi di functions.php

salam theo

timholz
sumber
0

untuk mencegah WordPress membuat ukuran tambahan hanya untuk gambar-gambar tertentu, Anda harus memiliki cara untuk menunjukkan bahwa gambar yang Anda unggah TENTANG akan digunakan hanya untuk tujuan tertentu. ini harus terjadi SEBELUM Anda mengunggahnya.

karena tidak ada antarmuka seperti itu (out-of-the-box) untuk menunjukkan opsi seperti itu selama tindakan unggahan, maka Anda tidak dapat mencegah pembuatan gambar tambahan - kecuali ada plugin yang menambahkan fitur ini.

tetapi mengapa di dunia Anda tidak ingin ukuran gambar tambahan? Anda tidak pernah tahu kapan Anda menghadapi situasi ketika Anda ingin menggunakan ukuran gambar yang berbeda. apakah Anda khawatir tentang ruang penyimpanan?

Tidak bisakah Anda menggunakan spesifikasi ukuran spesifik Anda sendiri seperti ini? the_post_thumbnail( array(100, 100) );

sebagian besar jawaban dan komentar yang saya baca di sini menjelaskan cara menyesuaikan lingkungan WordPress untuk ukuran gambar, tetapi tidak ada yang menyebutkan melakukannya secara kondisional. selain itu, tidak ada satupun dari mereka yang menunjukkan fakta bahwa Anda harus dapat menunjukkan penggunaan suatu gambar sebelum Anda mengunggahnya.

jika Anda mencoba untuk mengkompensasi gambar yang terlalu kecil atau gambar yang terlalu besar dalam sebuah posting, Anda dapat memanfaatkan beberapa hal.

  1. CSS: Anda dapat menambahkan entri ke stylesheet Anda seperti .post-entry img { max-width:200px; max-height:300px; }, ini lebih universal dan efektif daripada mengandalkan ukuran gambar itu sendiri - ITULAH BANYAK waktu photoshop.

  2. Templat: Anda dapat mengubah file templat tempat pos keluaran HTML dihasilkan dan menentukan ukuran gambar seperti ini:

lihat dokumentasi ini di WordPress: https://codex.wordpress.org/Function_Reference/the_post_thumbnail

aequalsb
sumber