آموزش ایجاد و استفاده از زمینه دلخواه شرطی در وردپرس

آموزش ایجاد و استفاده از زمینه دلخواه شرطی در وردپرس

قبلا در مطلبی به طور کامل زمینه های دلخواه وردپرس را معرفی و نحوه استفاده از آنها را شرح داده بودیم. در این مطلب از سری آموزش های وردپرس می خواهیم تا یک قدم جلوتر برویم و از زمینه های دلخواه وردپرس در سطحی حرفه ای تر استفاده کنیم. در آموزش قبلی با نحوه تعریف یک زمینه دلخواه و فراخوانی آن در فایل های مختلف قالب وردپرس آشنا شدیم. نحوه کار آنها هم به این شکل بود که در صورت مقدار دهی به زمینه دلخواهی که در قالب فراخوانی کرده ایم, مقدار آن به صورت مستقیم در صفحه به نمایش در می آمد و ما نمی توانستیم کنترل خاصی بر روی نحوه نمایش آن زمینه دلخواه داشته باشیم.
مثلا نمی توانستیم تعیین کنیم در صورتی که زمینه دلخواه x مقدار دهی نشد چه اتفاقی بیفتد یا اینکه در صورت اینکه مقدار زمینه دلخواه x در داخل یک کد html دیگر قرار داشت چه اتفاقی برای بقیه کدها بیفتد. برای اینکه بتوانیم کنترل بیشتری بر روی خروجی زمینه های دلخواه داشته باشیم و همچنین بتوانیم المان های حرفه ای تری را ایجاد کنیم می توانیم از توابع شرطی وردپرس کمک بگیریم.

شرطی سازی زمینه های دلخواه وردپرس چه سودی دارد؟

به احتمال زیاد شما تا به حال به سایت های دانلود سر زده باشید. اکثر این سایت ها یک جعبه برای نمایش لینک های دانلود, نسخه نرم افزار, قیمت و … دارند. اغلب سایت های دانلود مبتنی بر وردپرس برای ایجاد چنین بخشی از زمینه های دلخواه استفاده می کنند اما نه به این صورت که تمامی محتوای آن بخش را در یک یا چند زمینه دلخواه قرار دهند. بلکه این سایت ها آن بخش از محتوا را که در همه صفحات یکی است و تغییر نمی کند را از قبل کدنویسی می کنند و در مطلب تنها مقدار هر کدام از زمینه های دلخواه را وارد می کنند. زمانی که مقدار یکی از این زمینه های دلخواه وجود داشت با استفاده از دستور های شرطی بخش های ثابت را به همراه مقدار زمینه دلخواه در سایت نمایش می دهند.

مثلا برای نمایش یک تصویر با استفاده از زمینه های دلخواه در حالت ساده باید مقدار زمینه دلخواه را به شکل

<img src="www.site.name/image.png" >

در محتوا وارد کرد و در قالب هم آن را به این شکل فراخوانی کنیم.

<?php echo get_post_meta($post->ID, "rokesh", true); ?>

اما اگر از دستورات شرطی استفاده کنیم کافی است تا در مطلب آدرس تصویر را وارد کنیم و در قالب هم کد زیر را قرار دهیم.

<?php if(get_post_meta($post->ID, "rokesh", true)) : ?>
<img src="<?php echo $rokesh; ?>" >
<?php endif; ?>

این کد فقط زمانی در سایت نشان داده می شود که زمینه دلخواه ما دارای مقدار باشد. این فقط یک مثال ساده بود, اما برای کارهای پیچیده تر خواهید دید که این ویژگی چقدر مفید خواهد بود. یکی از مزیت های استفاده از این روش نیز این می باشد که مقدار اطلاعاتی که در پایگاه داده ذخیره می شود, کمتر شده و دیتابیس سایت شما حجم کمتری را اشغال خواهد کرد.

نحوه استفاده از شرط برای زمینه های دلخواه وردپرس

