कैसे एक छवि अनुलग्नक के Alt पाठ को पुनः प्राप्त करने के लिए?


32

मैं छवियों के बड़े संस्करणों को दिखाने के लिए एक अटैचमेंट.php फ़ाइल का उपयोग कर रहा हूं, जिसे कहीं और क्लिक किया गया है। मैं जावास्क्रिप्ट के साथ छवि के तहत छवि के शीर्ष पाठ को एक कैप्शन के रूप में खींचना चाहता हूं, लेकिन जब wp_get_attachment_image_src () का उपयोग किया जाता है, तो संपूर्ण पाठ शामिल नहीं होता है। मुझे नहीं लगता कि WP में इसे पुनः प्राप्त करने के लिए कोई फ़ंक्शन है, इसलिए मुझे अपनी आवश्यकता है। उस फ़ंक्शन को लिखने के लिए मुझे यह जानना होगा ... एक छवि के लिए ऑल्ट पाठ कहां संग्रहीत किया गया है?

मेरा अनुलग्नक पृष्ठ उपयोग करता है wp_get_attachment_image_src(), जिसमें संपूर्ण पाठ शामिल नहीं है।

<div class = "entry">
<?php 
if ( wp_attachment_is_image( $post->id ) ) : 
    $att_image = wp_get_attachment_image_src( $post->id, "large");?>

    <a href="<?php echo wp_get_attachment_url($post->id); ?>" 
        title="<?php the_title(); ?>" 
        rel="attachment">
    <img class="attached_img" 
        src="<?php echo $att_image[0];?>" 
        width="<?php echo $att_image[1];?>" 
        height="<?php echo $att_image[2];?>"  
        class="attachment-medium" 
        alt="<?php $post->post_excerpt; ?>" />
    </a> 
} <?php endif;?>
</div>

यह दर्शाता है:

<div class = "entry">
    <a href="http://www.example.com/wp-content/uploads/2010/07/photo_namejpg" 
       title="My_Photo_Title" 
       rel="attachment">
       <img class="attached_img" 
            src="http://www.example.com/wp-content/uploads/2010/07/photo_name_and_size.jpg" 
            width="393" 
            height="500"  
            class="attachment-medium" 
            alt="" />
    </a>
</div>  

मुझे पता है कि $post->post_excerptउपरोक्त कोड में बुलाया जा रहा है, लेकिन मुझे यकीन नहीं है कि छवि की पूरी विशेषता प्राप्त करने के लिए इसे क्या बदलना है।

जवाबों:


53

मैं हाल ही में एक ग्राहक परियोजना के लिए कुछ शोध हाल ही में किया था तो लो-एंड-निहारना मैं इसे यहाँ का उपयोग करने के लिए मिल!

पाठ के बाद आप वर्डप्रेस 3.0.1 के भीतर से छवि हैंडलिंग कार्यों की सबसे (सभी?) की एक वर्गीकृत सूची देखेंगे।

वैसे भी, जवाब देने के लिए आपको क्या चाहिए (मुझे लगता है) इसके बजाय आपको जो मांगा गया है ( ठीक है, मैं इसका जवाब दूंगा, वह भी अंत में ) मुझे लगता है कि आपको जो आवश्यकता है वह wp_get_attachment_image()फ़ंक्शन है जो इन विशेषताओं से युक्त एक HTML स्ट्रिंग लौटाएगा:

  • 'src',
  • 'class',
  • 'alt' तथा
  • 'title'

वर्डप्रेस 3.0 इमेज हैंडलिंग फंक्शन्स

तो यहाँ आपके और दूसरे के संदर्भ के लिए वर्डप्रेस की इमेज हैंडलिंग फ़ंक्शंस हैं ( अपने सटीक प्रश्न के उत्तर के लिए नीचे कूदें ):

छवि सहायता / थंबनेल

आसक्ति

MIME प्रकार

अपलोड

फाइल सिस्टम

एचटीएमएल

निम्न स्तर की छवि हैंडलिंग:


जैसा कि वादा किया गया है कि इमेज का 'alt'टेक्स्ट wp_postmetameta_key के साथ एक स्ट्रिंग के रूप में संग्रहीत है'_wp_attachment_image_alt'

जैसा कि आप शायद पहले से ही जानते हैं कि आप इसे एक साधारण के साथ लोड कर सकते हैं get_post_meta()जैसे:

$alt_text = get_post_meta($post->ID, '_wp_attachment_image_alt', true);


1
ठीक है, मैं नहीं कर सकता, लेकिन अभी थोड़ा डोप महसूस करने में मदद करता हूं कि आपने इसे कहा है। मैंने पहले इस्तेमाल किया है wp_get_attachment_imgage()और इसके बारे में पूरी तरह से भूल गया हूं । आप इस बारे में सही हैं कि मुझे क्या लगा कि मुझे वास्तव में जरूरत है। जानकारी के लिए धन्यवाद। आप इस बारे में भी सही हैं कि सर्वोच्च मेटा कहाँ संग्रहीत है ... मैंने उसी स्थान पर देखा, लेकिन इसने मुझे तब भी प्रभावित किया, जब तक कि मैं इसे सही से देख रहा था। यही मुझे दिन के अंत में प्राप्त करने के लिए मिलता है। एक बार फिर धन्यवाद!
kevtrout

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

1
त्वरित प्रश्न: आपने संकेत दिया कि wp_get_attachment_image()छवि src और विशेषताओं की एक सरणी देता है। यह केवल HTML युक्त छवि देता है और इसकी विशेषताएँ हैं। अभी भी काम करता है, बस पता नहीं था अगर आप फ़ंक्शन रेफ पर कुछ के बारे में पता नहीं थे: codex.wordpress.org/Function_Reference/wp_get_attachment_image
kevtrout

