इमेज टाइटल / ऑल्ट एट्रीब्यूट कैसे प्राप्त करें?


17

मेरे श्वेत विषय में, होम स्लाइडर पोस्ट के लिए कोई भी उच्चतम विशेषता कॉन्फ़िगर नहीं की गई है। मैंने मीडिया लाइब्रेरी इंटरफ़ेस के माध्यम से छवि के लिए संपूर्ण पाठ जोड़ा। मैंने ऐल्ट टेक्स्ट / विशेषता प्रदर्शित करने के लिए निम्न कोड जोड़ा है। लेकिन यह प्रदर्शित नहीं होता है:

<img class="homepage-slider_image" src="http://www.blabla.com/wp-content/uploads/2013/06/cms-website4-1800x800.jpg" alt="" />

यहाँ कोड है:

<?php
  $image = get_post_meta(get_the_ID(), WPGRADE_PREFIX.'homepage_slide_image', true);
  if (!empty($image)) {
    $image = json_decode($image);
    $image_alt = get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true);
    if ( empty( $image_alt )) {
      $image_alt = $attachment->post_title;
    }
    if ( empty( $image_alt )) {
      $image_alt = $attachment->post_excerpt;
    }
    $image_title = $attachment->post_title;
    $image_id = $image->id;
    $image = wp_get_attachment_image_src( $image_id, 'blog-huge', false);
    echo '<img class="homepage-slider_image" src="'.$image[0].'" alt="'. $image_alt .'" />';
  }
?>

1
आप पोस्ट मेटा पाने की कोशिश कर रहे हैं, $attachment->IDलेकिन मैं $attachmentआपके कोड में ऑब्जेक्ट के बारे में कोई जानकारी नहीं देख सकता ।
साइबरमेट जू

@cybmeta मुझे यह कोड स्निपेट यहाँ से मिल गया है। wordpress.stackexchange.com/questions/185396/…
Nisha_at_Behance

आप प्लगइन्स का उपयोग भी कर सकते हैं जैसे 1) wordpress.org/plugins/imageseo 2) wordpress.org/plugins/… 3) wordpress.org/plugins/auto-image-alt मुझे आशा है कि यह मदद करता है!
जेम्स

जवाबों:


18

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

// An attachment/image ID is all that's needed to retrieve its alt and title attributes.
$image_id = get_post_thumbnail_id();

$image_alt = get_post_meta($image_id, '_wp_attachment_image_alt', TRUE);

$image_title = get_the_title($image_id);

एक बोनस के रूप में यहाँ एक छवि src को कैसे पुनः प्राप्त करें। उपरोक्त विशेषताओं के साथ, हमें एक स्थिर छवि का मार्कअप बनाने की आवश्यकता है।

$size = 'my-size' // Defaults to 'thumbnail' if omitted.

$image_src = wp_get_attachment_image_src($image_id, $size)[0];

मुझे आपके उत्तर और अन्य में अंतर नहीं मिलता है। प्रश्न में समस्या यह थी कि अटैचमेंट आईडी सही नहीं थी, और इसका उत्तर है। इसके अतिरिक्त, आपके उत्तर में, आपको वर्तमान पोस्ट के थंबनेल के लिए आईडी मिलती है, लेकिन वांछित अनुलग्नक के लिए नहीं। इसलिए यह ओपी के सवाल का जवाब / हल नहीं करता है।
साइबरमेट

जहां से आपको अपनी छवि आईडी मिलती है, वह आपके ऊपर है। लेकिन वैसे भी downvote के लिए धन्यवाद। विशेष रूप से अच्छा है कि आप मेरे उत्तर को अपने में चिपकाएँ।
लीमैनक्स

25

आपकी समस्या यह है कि आप कार्य get_post_meta()और get_the_title()कार्यों के लिए सही अनुलग्नक की आईडी प्रदान नहीं कर रहे हैं ।

altछवि का पाने के लिए यह आपका कोड है :

$image_alt = get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true);

और यह सही है, लेकिन $attachment->IDआपके कोड में परिभाषित नहीं है, इसलिए, फ़ंक्शन कुछ भी वापस नहीं करता है।

अपना कोड पढ़ते हुए, ऐसा लगता है कि आप छवि की आईडी को मेटा फ़ील्ड के रूप में संग्रहीत करते हैं और फिर आप इसे इस कोड के साथ प्राप्त करते हैं:

$image = get_post_meta(get_the_ID(), WPGRADE_PREFIX.'homepage_slide_image', true);

इसलिए, यह मानते हुए कि $image->idयह आपके कोड में सही है, आपको इसे प्रतिस्थापित करना चाहिए:

$image_alt = get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true);

साथ में:

$image_alt = get_post_meta( $image->id, '_wp_attachment_image_alt', true);

यह altशीर्षक पाने के लिए है:

 $image_title = get_the_title( $image->id );

4

मैं छवि अनुलग्नक डेटा प्राप्त करने के लिए अपने सभी विषयों में एक त्वरित फ़ंक्शन का उपयोग करता हूं:

//get attachment meta
if ( !function_exists('wp_get_attachment') ) {
    function wp_get_attachment( $attachment_id )
    {
        $attachment = get_post( $attachment_id );
        return array(
            'alt' => get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true ),
            'caption' => $attachment->post_excerpt,
            'description' => $attachment->post_content,
            'href' => get_permalink( $attachment->ID ),
            'src' => $attachment->guid,
            'title' => $attachment->post_title
        );
    }
}

उम्मीद है की यह मदद करेगा!


2
$image = get_post_meta(get_the_ID(), WPGRADE_PREFIX . 'homepage_slide_image', true);
if (!empty($image)) {
    $image          = json_decode($image);
    $image_id       = $image->id;
    $img_meta       = wp_prepare_attachment_for_js($image_id);
    $image_title    = $img_meta['title'] == '' ? esc_html_e('Missing title','{domain}') : $img_meta['title'];
    $image_alt      = $img_meta['alt'] == '' ? $image_title : $img_meta['alt'];
    $image_src      = wp_get_attachment_image_src($image_id, 'blog-huge', false);

    echo '<img class="homepage-slider_image" src="' . $image_src[0] . '" alt="' . $image_alt . '" />';

}

कृपया ध्यान दें कि मैंने आपका परीक्षण नहीं किया $image->id, बस यह मान लिया कि आपके पास सही अनुलग्नक आईडी है। बाकी से आता है $img_meta। यदि ऊंचाई गायब है, तो हम छवि शीर्षक का उपयोग कर रहे हैं, यदि शीर्षक गायब है, तो आपको इसे भरने के लिए "कुरूप शीर्षक" पाठ दिखाई देगा।


2

ठीक है, मुझे जवाब मिला कि नेट पर कोई भी नहीं है जो मैं अब दिनों की तलाश में हूं। मेरा केवल तभी काम करें जब आपका थीम या प्लगइन WP_Customize_Image_Control () का उपयोग कर रहा है, यदि आप WP_Customize_Media_Control () get_theme_mod () आईडी का उपयोग करेंगे और यूआरएल नहीं।

अपने समाधान के लिए मैं नए संस्करण WP_Customize_Image_Control () का उपयोग कर रहा था

मंचों पर बहुत सारे पोस्ट get_attachment_id () हैं जो अब काम नहीं करते हैं। मैंने अनुलग्नक_url_to_postid () का उपयोग किया

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

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