عندما نقوم بنشر فيديو أو مقالة تتوفر على فيديو، عادة ما نقوم بتحرير صورة أو اﻹستعانة بأحد المواقع لجلب الصورة المصغرة للفيديو و استعمالها كصورة بارزة للمقالة، لكن هذا اﻷمر قد يكون مرهق و فيه بعض المضيعة للوقت أليس كذلك؟
الحل هو جلب الصورة المصغّرة للفيديو و تعيينها كصورة بارزة تلقائيا.
في تدوينة سابقة قمت بشرح طريقة تعيين أو صورة في الموضوع كصورة بارزة تلقائيا، هذه المرة سنقوم بأستعمال نفس الطريقة تقريبا لكن بدل استعمال أول صورة سنقوم بجلب الصورة المصغرة ﻷول فيديو في المقالة.
توكلنا على الله.
بكل بساطة فقط عنا إضافة هذا الكود لملف functions.php
أو ﻹضافتنا المشخّصة.
if (!function_exists('sb_set_youtube_thumbnail')) {
/**
* set_youtube_thumbnail Upload and set post thumbnail automatically from first video youtube in the post
*
* @author Said El Bakkali
*/
function sb_set_youtube_thumbnail()
{
if (!has_post_thumbnail($post->ID)) {
global $post;
preg_match("/([a-zA-Z0-9-_]+.|)youtube.com/watch(?v=|/v/)([a-zA-Z0-9-_]{11})([^<s]*)/", $post->post_content, $matches);
if (!empty($matches)) {
$videoID = $matches[3];
}
if (!isset($videoID)) {
preg_match("/([a-zA-Z0-9-_]+.|)youtu.be/([a-zA-Z0-9-_]{11})([^<s]*)/", $post->post_content, $matches);
if (!empty($matches)) {
$videoID = $matches[2];
}
}
$youtube_thumb = isset($videoID) ? 'https://i.ytimg.com/vi/'.$videoID.'/maxresdefault.jpg' : null;
$desc = __('Thumbnail Youtube of: ', 'sb-youtube-thumbnail').get_the_title($post->ID);
$image = media_sideload_image($youtube_thumb, $post->ID, $desc);
$attachments = get_children(
array(
'post_parent' => $post->ID,
'post_type' => 'attachment',
'post_mime_type' => 'image',
)
);
foreach ($attachments as $attachment_id => $attachment) {
set_post_thumbnail($post->ID, $attachment_id);
}
}
}
add_action('save_post', 'sb_set_youtube_thumbnail');
}
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | if (!function_exists('sb_set_youtube_thumbnail')) { /** * set_youtube_thumbnail Upload and set post thumbnail automatically from first video youtube in the post * * @author Said El Bakkali */ function sb_set_youtube_thumbnail() { if (!has_post_thumbnail($post->ID)) { global $post; preg_match("/([a-zA-Z0-9-_]+.|)youtube.com/watch(?v=|/v/)([a-zA-Z0-9-_]{11})([^<s]*)/", $post->post_content, $matches); if (!empty($matches)) { $videoID = $matches[3]; } if (!isset($videoID)) { preg_match("/([a-zA-Z0-9-_]+.|)youtu.be/([a-zA-Z0-9-_]{11})([^<s]*)/", $post->post_content, $matches); if (!empty($matches)) { $videoID = $matches[2]; } } $youtube_thumb = isset($videoID) ? 'https://i.ytimg.com/vi/'.$videoID.'/maxresdefault.jpg' : null; $desc = __('Thumbnail Youtube of: ', 'sb-youtube-thumbnail').get_the_title($post->ID); $image = media_sideload_image($youtube_thumb, $post->ID, $desc); $attachments = get_children( array( 'post_parent' => $post->ID, 'post_type' => 'attachment', 'post_mime_type' => 'image', ) ); foreach ($attachments as $attachment_id => $attachment) { set_post_thumbnail($post->ID, $attachment_id); } } } add_action('save_post', 'sb_set_youtube_thumbnail');} |
ما حدث هنا هو أننا قمنا بالتحقق من عدم توفر المقالة عن صورة بارزة و بعدها البحث في محتوى المقالة بواسطة تعابير قياسية عن شكلي روابط اليوتوب، الربط العادي الذي يكون على هذا الشكل:
https://www.youtube.com/watch?v=Pg2MRuqYx7U
1 | https://www.youtube.com/watch?v=Pg2MRuqYx7U |
و الرابط القصير المخصص للمشاركة الذي يكون على هذا الشكل:
https://youtu.be/Pg2MRuqYx7U
1 | https://youtu.be/Pg2MRuqYx7U |
و بعدها قمنا بالتحقق من وجود الشكل اﻷول للرابط وجلب معرف الفيديو و في حالة عدم وجوده نمر للبحث عن الشكل اﻵخر و جلب معرف الفيديو أيضا.
بعد ذلك، نقوم بالتحقق من وجود معرف (أي توفر المقالة على فيديو) في حالة وجوده نقوم بجلب صورة الفيديو بأعلى جودة متوفرة من سرفر تخزين الصور الرسمي لليوتوب.
المرحلة اﻷخيرة هي رفع الصورة لووردبريس بواسطة الوظيفة media_sideload_image()
و تعيينها كصورة بارزة لنفس المقالة باستعمال الوظيفة set_post_thumbnail()
.
منذ هذه اللحظة، عند إضافة فيدديو يتوب و عدم تعيين صورة بارزة مسبقا للمقال، سيتم جلب صورة من فيديو اليوتوب و جعلها كصورة بارزة للمقال تلقائيا.
أتمنا أن تكون قد استفدت من الموضوع، إن كان لديك أي استفسار أو تساءل المرجوا تركه من خلال التعليقات
هابي كودينغ ?
Original Article