केवल चित्रित छवियों के लिए थंबनेल जेनरेट करें


10

मैं यह जानना चाहूंगा कि क्या केवल छवियों के लिए थंबनेल आकार बनाने का एक सरल तरीका (कस्टम कोड या प्लगइन) है जो कि मैं चित्रित छवियों (index.php, आर्काइव.फैप, आदि) के रूप में उपयोग करने का इरादा रखता हूं , लेकिन छवियों के लिए नहीं। पदों में प्रयुक्त (single.php)। मेरा मुख्य लक्ष्य थ्रोबेल न बनाकर सर्वर स्पेस उपयोग को कम करना है जो मेरी थीम कभी उपयोग नहीं करेगी।

मेरे थंबनेल वास्तव में केवल दो आकार होंगे, 720px चौड़े और 328px चौड़े, और 720px चौड़े चित्रित चित्र (केवल मुखपृष्ठ) में एक 328px चौड़ा एक (आर्काइव के लिए भी होगा ।php और sidebar.php)

वर्तमान में, मुझे पता है कि एक ही प्रोग्रामेटिक तरीका है , जो हर इमेज अपलोड के लिए थंबनेल जेनरेट करता है , जो अवांछनीय है, क्योंकि मेरे ज्यादातर अपलोड पोस्ट इमेज होंगे और मुझे सर्वर से बहुत सारी इमेज को मैन्युअल रूप से डिलीट करना होगा।

मैं प्लगइन्स पर कस्टम कोड पसंद करूंगा, लेकिन एक प्लगइन स्वीकार्य होगा। मुझे पता है कि प्लगइन्स का आकार बदलने वाले कुछ चित्र हैं, लेकिन वे एक लंबे समय में अपडेट नहीं किए गए हैं (टिमथुम्ब, डायनेमिक इमेज रिसाइज़र )।

मुझे भी Wordpress SE पर एक समान प्रश्न मिला है , लेकिन स्वीकृत उत्तर वास्तव में मेरी समस्या का समाधान नहीं करता है।


संपादित करें: मुझे पोस्ट के अंदर छवियों के लिए थंबनेल को हटाने या रोकने की आवश्यकता है, विशेष रुप से प्रदर्शित छवियों के लिए नहीं, अर्थात:

(1) विशेष रुप से प्रदर्शित चित्र : WP द्वारा स्वतः उत्पन्न अतिरिक्त थंबनेल ठीक हैं।

(२) पदों के अंदर उपयोग की जाने वाली छवियां : मूल छवि अपलोड करें और कोई अतिरिक्त आकार उत्पन्न न करें। मैं इसे अपलोड करने से पहले छवि को क्रॉप, आकार और ऑप्टिमाइज़ करूंगा और एक आकार मेरी आवश्यकताओं के अनुरूप होगा।



1
सबसे पहले, यह संभव डुप्लिकेट कहते हैं ; दूसरी बात, यह आपकी समस्या को हल करने में आपकी मदद कर सकता है, क्योंकि आप संभवतः इसे अपनी आवश्यकताओं के अनुरूप बना सकते हैं; पिछले नहीं बल्कि कम से कम, वहाँ एक जवाब है "डायनेमिक छवि Resizer« प्लग-इन, हालांकि यह एक अलग है।
निकोलई

2
इसमें गोता लगाने का समय नहीं है, लेकिन आप जो जानते हैं वह थंबनेल आईडी - मेटा कुंजी है: _thumbnail_id-, जो वास्तव में पर्याप्त होना चाहिए, save_postऔर इसी तरह के हुक जाने का एक तरीका हो सकता है। लेकिन यह मत भूलो कि आपके पोस्ट में उन छवियों को थंबनेल के रूप में अन्य पोस्ट में उपयोग किया जा सकता है, आप चाहते हैं कि उसके लिए एक तंत्र हो सकता है।
निकोलई

