امین بهشتی

Design Tutorials

طراحی وِب و گرافیک

اختصاص تصویر شاخص برای ارسال‌ها به‌صورت خودکار

(ویرایش در تاریخ 17-09-1391: کدی که قبلاً برای این آموزش معرفی کرده بودیم نواقصی داشت بنابراین کدهای زیر را که کامل و بدون نقص می‌باشند جایگزین آنها کردیم.) 

برخی از کاربران وردپرس از پوسته‌هایی استفاده می‌کنند که برای ارسال‌های سایت‌شان تصاویر شاخصی اختصاص نمی‌دهند. دلیل این امر یا می‌تواند این باشد که تصاویر شاخص در تنظیمات پوسته ست نشده است و یا اینکه کاربر خودش تصویر شاخصی برای ارسال‌هایش اختصاص نداده است.

حال اگر این کاربران روزی بخواهند برای ارسال‌های‌شان تصاویر شاخص هم داشته باشند، برای ارسال‌های قبلی که تصاویری ندارند به 2 روش می‌توانند تصویر شاخص اختصاص دهند:

  1. اختصاص تصویر شاخص به‌صورت دستی برای تک تک ارسال‌ها
  2. اختصاص تصویر شاخص به‌صورت خودکار توسط کدنویسی

در این مطلب نحوه اختصاص تصویر شاخص به‌صورت خودکار توسط کدنویسی را توضیح خواهم داد.

کافیست کد زیر را در فایل functions.php پوسته‌تان وارد نمایید :

function autoset_featured() {
          global $post;
          $already_has_thumb = has_post_thumbnail($post->ID);
              if (!$already_has_thumb)  {
              $attached_image = get_children( "post_parent=$post->ID&post_type=attachment&post_mime_type=image&numberposts=1" );
                          if ($attached_image) {
                                foreach ($attached_image as $attachment_id => $attachment) {
                                set_post_thumbnail($post->ID, $attachment_id);
                                }
                           } else {
                                set_post_thumbnail($post->ID, '33');
                           }
                        }
      }  //end function
add_action('the_post', 'autoset_featured');
add_action('save_post', 'autoset_featured');
add_action('draft_to_publish', 'autoset_featured');
add_action('new_to_publish', 'autoset_featured');
add_action('pending_to_publish', 'autoset_featured');
add_action('future_to_publish', 'autoset_featured');

توضیح کد بالا :

  1. تمام ارسال‌ها انتخاب می‌شوند
  2. درصورتی که نوشته تصویر بندانگشتی نداشته باشد، توسط تابع ()get_children اولین تصویر نوشته انتخاب می‌شود
  3. با استفاده از تابع ()set_post_thumbnail تصویر انتخاب شده را به‌عنوان تصویر شاخص برای ارسال مربوطه احتصاص می‌دهد
  4. اگر تصویری برای آن نوشته بارگذاری نشده باشد، تصویر مورد نظر خودمان را که با آی‌دی 33 مشخص کرده‌ایم، برای نوشته به‌عنوان تصویر شاخص انتخاب می‌کند

نکته: آی‌دی تصویر مورد نظرتان را که می‌خواهید به‌عنوان تصویر شاخص برای نوشته‌های بدون تصویر انتخاب شود، باید از بخش رسانه وردپرس (بعد از بارگذاری آن) پیدا کرده و در کد بالا وارد نمایید.

منبع

درباره امین بهشتی

یک ایرانی ترک زبان که علاقه زیادی به طرّاحی وِب و گرافیک دارد!
در این سایت سعی می‌کنم مطالب جالب، مفید و کاربردی را در جهت آموزش به اشتراک بگذارم!
امیدوارم لحظات خوشی را در سایت سپری نمایید و مطالب سایت مورد استفاده شما قرار بگیرد.
سپاس

    • با سلام،
      خوب اگر تصویر شاخصی نباشه چیزی اختصاص داده نمی‌شه ولی اگر مثلاً می‌خواهید برای مطالبی که تصویر شاخصی ندارند یک تصویر ثابت از پیش تعیین شده نشان بده (به عنوان مثال یک تصویری که نوشته “تصویری پیدا نشد” یا مثلاً نام سایت‌تان یا … ) می‌تونید از کد زیر در فایل اون صفحه‌ای که مطالب را با تصاویر شاخص نمایش می‌ده (که معمولاً فایل index.php هستش) استفاده کنید :
      http://codepad.org/Q4bWbXsK
      در کد بالا مسیر و نام تصویر را باید مشخص کنید.
      موفق باشید.

  1. سلام
    این روش خوبه ولی من تصاویر سایتمو روی هاست دانلودم آپ می کنم آیا می تونم برای پست هام تصویر شاخص بذارم؟
    یعنی تصاویرو به آدرس dl.domain.com آپلود میکنم.
    هر کاری کردم نشد برای پست هام تصویر شاخص بذارم اگه میشه راهنمایی کنید

  2. سلام
    چطوری میشه کاری کنیم که بزرگترین عکس پست رو به عنوان تصویر شاخص انتخاب کنه چون بعضی تصاویر و ایکون ها در پست استفاده میشه گاها اونو بصورت تصویر شاخص انتخاب میکنه
    ممنون میشم راهنمایی بکنید.ایمیلیم بزنید که خیلی خوب میشه

  3. عالی بود
    هرچی تشکر کنم کمه من از تعداد زیادی از افزونه ها استفاده کردم ولی هیچ کدومشون کار نکردن حالا یه کد ساده کار کرد.
    اینم یه نمونه پست که من به علت نداشتن تصویر مجبور میشدم دستی تصویر رو انتخاب کنم حالا خودش اتوماتیک این کار رو انجام میده:
    دانلود زیرنویس فارسی Temps 2016

  4. سلام عزیز
    بنده استفاده کردم از این کد منتها اولین تصویر پست رو انتخاب نمیکنه فقط اونهایی که تصویر ندارند رو با همون ایدی میشه تصویر داد بهشون
    تا همینجاشم کارم واقعا راه افتاد واقعا مرسی مدتها دنبالش بودم کدی رو که پستام بدون تصویر نباشه به هر دری زدم نشد تا این کد کمکم کرد
    یدنیا سپاس دوست عزیز ایشالله موفق باشی

  5. سلام آقای هاشمی، وقت به خیر
    من 6 تا تصویر شاخص دارم که می خوام به صورت اتومات به ترتیب یا به صورت رندوم برای تمام نوشته ها و همچنین محصولات دانلودی (ووکامرس) قرار بگیرن. میشه این کد رو به ایمیلم ارسال کنید.
    ممنون میشم

درصورت تمایل برای ارسال دیدگاه‌تان از فرم زیر می‌توانید استفاده کنید ↓

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

(الزامی*)

می‌توانید از نشان و برچسب‌های HTML زیر در متن دیدگاه‌تان استفاده کنید:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
(الزامی*)
(اختیاری)

لطفاً جای‌خالی در معادله زیر را پر کنید: * Time limit is exhausted. Please reload the CAPTCHA.