केवल तब ही थंबनेल प्रदर्शित होता है जब अनुरोधित आकार मौजूद होता है


10

जब मैं उन कार्यों का उपयोग करता हूं जो पोस्ट थंबनेल प्राप्त करते हैं और आउटपुट करते हैं, तो वे आपके द्वारा निर्दिष्ट आकार में अनुरोधित थंबनेल प्रदर्शित करेंगे, लेकिन यदि यह आकार मौजूद नहीं है, तो वे थंबनेल को मूल आकार में प्रदर्शित करेंगे और ब्राउज़र को इसे आकार देने के लिए मजबूर करेंगे।

यदि अनुरोधित आकार मौजूद नहीं है, तो मैं उन्हें "नो इमेज" जैसे प्लेसहोल्डर को प्रदर्शित करने के लिए कैसे मजबूर कर सकता हूं?


1
क्या आप पंजीकृत थंबनेल आकारों के बारे में बात कर रहे हैं या आप पिक्सेल में मनमाने ढंग से गैर-पंजीकृत आकार प्राप्त करने की कोशिश कर रहे हैं? कृपया कोड उदाहरण?
रारस्ट

पंजीकृत आकारों के बारे में
एलेक्स

जवाबों:


2

मान लिया गया है कि प्रश्न के बारे में है wp_get_attachment_image_src
यह भी हो सकता है wp_get_attachment_link, लेकिन, हालांकि, संबंधित, इस विश्लेषण में यह शामिल नहीं है।


इस प्रश्न का उत्तर देते हुए इस मुद्दे से अवगत हुआ : मैं मीडिया मैनेजर के सभी WP जनरेट किए गए थंबनेल कैसे देख सकता हूं? इस प्रश्न पर
समस्या के संबंध में एक कार्य कोड देखने के लिए इसे देखें ।

और यह इस वर्डप्रेस फोरम विषय का नेतृत्व करता है ।


फ़ंक्शन wp_get_attachment_image_src ($ अनुलग्नक_id, $ आकार, $ आइकन) एक सरणी देता है:

[0] => url  
[1] => width  
[2] => height  
[3] => is intermediate

यदि [3]गलत है, तो originalछवि डेटा वापस आ जाता है।


दोनों wp_get_attachment_image_src और wp_get_attachment_linkसमारोह में image_downsize, अंदर भरोसा करते हैं /wp-includes/media.php
और यहीं से इस 4 आइटम ऐरे को वापस किया जा रहा है।


1

मैं इस बारे में निश्चित नहीं हूं, लेकिन मैं जानता हूं कि आप php के getimagesize () का उपयोग कुछ इस तरह कर सकते हैं:

//This must be in one loop

if(has_post_thumbnail()) {
    $wanted_width = 300;
    $wanted_height = 150;
    $id = get_post_thumbnail_id()
    $image = wp_get_attachment_image_src($id);
    if ($image){
        list($width, $height) = getimagesize($image[0]);
        if (($wanted_height = $width) && ($wanted_height = $height)){
            the_post_thumbnail();
        }
        else{
            //default when no image
            echo '<img src="'.get_bloginfo("template_url").'/images/img-default.png" />';
        }
    }
    else{
        //default when no image
        echo '<img src="'.get_bloginfo("template_url").'/images/img-default.png" />';
    }
} else {
    //default when no image
    echo '<img src="'.get_bloginfo("template_url").'/images/img-default.png" />';
}

और मुझे पता है कि यह सीधे सवाल का जवाब नहीं है, लेकिन आप AJAX Thumbnail Rebuild नाम के एक प्लगइन का उपयोग कर सकते हैं - यह प्लगइन आपको पोस्ट थंबनेल को फिर से बनाने की अनुमति देता है। यदि आप पहले से अपलोड किए गए पोस्ट थंबनेल के बाद add_image_size () जोड़ते हैं तो उपयोगी है।


1

यह है कि मैं केवल एक थम्बनेल प्रदर्शित करने में सक्षम था अगर एक अनुरोधित आकार मौजूद है:

if ( has_post_thumbnail() )  {
    $imgdata = wp_get_attachment_image_src( get_post_thumbnail_id(), 'thumbnail' ); //change thumbnail to whatever size you are using
    $imgwidth = $imgdata[1]; // thumbnail's width                   
    $wanted_width = 300; //change this to your liking
    if ( ($imgwidth < $wanted_width ) ) {
        the_post_thumbnail();
    } else { 
        //do whatever you want
    }
}

wp_get_attachment_image_srcकोडेक्स पढ़ने के बारे में अधिक जानने के लिए ।


0

एक प्लगइन है जो वास्तव में आपके लिए स्वचालित रूप से छवि आकार बनाएगा यदि यह मौजूद नहीं है। http://austinmatzko.com/wordpress-plugins/filosofo-custom-image-sizes/

मुझे स्वयं इस प्लगइन का उपयोग करने की आवश्यकता नहीं है। लेकिन यह एक शॉट के लायक है। WP कोर में समान कार्यक्षमता जोड़ने के बारे में बात है, शायद 3.2 http://core.trac.wordpress.org/ticket/15311 में


0

यह एक बेहतर तरीका प्रतीत होता है। वैश्विक चर $ _wp_additional_image_sizes का उपयोग करें, यह सभी पंजीकृत छवि_साइज़ को संग्रहीत करता है। इसलिए यदि आप जांचना चाहते हैं कि क्या छवि का आकार नाम परिभाषित है:

  global $_wp_additional_image_sizes;
  if ( array_key_exists( 'desired-image-size' , $_wp_additional_image_sizes) )
  {
    //your code here
  }
  else
  {
    //default code here 
  }

0

सबसे अच्छा तरीका यह है कि Wordpress की अंतर्निहित "get_intermediate_image_sizes" फ़ंक्शन का उपयोग करके छवि आकार की पूरी सूची को एक सरणी के रूप में वापस करने के लिए फ़ंक्शन देखें।

show_image_by_size( 10470, 'custom_size' );

function show_image_by_size( $_post_id, $_desired_size ) {
  $_sizes = get_intermediate_image_sizes();
  $_thumbnail_id = get_post_thumbnail_id( $_post_id );
  $_image_size = ( in_array( $_desired_size , $_sizes ) ) ? $_desired_size : 'full';
  $image = wp_get_attachment_image_src( $_thumbnail_id, $_image_size );
  echo '<img src="' . esc_url( $image[0] ) . '" />';
}

-1

शायद इससे मदद मिलेगी

<?php 
//This must be in a loop
if(has_post_thumbnail()) {
    the_post_thumbnail();
} else {
    echo '<img src="'.get_bloginfo("template_url").'/images/img-default.png" />';
}
?>

से: http://codex.wordpress.org/Function_Reference/has_post_thumbnail
मैं कुछ इस तरह का उपयोग करता हूं कि यह जांचने के लिए कि क्या छवि का आकार मौजूद है:

if (function_exists('has_post_thumbnail') && has_post_thumbnail('medium')) {
//// code to display thumbnail goes here
}
else {
/// otherwise do this
}

आशा है कि यह आपको जाने में मदद करेगा।

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