موضوعنا اليوم هو حول طريقة تعيين صورة بارزة تلقائيا للمقالات في ووردبريس، وذلك ردا على سؤال أحد زوار الموقع في تدوينة فرض صورة بارزة الذي هو التالي:
كنت استخدم قالب Goodnews والصور المصغرة تظهر في الموضوع تلقائيا طبعا ريحني من استخدام الصورة البارزة الان نصبت قالب صحيفة ولا يدعم timthumb يعني احتاج تحديث 1000 مقال ووضع صور بارزة وهذا يأخذ وقت وجهد بحثت عن حلول ولم أجد هل لديك حل لهذه المشكلة.
في هذه الحالة وضع صور بارزة لكل المقالات يدويا قد يكون أمر مرهقا جدا… لكن لحسن الحظ في ووردبريس دائما هناك حلول سهلة لكل شيء تقريبا.
هناك عدة طرق لحل هذه المشكلة لكن في هذه التدوينة سأتطرق لشرح إثنين منهم:
وضع صورة بارزة تلقائيا بواسطة كود.
فقط عليك وضع هذا الكود في ملف functions.php
أو لإضافتك المخصصة
function sb_auto_post_thumbnail() {
global $post;
$already_has_thumb = has_post_thumbnail($post->ID);
if (!$already_has_thumb) {
$attached_image = get_children(
array(
'numberposts' => '1',
'post_parent' => $post->ID,
'post_type' => 'attachment',
'post_mime_type' => 'image',
)
);
if ($attached_image) {
foreach ($attached_image as $attachment_id => $attachment) {
set_post_thumbnail($post->ID, $attachment_id);
}
} else {
set_post_thumbnail($post->ID, '1638');
}
}
}
add_action('save_post', 'sb_auto_post_thumbnail');
بعدها قم بإستبدل الرقم 1638 (السطر 20) بالرقم المعرف (ID) الخاص بالصورة التي تريد أن تكون كصورة بارزة افتراضية للمقالات التي لا تحتوي على أي صورة.
طريقة معرفة ID الصور
لمعرفة معرفة ID أي صورة فقط عليك الدخول إلى مكتبة الوسائط بعدها النقر على الصورة التي تريد أخد رقمها المعرف (ID) وسيظهر لك هذا الأخير في آخر الرابط كما هو واضح في الصورة.
شرح الكود
أولا نقوم بالتحقق من وجود أو عدم وجود صورة بارزة من خلال الوظيفة has_post_thumbnail($post->ID)
وتخزين النتيجة في المتغير $already_has_thumb
$already_has_thumb = has_post_thumbnail($post->ID);
في حالة عدم وجود صورة بارزة نقوم باستخراج أول صورة موجودة في المقال بواسطة الوظيفة get_children()
if ( !$already_has_thumb) {
$attached_image = get_children(
array(
'numberposts' => '1',
'post_parent' => $post->ID,
'post_type' => 'attachment',
'post_mime_type' => 'image',
)
);
بعدها نقوم بتعيين الصورة المستخرة كصورة بارزة للمقالة.
if ($attached_image) {
foreach ($attached_image as $attachment_id => $attachment) {
set_post_thumbnail($post->ID, $attachment_id);
}
}
وفي حالة عدم توفر أي شرط، أي عدم وجود لا صورة بارزة ولا أي صورة داخل المقال نقوم بإظهار الصورة الافتراضية.
//
else {
set_post_thumbnail($post->ID, '1638');
}
وفي الأخير نقوم بإضافة الوظيفة التي قمنا بإنشائها إلى الخطافات save_post
المناسبة بواسطة الوظيفة add_action
.
add_action('save_post', 'sb_auto_post_thumbnail');
وضع صورة بارزة تلقائيا بواسطة إضافة.
إذا لم تكن لديك الخبرة الكافية للتعامل مع الكود البرمجي، بإمكانك استعمال إضافة Automatically set 1st image as featured
هذه الإضافة تقوم بنفس عمل الكود السابق لكنها لا تتوفر على خاصية الصورة الافتراضية، أحسن ما فيها هو أنها لا تحتاج لأي تعديل أو إعداد.
في الأخير أقترح عليك تنصيب إضافة Regenerate Thumbnails التي تقوم بإعادة توليد الصور المصغّرة لكي تتوافق مع القياسات المعتمد في القالب المفعّل.
محمد عكفي قال
لاشك أنّ البعض يرغب في تغيير قالبه الخاص ولكن قد يفقد الصورة البارزة ولكن بفضل الله ثم بفضل هذه الأكواد التي وضعتها ستحل الكثير من الإشكالات، اشكرك أخي سعيد على هذا الموضوع الهام والذي ينتظره الكثير .
تحياتي لك.
سعيد البقالي قال
الشكر لك أخي محمد على الزيارة و التشجيع المستمر, يفرحنى معرفة أن الموضوع قد اعجبك 🙂
احمد قال
مجهود رائع يا اخ سعيد بارك الله فيك
radwan hallak قال
شكرا اخ سعيد بارك الله فيك . وماشاء الله المظهر الجديد للموقع رائع بالتوفيق
ابو صلاح قال
عدرا لكن نقطة الحصول على ال ID لاستبداله بالرقم غير واضحة . كيف أحصل على ال ID؟
سعيد البقالي قال
السلام عليكم,
فقط عليك الدخول إلى مكتبة الوسائط بعدها النقر على الصورة التي تريد أخد رقمها المعرف (ID)و سيظهر لك هذا الأخير في آخر الرابط كما هو واضح في الصورة.
احمد قال
أخ سعيد الطريقة لاتنفع مع القالب صحيفه و بعض القوالب المدفوعة لان تحتاج سكربت او صنع ملف timthumb داخل الثيم نفسه وصنع مجلد كاش خاص فيه وتعديل عل اربع ملفات وهي [code lang=”php” inline=true]functions.php[/code] و index و archive و style ووضع كود استدعاء للمصغرات بداخلها
تابع هذا الشرح وارجو اضافته ضمن المقال
سعيد البقالي قال
السلام عليكم أخي,
الشرح الذي وضعته قديم جدا, كان يستعمل قبل ان يتم إضافة الصور المصغرة بشكل إفتراضي في ووردبريس, حاليا و منذ النسخة 2.9 ووردبريس أصبح يدعم الصور المصغرة إفتراضيا.
أما بالنسبة لتطبيق TimThumb فقد أعلن مطوره التخلي عنه مأخرا و أوصى بعدم إستعماله… يمكنك قراءة المنشور من هنا
أنصحك باللجوء إلى الدعم الفني لقالب صحيفة لأنه قالب مدفوع و يتوفر على دعم خاص من طرف صاحبه.
احمد قال
شكرا سعيد على هذه المعلومات
فقدقمت بشراء ثيم قود نيوز الاصدار 5+ بصراحة يمكنك الاستغناء عن اضافات كثيرة منها الجت باك الثيم يدعم المصغرات
والتحكم به سلس جدا والتحكم بالصور ومقاساتها دون اضافات ولا تعديل على ملفات يمكنك زيارة موقعي.
سعودي انحراف قال
اشكرك جزيل الشكر اخوي وكنت اتمنى الحصول على شرح اضافة صوره بارزه تلقائي من نفس التدوينه
سعيد البقالي قال
السلام عليكم أخي, هذا الشرح هو مخصص لعمل ذلك.
بالتوفيق إنشاء الله.
أبا الهيثم قال
شكرا لك استاذ سعيد
بس ياريت لو توصح لنا في أي مكان بالضبط نضع الكود بعد أي امر أو سطر في ملف [code lang=”php” inline=true]functions.php[/code]
محمد ابومعاذ قال
بارك الله فيك .. شرحت واوفيت
من فضلك ( طالما دخلنا في الاكواد )
القائمة الافقية اعلى الموقع .. التي تعرض اقسام الموقع او التصنيفات .. ايا كان اسمها
تعرض الاقسام حسب الترتيب الابجدي … كيف استطيع ان اقوم بالترتيب في هذه القائمة حسب ما اريد ؟؟؟
واشكرك مقدما
سعيد البقالي قال
يمكنك التحكم في طريقة ظهور القوائم من خلال لوحة تحكم ووردبريس, و ذلك بالولوج إلى المظهر=> القوائم.
بالتوفيق
ربيع الخير قال
وفقك الله استاذ سعيد والله استفدنا منك جدا
عندك المشاركة في توتير او فيسبوك ايضا لا يظهر الكود
سعيد البقالي قال
شكراً لك على التنبيه عزيزي ربيع، تم حذف الخاصية من هذا الموضوع لتفادي المشاكل 🙂
جنة قال
سلمت يداك.
الشرح جميل ومميز.
سعيد البقالي قال
الله يسلكم أخي العفو 🙂
عمر علي قال
اخي الكريم شكرا على الطريقة لكنها لا تنفع مع تخصص موقعي
اخويه انا املك موقع لعرض الصور فانا محتاج لطريقة تجعل اول صوره فى الموضوع
كصوره بارزه هل هناك من طريقة او اضافه لذلك؟؟
سعيد البقالي قال
الكود يعمل بشكل جيد، كذلك في آخر التدوينة قمت بذكر إضافة تقوم بنفس عمل الكود يمكنك استعمالها في حالة عدم معرفتك بأمور تطوير ووردبريس والتعامل مع الأكواد.