1
आपने जो लिखा है, उसे देखते हुए, आपको चित्रित छवि के लिए अतिरिक्त आकारों से कोई आपत्ति नहीं है, मैं अधिक सोच रहा था: यदि आप जानते हैं कि कौन सी संलग्न चित्र पोस्ट थंबनेल / फ़ीचर्ड छवि है, तो आप दूसरों के लिए अतिरिक्त छवि आकार हटा सकते हैं , उस प्रक्रिया से चित्रित छवि को छोड़कर। मैंने पहले एक संभावित प्रतिबंध / कमी का उल्लेख किया था।
निकोलाई

1
सुझाव: पूरी तरह से के माध्यम से अक्षम आकार बदलने 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वांछित आकार की एक छवि प्राप्त करने के लिए थम्बनेल आईडी के साथ कॉल करेंगे । पहली कॉल पर एक छवि बनाई जाएगी। बाद की कॉलें मौजूदा छवि प्राप्त करेंगी।

Gist: 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
मुझे केवल कुछ छवियों के लिए थंबनेल चाहिए, मेरे द्वारा अपलोड की जाने वाली हर चीज के लिए नहीं। असल में, जब मैं एक छवि अपलोड करता हूं तो मैं यह नियंत्रित करना चाहता हूं कि क्या थंबनेल बनाए जाते हैं या नहीं।
मार्क

लेकिन क्यों? भंडारण स्थान एक मुद्दा है? वास्तव में यह कल्पना करना कठिन है कि जब इतना भंडारण स्थान उपलब्ध है।
अप्रतिम

0

1.Google को डैशबोर्ड> सेटिंग्स> मीडिया
2. सटीक क्रॉप थंबनेल सटीक आयामों के लिए (सामान्य रूप से थंबनेल समानुपातिक हैं)
3. सभी इनपुट के लिए 0 (सभी आकार के लिए 0)
4. अपने कार्यों में ये जोड़ें।

// 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. सुनिश्चित करें कि आपके कार्यों में कोई कोड लाइन नहीं है। add_imge_size नोट के साथ शुरू करें :: मुझे लगता है कि आप अपने थंबनेल के लिए 400x400 के आकार का उपयोग करते हैं। अब जब आप एक फोटो अपलोड करते हैं, तो यह कम से कम 4 संस्करणों के फोटो के बजाय केवल 2 संस्करण बनाएगा पहले की तरह।


0

केवल कुछ छवियों के लिए अतिरिक्त आकार बनाने से वर्डप्रेस को रोकने के लिए, आपके पास यह इंगित करने का एक तरीका होगा कि आप जिस छवि के बारे में अपलोड कर रहे हैं वह केवल एक विशेष उद्देश्य के लिए उपयोग की जाएगी। ऐसा होना चाहिए क्योंकि आपने इसे अपलोड किया है।

चूंकि अपलोड एक्शन के दौरान ऐसे विकल्पों को इंगित करने के लिए ऐसा कोई इंटरफ़ेस (आउट-ऑफ-द-बॉक्स) नहीं है, तो आप अतिरिक्त छवि निर्माण को रोक नहीं सकते हैं - जब तक कि कोई प्लगइन नहीं था जो इस सुविधा को जोड़ता था।

लेकिन दुनिया में आप अतिरिक्त छवि आकार क्यों नहीं चाहेंगे? जब आप किसी भी छवि का एक अलग आकार का उपयोग करना चाहते हैं तो आपको कभी भी ऐसी स्थिति का सामना नहीं करना पड़ेगा। क्या आप संग्रहण स्थान के बारे में चिंतित हैं?

क्या आप इस तरह से अपने विशिष्ट आकार के चश्मे का उपयोग नहीं कर सकते हैं? the_post_thumbnail( array(100, 100) );

