এম্বেড করা ইউটিউব ভিডিও থেকে কোনও পোস্টের বৈশিষ্ট্যযুক্ত চিত্র সেট করা


15

যদি আমি এমন একটি পোস্ট তৈরি করি যা এতে এমবেডেড ইউটিউব ভিডিও রয়েছে (তাই আমি যা করি তা এই পোস্টটিতে ইউটিউব ইউআরএল আটকানো এবং ওয়ার্ডপ্রেসটি স্বয়ংক্রিয়ভাবে এটি আমার জন্য এম্বেড করা যাক), সেখানে ভিডিওর থাম্বনেল চিত্রটি সেট করার উপায় আছে কি? পোস্টের বৈশিষ্ট্যযুক্ত চিত্র?

উত্তর:


17

নেটিভ না। এটি হওয়ার জন্য আপনাকে কিছু কোড লিখতে হবে - একটি দুর্দান্ত পেস্টবিন ফাংশন রয়েছে যা এটি করার জন্য প্রয়োজনীয় কোড সরবরাহ করে।

সম্পাদনা (12/19/2011):

হ্যাঁ আপনি প্রোগ্রামিয়ালি এটি কীভাবে করতে পারেন তা এখানে। আপনার ফাংশন.এফপি ফাইলে নিম্নলিখিত দুটি ফাংশন যুক্ত করুন এবং আপনার ভাল হওয়া উচিত। কোডটি কী ঘটছে তা বোঝাতে মন্তব্য করা হয়েছে, তবে এখানে কী প্রত্যাশা করা উচিত তা উচ্চ স্তরের:

তোমাকে অবশ্যই...

  • একটি পোস্ট তৈরি করুন
  • সামগ্রীতে, একটি ইউটিউব ইউআরএল অন্তর্ভুক্ত করুন

কোডটি ...

  • সামগ্রীর বাইরে URL টি পার্স করুন
  • এটি খুঁজে পাওয়া প্রথম URL টি দখল করবে এবং ধরে নেবে এটি একটি ইউটিউব ইউআরএল
  • রিমোট সার্ভার থেকে থাম্বনেলটি ধরুন এবং এটি ডাউনলোড করুন
  • এটি বর্তমান পোস্টের থাম্বনেইল হিসাবে সেট করুন

মনে রাখবেন যে আপনি যদি আপনার পোস্টে একাধিক ইউআরএল অন্তর্ভুক্ত করেন তবে ইউটিউব ইউআরএল সঠিকভাবে খুঁজে পেতে আপনাকে কোডটি সংশোধন করতে হবে। এটি $attachmentsসংগ্রহের মাধ্যমে পুনরাবৃত্তি করে এবং ইউটিউব ইউআরএল এর মতো দেখতে 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 টি সার্ভার আপনার অ্যাপ্লিকেশনটিতে ত্রুটি ঘটায় যদি আপনি উপরের কোডটি দিয়ে জেটপ্যাক ব্যবহার করেন। আপনি যদি এই ফাংশনটির নাম পরিবর্তন করেন তবে এটি এক-ওকে কাজ করবে
মাইক ভর্মওয়াল্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.