حالا که با اهمیت استفاده از شرط برای زمینه های دلخواه وردپرس آشنا شدید بهتر است تا نحوه استفاده از آنها را نیز فرا بگیرید. در اینجا ما چند نوع استفاده از توابع شرطی را بیان می کنیم. اگر با برنامه نویسی php آشنایی داشته باشید خیلی راحت می توانید شرط های پیچیده تری را ایجاد کنید. ابتدا باید مانند آموزشی که قبلا در سایت قرار دادیم زمینه های دلخواه مورد نیاز خود را به وردپرس معرفی کنید. پس از معرفی زمینه های دلخواه می توانید از آنها در قالب استفاده کنید.

۱ – در صورت مقدار دهی زمینه دلخواه, X را چاپ کن

اگر می خواهید تا یک کد php, html, متن یا … فقط زمانی نشان داده شود که به یک زمینه دلخواه مقدار داده باشید باید از ساختار زیر استفاده کنید.

<?php if(get_post_meta($post->ID, "rokesh", true)) : ?>
...
<?php endif; ?>

کافی است تا کد یا متنی که می خواهید در زمان مقدار دهی به زمینه دلخواه نشان داده شود را به جای نقطه ها قرار دهید. حتی می توانید مقدار یک زمینه دلخواه دیگر را در صورتی که مثلا زمینه دلخواه rokesh مقداردهی شده بود نشان دهید. در کد بالا عبارت rokesh نام زمینه دلخواه است, که باید با توجه به نام زمینه دلخواه خود, آن را تغییر دهید.

۲ – در صورت مقدار دهی زمینه دلخواه, Y را چاپ نکن

با استفاده از ساختار زیر می تونید عملکردی دقیقا عکس عملکرد گزینه ۱ را ایجاد کنید.

<?php if(get_post_meta($post->ID, "rokesh", true)) {?>
<?php } else {?>
...
<?php }?>

شما در کد بالا به جای نقطه ها هر چیزی را که قرار دهید فقط زمانی نشان داده می شود که مثلا زمینه دلخواه rokesh مقدار دهی نشده باشد. از این مورد می توانید برای قرار دادن متنی مثل “مطلب بروزرسانی شد” و … استفاده کنید.

۳ – در صورت مقدار دهی زمینه دلخواه, X را چاپ کن و Y را چاپ نکن

این مورد ترکیب موارد ۱ و ۲ هست. شما می توانید مشخص کنید که در زمان مقدار دهی یک زمینه دلخواه چه چیزی نشان داده شود و در زمانی که زمینه دلخواه مقداری نداشت چه چیزی نشان داده شود.

<?php if(get_post_meta($post->ID, "rokesh", true)) {?>
...
<?php } else {?>
...
<?php }?>

۴ – در صورت مقدار دهی زمینه های دلخواه X, … را چاپ کن در غیر اینصورت اگر زمینه دلخواه Y مقدار دهی شده بود, … را چاپ کن

در این مورد ما ساختاری را ایجاد می کنیم تا در زمانی که زمینه دلخواه X مقدار دهی شده بود, یک چیز را نشان دهد و در صورتی که زمینه دلخواه X مقداری نداشت اگر زمینه دلخواه Y مقدار دهی شده بود, یک چیز دیگر را نشان دهیم. تعداد زنجیره های این حلقه را می توانید تا هرچقدر نیاز داشتید افزایش دهید. فقط باید توجه داشته باشید که جای if و elseif را درست انتخاب کنید.

<?php if(get_post_meta($post->ID, "rokesh_1", true)) {?>
...
<?php } elseif(get_post_meta($post->ID, "rokesh_2", true)) {?>
...
<?php }?>

۵ – در صورت مقدار دهی زمینه های دلخواه, مقدار هر یک را چاپ کن

این مورد دقیقا مثل مورد یک می باشد با این تفاوت که ما در اینجا چندین زمینه دلخواه را پشت سر هم چک می کنیم که اگر مقدار دهی شده بودند هر کدام را به صورت جداگانه در قالب نشان دهیم. در این مثال ما ساختار داخلی هر شرط را مقدار آن زمینه دلخواه قرار داده ایم, شما می توانید ساختار داخلی هر یک را با توجه به نیاز خود تغییر دهید.

<?php if(get_post_meta($post->ID, "rokesh_1", true)) : ?>
	<?php echo $rokesh_1; ?>
<?php endif; ?>
<?php if(get_post_meta($post->ID, "rokesh_2", true)) : ?>
	<?php echo $rokesh_2; ?>
<?php endif; ?>
<?php if(get_post_meta($post->ID, "rokesh_3", true)) : ?>
	<?php echo $rokesh_3; ?>
<?php endif; ?>

فکر کنم تا همینجا کافی باشد. شما با استفاده از همین چند موردی که در این آموزش ذکر کردیم می توانید ساختار های پیچیده ای را ایجاد کنید. مثلا می توانید شرط های تو در تو ایجاد کنید یا از یک زمینه دلخواه برای تشخیص نوع محتوا استفاده نمایید, در کل می توان گفت اصل کار به این شکل است و بقیه موارد به نیاز هایی که شما دارید بستگی دارد. امیدوارم این آموزش مفید واقع شده باشد, اگر سوالی داشتید در بخش نظرات همین مطلب آن را با ما در میان بگذارید.

