زمینههای دلخواه در وردپرس
وردپرس این توانایی رو داره که به نویسندهی وبلاگ اجازه بده اطلاعات اضافی رو بهوسیلهی زمینههای دلخواه به هر نوشتهش اضافه کنه. بهاین اطلاعات meta-data هم گفته میشه.
برای مثال شما دوست دارین علاوه بر کادرهای موجود برای وارد کردن عنوان و متن نوشته٬ کادری در قسمت نوشتن مطلب داشته باشین که بتونین توش حالتون (mood) رو موقع نوشتن اون مطلب بیان کنین٬ یا اینکه اون زمان دارین بهچه آهنگی گوش میدین. برای اینکار شما میتونین از زمینههای دلخواه (Custom fields) استفاده کنین و اونارو زیر هر نوشتهتون نشون بدین٬ اینطوری:
- * حالت: خوشحال
* موسیقی: درنا – شجریان
زمینههای دلخواه بهصورت کلید/مقدار ذخیره و استفاده میشن٬ مثلن برای حالت بالا من یه زمینهی دلخواه با کلید حالت و مقدار خوشحال معرفی کردم و یهدونه هم با کلید موسیقی و مقدار درنا – شجریان.
این کلیدها جایی ذخیره میشن که میشه در نوشتههای بعدی هم ازشون استفاده کرد٬ برای مثال بالا٬ توی نوشتهی بعدی اگه حالت عصبانی داشتین میتونین با انتخاب کلید «حالت» از لیست زمینههای دلخواه و دادن مقدار عصبانی بهاون٬ اونو توی نوشتهتون نشون بدین
تذکر: بهتره که کلیدها با حروف لاتین نوشته بشن٬ من اینجا برای جا انداختنه مطلب اونارو فارسی نوشتم.
ساختن زمینهی دلخواه جدید:
۱- بعد از نوشتن مطلب و قبل از انتشار اون به قسمت پایین صفحهی نوشتن برین و کادر زمینههای دلخواه رو باز کنین
۲- برای ساختن یک زمینهی دلخواه جدید٬ در قسمت کلید٬ نام دلخواهتون رو بنویسین (زیر پیکان آبی) و در قسمت مقدار هم٬ مقداره موردنظرتون رو بنویسین (زیر پیکان سبز)
۳- دکمهی افزودن زمینهی دلخواه رو بزنین (زیر پیکان نارنجی)
استفاده از زمینههای دلخواه پیشین:
برای استفاده از کلیدهایی که در نوشتههای پیشینتون استفاده کردین٬ کافیه توی کادر مربوط به زمینههای دلخواه٬ از لیستی که ظاهر شده (زیر پیکان آبی)٬ کلید موردنظرتون رو انتخاب کنین و با خالی گذاشتن فرم زیر پیکان قرمز٬ و فقط با پر کردن فرم مقدار (زیر پیکان سبز)٬ از کلید قدیمیتون با مقدار جدید توی نوشتهی جدیدتون استفاده کنین.
البته این مقداردهی ربطی به اون مقداری که واسه نوشتههای گذشته به اون کلید دادین نداره و قبلیها تغییری نمیکنن 🙂
نمایش دادن زمینههای دلخواه:
برای بهنمایش درآوردن زمینههای دلخواه چندین راه وجود داره که سادهترینش استفاده از تابع the_meta هست٬ کافیه این تابع رو توی پوستهتون داخل حلقهی وردپرس قرار بدین:
<?php the_meta(); ?>
خروجی این تابع برای مثال بالا بهصورت زیر هست (توی متن کد):
<ul class='post-meta'> <li><span class='post-meta-key'>حالت:</span> خوشحال</li> <li><span class='post-meta-key'>موسیقی:</span> درنا - شجریان</li> </ul>
خب همونطور که میبینیم این تابع زمینههای دلخواه رو توی یه لیست با کلاس post-meta قرار میده و هر آیتم لیست رو هم توی کلاس post-meta-key میذاره٬ ما میتونیم برای شکیلتر کردن لیستی که ایجاد شده با استفاده از این کلاسها٬ شمایل دلخواه خودمون رو توی css واسهش تعریف کنیم.
استفاده حرفهای از زمینههای دلخواه:
تقربین واضحه که هیچکس زمینههای دلخواه رو برای نشون دادن بهصورت لیست٬ توی پوستهش استفاده نمیکنه٬ زمینههای دلخواه خیلی کاربردیتر این حرفا هستن!
حالا میخوایم با استفاده از تابع get_post_meta افسار زمینههای دلخواه رو تو دستمون بگیریم! ساختار این تابع بهصورت زیر هست:
get_post_meta($post->ID, 'Your Key Name Here',true)
کار این تابع اینه که مقدار یه کلید رو از پایگاهداده واسه ما میگیره و بعدش ما هر بلایی خواستیم میتونیم سرش بیاریم!
خب٬ واسه همینجا بود که گفتم کلید رو باید انگلیسی نوشت! بهجای قسمت توپُرشده باید کلید موردنظرمون رو بنویسیم٬ تا تابع مقدار کلید رو به ما بده٬ حالا میتونیم مثلن اونو echo کنیم یا توی دستورات شرطیمون ازش استفاده کنیم و…
این تابع رو باید توی حلقهی وردپرس بهکار بگیریم.
یه مثال کاربردی:
فرض کنیم میخوایم یه پوسته واسه یه سایت خبری طراحی کنیم٬ یه قسمت داریم به اسم مقالات که نویسندهی هر مقاله باید عکسش رو هم کنار نوشتهش توی یه کادر که مکانش از قبل معلوم شده نشون بده٬ ما واسه اینکار میایم یه زمینهی دلخواه بهاسم author-image میسازیم. حالا توی کد پوستهمون٬ اونجایی که عکس باید قرار بگیره مینویسیم:
<img src="<?php echo get_post_meta($post->ID, 'author-image',true); ?>" />
حالا فقط کافیه نویسندهها موقع نوشتن مطلب از لیست زمینههای دلخواه٬ author-image رو انتخاب کنن و آدرس عکسشون رو وارد کنن٬ دیگه خود وردپرس بهصورت خودکار عکس رو سرجایی که توی پوسته واسش مشخص کردیم قرار میده.
حالا اگه یه نویسنده یادش بره که عکسشو معرفی کنه چی؟ پوستهمون بههم میریزه! برای جلوگیری از اینکار یه دستور شرطی میذاریم که چک کنه آیا عکس معرفی شده یا نه:
<?php if(isset(get_post_meta($post->ID, 'author-image',true))) : ?> <img src="<?php echo get_post_meta($post->ID, 'author-image',true); ?>" /> <?php endif; ?>
بههمین سادهگی.