अधिकांश उत्तर और टिप्पणियाँ जो मैंने यहां पढ़ी हैं, वे बताते हैं कि छवि आकारों के लिए वर्डप्रेस पर्यावरण को कैसे अनुकूलित किया जाए, लेकिन कोई भी इसे सशर्त रूप से करने का उल्लेख नहीं करता है। इसके अलावा, उनमें से कोई भी इस तथ्य को संबोधित नहीं करता है जिसे अपलोड करने से पहले आपको किसी छवि के उपयोग का संकेत देने में सक्षम होना चाहिए।

यदि आप किसी पोस्ट में बहुत छोटी छवि या बहुत बड़ी छवि के लिए क्षतिपूर्ति करने का प्रयास कर रहे हैं, तो आप कुछ चीजों का उपयोग कर सकते हैं।

  1. CSS: आप अपनी स्टाइलशीट में प्रविष्टियाँ जोड़ सकते हैं जैसे .post-entry img { max-width:200px; max-height:300px; }, यह छवि के आकार पर निर्भर होने की तुलना में अधिक सार्वभौमिक और प्रभावी है - यह फ़ोटोशॉप समय का एक बहुत कुछ है।

  2. टेम्पलेट: आप टेम्पलेट फ़ाइल को बदल सकते हैं जहां HTML आउटपुट पोस्ट किए जा रहे हैं और इस तरह की छवि का आकार निर्दिष्ट करें:

इस दस्तावेज़ को वर्डप्रेस पर देखें: https://codex.wordpress.org/Function_Reference/the_post_thumbnail


0

हाय - मुझे भी ऐसी ही समस्या थी। WooCommerce कैटलॉग और संबंधित उत्पाद छवियों के लिए कैटलॉग छवियों का उपयोग करता है। यह आदर्श नहीं है, आपके लिए या तो छवि गुणवत्ता या गति ढीली है। इसलिए मैंने अपने संबंधित उत्पादों के लिए चौथी छवि श्रेणी जोड़ने की कोशिश की। होवी मैक्गी ने समस्या हल कर दी है। कृपया हॉडी मैकगिस के जवाब पर एक नज़र डालें:

संबंधित उत्पाद छवि संशोधित करें: उसका कोड पढ़ें !

इसने मेरी जरूरतों के लिए शानदार काम किया है। आपकी समस्या के लिए वही तर्क लागू किया जा सकता है। उम्मीद है की यह मदद करेगा।

सादर,

थियो

** जोड़: **

मुझे एक समाधान मिला जो काम करता है।

चरण 1: अपने फ़ंक्शन में एक नया थंबनेल आकार असाइन करें। संदर्भ देखें: wp कोडेक्स !

/*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
}

नोट: 'आपका-अंगूठा', आप बाद में इस चर नाम का उपयोग करेंगे

चरण 2: फिर निम्नलिखित कोड जोड़ें जहाँ आप अपने विशेष रुप से प्रदर्शित उत्पादों को प्रदर्शित करना चाहते हैं:

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

संदर्भ और जानकारी: ( www.haloseeker.com/display-woocommerce-featured-products-without-a-shortcode/ )

मैंने इसे वूटहेम मिस्टाइल के 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>

चरण 3: थंबनेल पुन : बनाएँ, प्लगइन का उपयोग करें https://wordpress.org/plugins/regenerate-thumbnails/

चरण 4: ब्राउज़र को ताज़ा करें और DOM का निरीक्षण करें और मूल्यों की तुलना करें

अपनी थीम के अनुसार आप मार्क अप और क्लास के नाम बदल सकते हैं। मैंने उपरोक्त विधि का परीक्षण किया और यह अच्छी तरह से काम करता है।

केवल एक चीज जो मैं अब तक नहीं कर सका, वह है एड-टू-कार्ट-बटन जोड़ना, क्योंकि मुझे नहीं पता कि ऐड टू कार्ट बटन शोर्ट में एक चर कैसे लिखना है। यह कोड है:

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

आशा है कि ये आपकी मदद करेगा।

ऐसा करने के लिए निश्चित रूप से अधिक सुरुचिपूर्ण तरीका है। उदाहरण के लिए function.php में एक फंक्शन के साथ

सादर,

थियो

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.