دیدگاه کاربران

  1. واقعا عالی بود
    مشکلم کامل حل شد 🙂

  2. معذرت میخوام شاید سوالم بی ربط باشه ولی اگه امکان داره جواب بدید, نحوه ی عوض کردن عکس بکگراند رو تو قالب توضیح میدید ؟

    • سعید شعبانی

      اگر قالب مورد نظر امکان تغییر تصویر پس زمینه از طریق پنل تنظیمات وردپرس را فراهم کرده باشه شما می تونید با وارد شدن به مسیر نمایش » پس زمینه تصویر مورد نظر خودتون را آپلود کنید. اما اگر این امکان را فراهم نکرده باشه باید از طریق css اون را تغییر بدید.

  3. محمد

    سلام
    خسته نباشید
    ببخشید. من یک ابزارک دارم که توش یک کد اچ تی ام ال گذاشتم. می خوام این ابزارک رو فقط توی صفحاتی که تگ خاصی داره نشون بده و توی صفحات دیگه نشون داده نشه. ممنون میشم کدی رو واسم بنویسید که داخل باکسی که برنامه widget-logic.0.57 زیر اون ابزارک ایجاد میکنه بنویسم که فقط در صورت بودن اون تگ خاص عمل کنه
    نمی دونم تونستم منظورم رو برسونم یا نه
    با تشکر

  4. شیوا

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

  5. ممنون از توضیحات
    موفق باشید

  6. سلام مطلب مفیدی بود آقای شعبانی از زحمات شما ممنونم بنده هم در حال تدریس دوره جدید آموزش وردپرس هستم خوشحال میشم به ما هم سر بزنی گاهی اوقات و نظرتو بگی داداش
    http://www.amoozesh98.com
    با تشکر
    ارادتمند : مسلم فلاح نیت

  7. سلام جناب مهندس شعبانی
    جناب مهندس اگر امکان دارد یک شرط میخواستم برای وردپرس قرار بدهم
    آنهم اینه که مسلاً در متن خبر اگر از فایل های flv یا mp4 که ویدیو هستند آمده باشد ، آنرا درون یک زمینه دلخواه قرار دهد که پلیر سایت فعال گردد . آیا این امکان هستش ؟
    مرسی از توجه شما

    • سعید شعبانی

      برای اینکار می تونید یک زمینه دلخواه ایجاد کنید و داخل اون آدرس ویدئو را قرار بدید. بعد چک کنید ببنید که آیا زمینه دلخواه مقدار دهی شده یا نه (که در همین آموزش هست), اگر زمینه دلخواه مقدار داشت, مقدار اون را به پلیر بدید.

  8. سلام ببخشید مهندس
    متوجه نشدم دقیقاً میشه یک مثال راجع بهش برایم بزنید . مرسی

    • سعید شعبانی

      به این شکل که ابتدا شما با استفاده از یک زمینه دلخواه مثلا با اسم rokesh تعریف کنید بعد شرط زیر را داخل single.php یا هر فایل دیگه ای که دوست داشتید قرار بدید. البته این شرط باید در حلقه های وردپرس قرار بگیره.

      <?php if(get_post_meta($post->ID, "rokesh", true)) {?>
      ...
      <?php }?>
      

      بعد به جای … کد پلیر را قرار بدید و برای آدرس ویدئو هم از کد زیر در شرط استفاده کنید.

      <?php echo get_post_meta($post->ID, "rokesh", true); ?>
      

      حال داخل مطلب باید مقدار زمینه دلخواه rokesh را آدرس ویدئو قرار بدید.

  9. ممنونم مهندس کارت درسته بیست

  10. hassan

    سلام
    من یه مشکل دارم خواهشا کمک کنید
    من می خوام توی سایتم یه بخش نمایش تصاویر یا گالری در صفحه سینگل سایتم در سایدبار داشته باشم
    حالا با استفاده از زمینه دلخواه یا متاباکس چطوری می تونم چندتا عکس بزارم؟؟؟؟؟؟؟؟؟؟
    قالب html هم آماده کردم اما برای ساخت وردپرس مشکل دارم
    http://bg-design.net/test/Greetain/single.php

    • سعید شعبانی

      شما می تونید ابتدا یک پست تایپ جدید ایجاد کنید و برای اون پست تایپ یک یا چند تا زمینه دلخواه تعریف کنید. بعد یک حلقه قرار بدید که آخرین مطالب اون پست تایپ را بگیره داخل اون حلقه هم برای هر کدام از مطالب مقدار زمینه دلخواه را در تگ img قرار بدید یا به هر شکلی که مایل هستید گالری را ایجاد کنید.

  11. حجت

    سلام ممنون
    توضیح کاملی بود
    یه سوال : اگر توی فیلدهای اضافه مثلا توی همین فیلد rokesh مقدار را دو گزینه b1 یا b2 قرار بدیم و بعد بخواییم از همین دستور برای اینکار استفاده کنیم که مثلا :
    اگر b1 انتخاب شد یه عکس خاص نمایش داده بشه و اگر b2 انتخاب بشه یه عکس دیگه ، کدش به چه شکل میشه؟

  12. معین

    بسیار ممنون از آموزش روان ، کاربردی و قابل درک.

  13. ابوالفضل

    سلام خسته نباشید
    من یه سایت ووکامرس دارم و نیاز داشتم تا پیش نمایش قالب هایی رو که ساختم رو با iframe در یک برگه دیگه به نمایش در بیارم و یک منو هم برای خرید قالب بالاش بزارم. مثل تم فارست.
    پس یه فایل PHP بنام “page-template-demo” ساختم و یه برگه هم بنام “demo” داخل وردپرس ساختم و نوع قالب بندیش رو همین برگه ای که ساختم قرار دادم.
    تا اینجای کار همه چی درسته و با زمینه های دلخواه تونستم یک کلید پیش نمایش درست کنم که با کلیک بر اون به صفحه سفارشی خودم برم که تنها یه منو و یک آیفریم بهم نشون بده.
    اینطوری:
    http://mysite.com/demo/postid
    دقیقا مثل تم فارست شده
    حالا میخوام وقتی وارد پیش نمایش میشم چندتا گزینه رو توی منوی بالاش مقدار بدم
    ۱. خرید قالب = من رو برگردونه به پست مربوطه برای خرید قالب
    ۲. حذف فریم = من رو ببره به یه آدرس سفارشی مثلا:
    http://www.demo21.mysite.com

    من هرچی سعی کردم نتونستم. هرچی زمینه دلخواه تو فایل PHP سفارشی خودم میسازم تا بتونم این مقدارها رو داشته باشم نمیشه که نمیشه.
    اگه میشه بگید باید چیکار کنم.

    • سعید شعبانی

      اگر بخواهید به شکل فعلی یعنی استفاده از قالب مجزا برای برگه ها پیشنمایش پوسته ها را بسازید شما مجبور هستید تا برای هر قالب یک برگه ایجاد کنید تا بتونید محتویات مربوط به لینک هایی که گفتید را تغییر بدید. به نظر من بهترین روش استفاده از پست سفارشی هست. یک پست سفارشی تعریف کنید و برای پیشنمایش هر برگه یک پست داخل اون پست سفارشی ارسال کنید و اطلاعات مربوط به اون قالب را هم داخل اون پست به شکل زمینه دلخواه وارد کنید.

  14. سلام
    مطلب مفیدی بود
    آیا امکانش هست که یک زمینه دلخواه رو چندین بار تکرار کنیم؟
    مثلا یک فایل برای دانلود ده پارت داره پس باید زمینه دلخواهی که برای لینک دانلود با متغیر download نام گذاری شده رو ده بار مقدار بدیم

    • سعید شعبانی

      بله این کار امکان پذیر هست. شما می تونید به شکل زیر استفاده کنید.

      	<?php $mid_var = get_post_meta($post->ID, 'rokesh',false);
      	$author = get_post_meta($post->ID, 'rokesh', $single = false);
      	$x=count($author);
      	if(isset($mid_var) && !empty($mid_var)) {
      		for($i=0;$i<count($author);$i++) {
      			echo $mid_var[$i];
      		}
      	} ?>
      
  15. erfan

    سلام
    توبعضی سایت های خبری دیدم که یک زمینه دلخواه برای منبع انگلیسی خبرهاشون تعریف کردن به این صورت که نام سایت رو به صورت لینک دار قرار میده اما در این صورت باید زمینه دلخواه دو تا فیلد داشته باشه یعنی یکی نام سایت مثلا rokesh و دیگر لینک اون مطلب در اون سایت مثلا http://rokesh.ir/wordpress-conditional-custom-fields/
    ممنون میشم نحوه ساخت این زمینه دلخواه رو برام توضیح بدید.

    • سعید شعبانی

      خوب دوتا روش می تونید استفاده کنید یکی اینکه کل تگ a اون بخش را در یک زمینه دلخواه قرار بدید و اون را در قالب بگذارید یا اینکه برای عنوان انگلیسی یک زمینه دلخواه مثل rokesh_en_title و برای آدرس هم یک زمینه دلخواه مثل rokesh_en_link تعریف کنید بعد با اینها یک تگ a داخل قالب ایجاد کنید. روش دوم بهتر هست چون انعطاف بیشتری داره و هر شکل که دوست داشتید می تونید ازش استفاده کنید.

  16. مرسی عالی بود خیلی کمک کرد تو انجمن های وردپرسی خودمو کشتم پیدا نشد همچین چیزی 😐

  17. سلام آقا سعید

    خسته نباشید

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

    این کارکردش به چه صورته و چطوری مدیریت می کنی ؟ من واسه سایتم همچین چیزی نیاز دارم که از تو یه تعداد عنوان و لینک بدم و اتومات اون اسم ها بود پیدا کنه و این شکلی نشون بده

    لطفا در این مورد توضیحات بدین
    با تشکر

    • سعید شعبانی

      این بخش ها به صورت یک پست سفارشی هستند که در سایت قرار گرفته اند, بعد در مطالب یا بخش های مختلف سایت هر وقت لازم بود با استفاده از دستورات Ajax محتویات این پست ها فراخوانی و نمایش داده می شوند.

  18. روبرت

    سلام،
    من اگر بخوام با دستورات شرطی کار کنم و نوشته های ثابت داشته باشم که لینکشون بکنم چکار باید کنم؟

    – من میخوام برای مثال:
    نوشته بحث در انجمن برای تمام پست ها در این زمینه دلخواه ثابت باشه و لینک این نوشته رو من از طریق زمینه دلخواه در زمان انتشار نوشته تعریف کنم.

    چطور میتونم این عمل رو انجام بدم؟

  19. علی

    ممنون
    سوالی داشتم، میشه شرط کنیم تعداد کارکترها (یا کلمات) یک زمینه دلخواه بیشتر از X تعداد نباشه؟
    تابع فراخوانیش چی میشه؟

  20. tahakurd

    سلام آقای شعبانی
    ممنون بابت این مطلب عالی

    من میخام رنگ لینک بعضی از اخبار رو قرمز (اصطلاحا داغ) کنم. میخام از طریق زمینه دلخواه عمل کنه به این صورت که اگر نام رو “hotnews” و مقدار رو “۱” زدم رنگ لینک قرمز بشه و در غیر این صورت لینک همون رنگ عادی خودش رو داشته باشه

    این هم لینکی هست که میخام از این زمینه دلخواه شرطی داخلش استفاده کنم

    ممنون میشم اگر راهنمایی بفرمائید.

  21. miladp30

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

  22. miladp30

    خودم درست کردم.. ممنون متشکر..

  23. internet

    سلام
    جناب شعبانی
    یه راهنمایی کنید ممنون میشم اول سایت رو ببینید:
    http://ShopCity.ir
    تصاویر محصولات که ملاحظه می کنید همگی از زمینه دلخواه استفاده شده و مثلا من لینک عکس محصول رو می دهم مثلا:
    http://shopcity.ir/images/test.jpg
    و عکس در صفحه اصلی و غیره به جای عکس محصول نمایش داده میشه
    و از زمینه دلخواه IMG در پنل محصول استفاده شده است
    در ضمن محصولات به صورت مستقیم وارد شده و از افزونه ووکامرس و غیره استفاده نشده است
    حالا یه سوال دارم مثلا می خواهم روی بعضی از عکس هام به صورت متنی یا مثلا یک عکس بگذارم و بزارم مثلا حراجی یا تخفیف
    چه طور این کار رو انجام بدهم!
    خودم یه خورده فکر کردم که یک زمینه دلخواه دیگه هم در سایت و قالب ایجاد کنم مثلا IMGOFF و بعد محصولاتی که میخواهم تخفیف بخوره یا حراجی باشه عکسشون رو توی این زمینه دلخواه وارد کنم
    ولی در کل نتونستم درست روش فکر کنم و مزاحم شما شدم
    مثلا فرض کن از همه این محصولات بخواهم مثلا ۵ تا از تصاویر فروشگاه روشون کلمه یا دکمه یا عکس حراجی بخوره! اونم به صورت اتوماتیک وار از طریق زمینه دلخواه
    عکس کلیه محصولات به صورت زمینه دلخواه است
    با تشکر

    • سعید شعبانی

      درود بر شما, می تونید یک زمینه دلخواه تعریف کنید به نام off بعد مقدار زمینه دلخواه off را برای هر محصولی که قرار هست برچسب تخفیف بهش داده بشه ۱ بگذارید. بعد چک کنید که آیا مقدار زمینه دلخواه off یک هست یا نه و اون وقت عبارت تخفیف را نشون بدید. در صورتی که نیاز به توضیحات بیشتر داشتید لطفا در انجمن های روکش یک تاپیک جدید ایجاد نمایید.

کاربر گرامی برای ارسال دیدگاه اگر عضو روکش هستید باید سایت شوید در غیر اینصورت باید عضو شوید.