एक एम्बेडेड YouTube वीडियो से पोस्ट की चित्रित छवि सेट करना


15

अगर मैं एक ऐसी पोस्ट बनाता हूं जिसमें एक एम्बेड किया हुआ YouTube वीडियो है (तो मैं जो भी करता हूं वह YouTube URL को पोस्ट में पेस्ट कर देता हूं और Wordpress को स्वचालित रूप से मेरे लिए इसे एम्बेड करने देता हूं), क्या वीडियो सेट की थंबनेल छवि रखने का एक तरीका है पोस्ट की विशेष रुप से प्रदर्शित छवि?

जवाबों:


17

मूल रूप से नहीं। आपको ऐसा करने के लिए कुछ कोड लिखना होगा - एक अच्छा पास्टबिन फ़ंक्शन है जो इसे करने के लिए आवश्यक कोड प्रदान करता है।

संपादित करें (12/19/2011):

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

तुम्हे अवश्य करना चाहिए...

  • एक पोस्ट बनाएँ
  • सामग्री में, एक YouTube URL शामिल करें

कोड होगा ...

  • सामग्री से URL का पार्स करें
  • पहले URL को पकड़ लेगा जो इसे ढूंढता है और मान लेता है कि यह एक YouTube URL है
  • रिमोट सर्वर से थंबनेल को पकड़ो और इसे डाउनलोड करें
  • इसे वर्तमान पोस्ट के थंबनेल के रूप में सेट करें

ध्यान दें कि यदि आप अपने पोस्ट में कई URL शामिल करते हैं, तो आपको YouTube URL को ठीक से खोजने के लिए कोड को संशोधित करना होगा। यह $attachmentsसंग्रह के माध्यम से पुनरावृत्ति करके और YouTube URL की तरह URL के रूप को सूँघने के द्वारा किया जा सकता है ।

function set_youtube_as_featured_image($post_id) {  

    // only want to do this if the post has no thumbnail
    if(!has_post_thumbnail($post_id)) { 

        // find the youtube url
        $post_array = get_post($post_id, ARRAY_A);
        $content = $post_array['post_content'];
        $youtube_id = get_youtube_id($content);

        // build the thumbnail string
        $youtube_thumb_url = 'http://img.youtube.com/vi/' . $youtube_id . '/0.jpg';

        // next, download the URL of the youtube image
        media_sideload_image($youtube_thumb_url, $post_id, 'Sample youtube image.');

        // find the most recent attachment for the given post
        $attachments = get_posts(
            array(
                'post_type' => 'attachment',
                'numberposts' => 1,
                'order' => 'ASC',
                'post_parent' => $post_id
            )
        );
        $attachment = $attachments[0];

        // and set it as the post thumbnail
        set_post_thumbnail( $post_id, $attachment->ID );

    } // end if

} // set_youtube_as_featured_image
add_action('save_post', 'set_youtube_as_featured_image');

function get_youtube_id($content) {

    // find the youtube-based URL in the post
    $urls = array();
    preg_match_all('#\bhttps?://[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/))#', $content, $urls);
    $youtube_url = $urls[0][0];

    // next, locate the youtube video id
    $youtube_id = '';
    if(strlen(trim($youtube_url)) > 0) {
        parse_str( parse_url( $youtube_url, PHP_URL_QUERY ) );
        $youtube_id = $v;
    } // end if

    return $youtube_id; 

} // end get_youtube_id

ध्यान देने वाली बात यह है कि यह माना जाता है कि आपकी पोस्ट का कोई थंबनेल नहीं है और एक थंबनेल पोस्ट किए जाने के बाद फायर नहीं होगा।

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


ग्रेट स्निपेट, लेकिन चूंकि कौन जानता है कि यह अब से साल होगा - कृपया कम से कम सारांश (यदि पूर्ण कोड बहुत अधिक है) को अपने उत्तर में शामिल करने का प्रयास करें (जैसे "थंबनेल प्राप्त करने के लिए इसका उपयोग करें", फिर वह डाउनलोड करें और संलग्न करें ")।
रारस्ट

1
ध्यान दें कि जेटपैक में एक विधि शामिल है, get_youtube_idजो उपरोक्त कोड के साथ जेटपैक का उपयोग करने पर आपके ऐप में 500 सर्वर त्रुटि होगी। आपको लगता है कि समारोह का नाम बदलते हैं, यह एक-ठीक काम करेंगे
माइक Vormwald
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.