1
@ माइक - एक सरणी के रूप में wp_get_attachment_image के बारे में नोट अपडेट करने के लिए बस एक त्वरित अनुस्मारक - जिसने मुझे थोड़ा स्टम्प किया :)। उत्कृष्ट उत्तर अन्यथा!
जोनाथन वॉल्ड

1
बहुत विस्तृत जवाब, अच्छा किया!
बास वैन डेजक

5

देखने पर विचार करें wp_prepare_attachment_for_js( $attachment ), जहां $attachmentअनुलग्नक का WP_Post ऑब्जेक्ट स्वयं है।

यह एक "किचन सिंक" फ़ंक्शन का एक सा है, लेकिन यह मेटाडेटा के एक टन के साथ एक बहुत अच्छा हैश प्रदान करता है, जिसमें 'ऑल्ट' भी शामिल है:

$response = array(
        'id'          => $attachment->ID,
        'title'       => $attachment->post_title,
        'filename'    => wp_basename( $attachment->guid ),
        'url'         => $attachment_url,
        'link'        => get_attachment_link( $attachment->ID ),
        'alt'         => get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true ),
        'author'      => $attachment->post_author,
        'description' => $attachment->post_content,
        'caption'     => $attachment->post_excerpt,
        'name'        => $attachment->post_name,
        'status'      => $attachment->post_status,
        'uploadedTo'  => $attachment->post_parent,
        'date'        => strtotime( $attachment->post_date_gmt ) * 1000,
        'modified'    => strtotime( $attachment->post_modified_gmt ) * 1000,
        'menuOrder'   => $attachment->menu_order,
        'mime'        => $attachment->post_mime_type,
        'type'        => $type,
        'subtype'     => $subtype,
        'icon'        => wp_mime_type_icon( $attachment->ID ),
        'dateFormatted' => mysql2date( get_option('date_format'), $attachment->post_date ),
        'nonces'      => array(
            'update' => false,
            'delete' => false,
            'edit'   => false
        ),
        'editLink'   => false,
        'meta'       => false,
    );

यह विशेष रूप से उपयोगी है (जैसा कि नाम का अर्थ है), अनुलग्नक छवि मेटा को wp.media व्यू के माध्यम से भेजने के लिए wp_send_ajax(), लेकिन इसका मतलब यह नहीं है कि आप इसे अन्य प्रयोजनों के लिए उपयोग नहीं कर सकते हैं।

मैं _wp_attachment_image_altपोस्ट मेटा फ़ील्ड से दूर रहना पसंद करता हूं , अगर कभी भी अधिकतम पाठ को पुनः प्राप्त करने की विधि बदल जाती है (अप्रत्याशित, लेकिन बोधगम्य)।

मुझे लगता है कि wp_get_attachment_image_alt()हालांकि एक विधि के लिए एक मामला है ।


ठीक वही जो मेरे द्वारा खोजा जा रहा था। क्या किसी को इसके प्रदर्शन का अंदाजा है? कई अलग-अलग मूल्यों के साथ यह पुनः प्राप्त करता है ... मुझे आश्चर्य है ...
लार्ज़न

@ लार्जन मैं प्रदर्शन के बारे में चिंता नहीं करता - जब तक कि आप एक ही समय में सैकड़ों छवियों का डेटा प्राप्त नहीं कर रहे हों ...
टॉम ऑगर

4

निश्चित रूप से माइक का उत्तर सही है, लेकिन $alt_text = get_post_meta($post->ID, '_wp_attachment_image_alt', true);एक खाली स्ट्रिंग लौटा सकता है।

wp_get_attachment_image , हालांकि, हमेशा एक alt_text प्राप्त करता है।

Wordpress टीम निम्नलिखित ट्रिक को लागू करती है, पहले, post_except के लिए जाँच करती है, फिर शीर्षक प्राप्त करती है।

if(empty($alt_text)) // If not, Use the Caption
{
    $attachment = get_post($post->ID);
    $alt_text = trim(strip_tags( $attachment->post_excerpt ));
}
if(empty($alt_text)) // Finally, use the title
{ 
    $attachment = get_post($post->ID);
    $alt_text = trim(strip_tags( $attachment->post_title )); 
}

2

मुझे पता चला कि संलग्नक के लिए Alt पाठ एक कस्टम मेटा पर संग्रहीत किया गया था जिसे "_wp_attachment_iment_il" कहा जाता है

इसलिए अटैचमेंट की आईडी होने पर, मैं इस कोड के साथ ऑल्ट टेक्स्ट प्राप्त करने में सक्षम था:

<?php echo get_post_meta($attachment_id, '_wp_attachment_image_alt', true) ?>

0

यदि आप WP_Customize_Media_Control () का उपयोग कर रहे हैं तो आपका get_theme_mod () पोस्ट आईडी वापस कर देगा लेकिन यदि आप नए WP_Customize_Image_Control () get_theme_mod () का उपयोग कर रहे हैं, तो छवि url का उपयोग करते हुए पूरी तरह से प्राप्त करने में सक्षम था। ()

यहाँ है कि मैं इसे कैसे कर पा रहा था। उम्मीद है कि इससे वहां किसी को मदद मिलेगी

// This is getting the image / url
$feature1 = get_theme_mod('feature_image_1');

// This is getting the post id
$feature1_id = attachment_url_to_postid($feature1);

// This is getting the alt text from the image that is set in the media area
$image1_alt = get_post_meta( $feature1_id, '_wp_attachment_image_alt', true );

मार्कअप

<a href="<?php echo $feature1_url; ?>"><img class="img-responsive center-block" src="<?php echo $feature1; ?>" alt="<?php echo $image1_alt; ?>"></a>

0

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

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