طريقة تعيين الصورة البارزة تلقائيا لمقالات ووردبريس

وضع صورة بارزة تلقائيا في ووردبريس

موضوعنا اليوم هو حول طريقة تعيين صورة بارزة تلقائيا للمقالات في ووردبريس، وذلك ردا على سؤال أحد زوار الموقع في تدوينة فرض صورة بارزة الذي هو التالي:

كنت استخدم قالب Goodnews والصور المصغرة تظهر في الموضوع تلقائيا طبعا ريحني من استخدام الصورة البارزة الان نصبت قالب صحيفة ولا يدعم timthumb يعني احتاج تحديث 1000 مقال ووضع صور بارزة وهذا يأخذ وقت وجهد بحثت عن حلول ولم أجد هل لديك حل لهذه المشكلة.

في هذه الحالة وضع صور بارزة لكل المقالات يدويا قد يكون أمر مرهقا جدا… لكن لحسن الحظ في ووردبريس دائما هناك حلول سهلة لكل شيء تقريبا.

هناك عدة طرق لحل هذه المشكلة لكن في هذه التدوينة سأتطرق لشرح إثنين منهم:

اقرأ أيضا: ما هو ملف .htaccess؟

وضع صورة بارزة تلقائيا بواسطة كود.

فقط عليك وضع هذا الكود في ملف 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 التي تقوم بإعادة توليد الصور المصغّرة لكي تتوافق مع القياسات المعتمد في القالب المفعّل.

close

قم بالتسجيل على قائمتي البريدية لكي تكون من الأوائل في الحصول على تدوينات وشروحات حصرية

أنا لا أرسل أبدا البريد المزعج! اقرأ سياسة الخصوصية لمزيد من المعلومات.

20 تعليق

  1. لاشك أنّ البعض يرغب في تغيير قالبه الخاص ولكن قد يفقد الصورة البارزة ولكن بفضل الله ثم بفضل هذه الأكواد التي وضعتها ستحل الكثير من الإشكالات، اشكرك أخي سعيد على هذا الموضوع الهام والذي ينتظره الكثير .

    تحياتي لك.

    1. السلام عليكم,
      فقط عليك الدخول إلى مكتبة الوسائط بعدها النقر على الصورة التي تريد أخد رقمها المعرف (ID)و سيظهر لك هذا الأخير في آخر الرابط كما هو واضح في الصورة.

  2. أخ سعيد الطريقة لاتنفع مع القالب صحيفه و بعض القوالب المدفوعة لان تحتاج سكربت او صنع ملف timthumb داخل الثيم نفسه وصنع مجلد كاش خاص فيه وتعديل عل اربع ملفات وهي [code lang=”php” inline=true]functions.php[/code] و index و archive و style ووضع كود استدعاء للمصغرات بداخلها
    تابع هذا الشرح وارجو اضافته ضمن المقال

    1. السلام عليكم أخي,

      الشرح الذي وضعته قديم جدا, كان يستعمل قبل ان يتم إضافة الصور المصغرة بشكل إفتراضي في ووردبريس, حاليا و منذ النسخة 2.9 ووردبريس أصبح يدعم الصور المصغرة إفتراضيا.

      أما بالنسبة لتطبيق TimThumb فقد أعلن مطوره التخلي عنه مأخرا و أوصى بعدم إستعماله… يمكنك قراءة المنشور من هنا

      أنصحك باللجوء إلى الدعم الفني لقالب صحيفة لأنه قالب مدفوع و يتوفر على دعم خاص من طرف صاحبه.

  3. شكرا سعيد على هذه المعلومات
    فقدقمت بشراء ثيم قود نيوز الاصدار 5+ بصراحة يمكنك الاستغناء عن اضافات كثيرة منها الجت باك الثيم يدعم المصغرات
    والتحكم به سلس جدا والتحكم بالصور ومقاساتها دون اضافات ولا تعديل على ملفات يمكنك زيارة موقعي.

  4. شكرا لك استاذ سعيد
    بس ياريت لو توصح لنا في أي مكان بالضبط نضع الكود بعد أي امر أو سطر في ملف [code lang=”php” inline=true]functions.php[/code]

  5. بارك الله فيك .. شرحت واوفيت
    من فضلك ( طالما دخلنا في الاكواد )
    القائمة الافقية اعلى الموقع .. التي تعرض اقسام الموقع او التصنيفات .. ايا كان اسمها
    تعرض الاقسام حسب الترتيب الابجدي … كيف استطيع ان اقوم بالترتيب في هذه القائمة حسب ما اريد ؟؟؟
    واشكرك مقدما

    1. يمكنك التحكم في طريقة ظهور القوائم من خلال لوحة تحكم ووردبريس, و ذلك بالولوج إلى المظهر=> القوائم.

      بالتوفيق

  6. وفقك الله استاذ سعيد والله استفدنا منك جدا
    عندك المشاركة في توتير او فيسبوك ايضا لا يظهر الكود

  7. اخي الكريم شكرا على الطريقة لكنها لا تنفع مع تخصص موقعي
    اخويه انا املك موقع لعرض الصور فانا محتاج لطريقة تجعل اول صوره فى الموضوع
    كصوره بارزه هل هناك من طريقة او اضافه لذلك؟؟

    1. الكود يعمل بشكل جيد، كذلك في آخر التدوينة قمت بذكر إضافة تقوم بنفس عمل الكود يمكنك استعمالها في حالة عدم معرفتك بأمور تطوير ووردبريس والتعامل مع الأكواد.

اترك تعليقًا

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *