SHET26

نمایش شورت کد در قالب وردپرس با استفاده از تابع do_shortcode

شورت‌کد یا کد کوتاه کمک می‌کنه بدون نوشتن کدهای طولانی، چیزهایی مثل ویدئو، گالری یا فرم رو به سایتتون اضافه کنید. توی نوشته‌ها، برگه‌ها و بخش‌های قابل‌ویرایش قالب‌های بلوکی، معمولاً بلوک شورت‌کد کارتون رو راه می‌اندازه. ولی اگه بخواید یک شورت‌کد رو داخل فایل PHP قالب اجرا کنید، باید سراغ تابع do_shortcode() برید.

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

شورت‌‌کد چیه؟

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

قابلیت شورت‌کد از نسخه ۲.۵ به وردپرس اضافه شده و هنوز هم می‌تونید ازش استفاده کنید. خیلی از افزونه‌ها برای نمایش فرم، اسلایدر، جدول یا محتوای اختصاصی، یک شورت‌کد آماده در اختیارتون می‌ذارن.

برای استفاده معمولی، فقط کافیه بلوک «شورت‌کد» رو به نوشته یا برگه اضافه کنید و کد کوتاهتون رو داخلش بذارید. توی قالب‌های بلوکی، یعنی قالب‌هایی که هدر، فوتر و بخش‌های دیگه‌شون با ویرایشگر سایت ساخته می‌شن، در خیلی از قسمت‌های قالب هم می‌تونید از همین بلوک استفاده کنید.

اگه می‌خواید شورت‌کد رو توی نوار کناری سایت بذارید، آموزش استفاده از شورت‌کد در ابزارک وردپرس قدم‌به‌قدم مسیرش رو بهتون نشون می‌ده.

اگه هنوز شورت‌کد براتون ناآشناست، مقاله شورت‌‌کد چیست و چرا در وردپرس استفاده می‌‌شود کمک می‌کنه با جزئیات بیشتری از این قابلیت آشنا بشید.

نمایش شورت کد در قالب وردپرس

تابع do_shortcode() وقتی به دردتون می‌خوره که بخواید شورت‌کد رو داخل یک فایل PHP اجرا کنید. این تابع متن شورت‌کد رو می‌گیره، پردازشش می‌کنه و خروجی آماده رو بهتون تحویل می‌ده.

قبل از اینکه سراغ PHP برید، ببینید محل موردنظرتون بلوک شورت‌کد داره یا نه. اگه هدر، فوتر یا اون بخش از سایت با ویرایشگر سایت قابل‌ویرایشه، اضافه‌کردن بلوک شورت‌کد معمولاً ساده‌تر و امن‌تره. در این حالت لازم نیست به فایل‌های قالب دست بزنید.

توی قالب‌های کلاسیک، یعنی قالب‌هایی که ساختار صفحه‌شون با فایل‌های PHP مثل header.php و footer.php کنترل می‌شه، می‌تونید از do_shortcode() کمک بگیرید. شکل کلی کد اینه:

PHP
<?php echo do_shortcode( '[your_shortcode]' ); ?>

به‌جای [your_shortcode] شورت‌کد واقعی افزونه یا قابلیت موردنظرتون رو بذارید. مثلاً اگه افزونه فرم‌ساز یک شورت‌کد بهتون داده، همون کد کامل رو همراه با کروشه‌ها جایگزین کنید. اگه می‌خواید یک فرم ثابت رو در بخش‌های مختلف سایت نشون بدید، آموزش نمایش فرم تماس در تمام صفحات وردپرس هم براتون کاربردیه.

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

نکته: فایل‌های قالب اصلی رو مستقیم تغییر ندید، چون ممکنه بعد از به‌روزرسانی قالب همه تغییراتتون پاک بشن. بهتره از پوسته فرزند یا افزونه‌ای مثل Code Snippets برای افزودن توابع سفارشی کمک بگیرید. قبل از شروع کار هم حتماً یک نسخه پشتیبان سالم از سایتتون داشته باشید.

آموزش استفاده از تابع do_shortcode

برای یک مثال ساده، فرض کنید می‌خواید با شورت‌کد داخلی وردپرس یک ویدئو نشون بدید. شورت‌کد ویدئو یک جفت کروشه داره و می‌تونه به این شکل نوشته بشه:

Shortcode
[video mp4="VIDEO_URL"]

عبارت VIDEO_URL فقط یک جای‌نگهداره؛ یعنی باید اون رو با نشانی کامل فایل ویدئوتون عوض کنید. اگه فقط می‌خواید ویدئو رو توی یک نوشته یا برگه نشون بدید، استفاده از بلوک «ویدئو» یا بلوک «شورت‌کد» انتخاب راحت‌تریه.

بلوک ویدیو در ویرایشگر وردپرس
بلوک ویدیو در ویرایشگر وردپرس

اگه واقعاً نیاز دارید همین شورت‌کد توی فایل PHP یک قالب کلاسیک اجرا بشه، کدتون به این شکل درمیاد:

PHP
<?php echo do_shortcode( '[video mp4="VIDEO_URL"]' ); ?>

حالا VIDEO_URL رو با نشانی کامل ویدئوتون جایگزین کنید. این کد رو فقط داخل فایل PHP مناسب در پوسته فرزند بذارید. قبل از انتشار روی سایت اصلی هم نتیجه رو توی یک محیط آزمایشی بررسی کنید.

قرار دادن do_shortcode در قالب سایت
قرار دادن do_shortcode در قالب سایت

تفاوت قالب کلاسیک و قالب بلوکی

اگه توی پیشخوان وردپرس وارد بخش «نمایش» می‌شید و گزینه «ویرایشگر» رو می‌بینید، احتمالاً سایتتون از یک قالب بلوکی استفاده می‌کنه. توی این نوع قالب می‌تونید بخش‌هایی مثل هدر و فوتر رو با بلوک‌ها ویرایش کنید و هرجا پشتیبانی بشه، بلوک شورت‌کد رو هم بذارید.

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

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

چند نکته برای استفاده امن از do_shortcode

  • اول ببینید بلوک اختصاصی افزونه یا بلوک شورت‌کد کارتون رو راه می‌اندازه یا نه.
  • کد PHP رو داخل قالب اصلی نذارید؛ چون به‌روزرسانی قالب می‌تونه تغییراتتون رو پاک کنه.
  • شورت‌کد رو دقیقاً با یک جفت کروشه وارد کنید و علامت‌های نقل‌قول داخل کد رو تغییر ندید.
  • قبل از تغییر سایت اصلی، کد رو توی محیط آزمایشی امتحان کنید و یک نسخه پشتیبان قابل‌بازیابی داشته باشید.
  • اگه افزونه سازنده شورت‌کد رو غیرفعال کردید، صفحه موردنظرتون رو دوباره بررسی کنید.

تابع do_shortcode() هنوز بخشی از وردپرسه و برای اجرای شورت‌کد داخل PHP به کار می‌ره. بااین‌حال، توی خیلی از سایت‌های امروزی استفاده از بلوک اختصاصی افزونه یا بلوک شورت‌کد ساده‌تر و کم‌ریسک‌تره. پس فقط وقتی از این تابع کمک بگیرید که واقعاً لازم باشه شورت‌کد رو داخل یک فایل PHP اجرا کنید.

جمع‌بندی

اگه فقط می‌خواید یک فرم، ویدئو یا محتوای دیگه رو داخل نوشته، برگه، هدر یا فوتر نشون بدید، اول سراغ بلوک اختصاصی افزونه یا بلوک «شورت‌کد» برید. تابع do_shortcode() زمانی انتخاب مناسبیه که محل موردنظرتون داخل یک فایل PHP از قالب کلاسیک باشه. در این حالت شورت‌کد رو دقیق وارد کنید، تغییر رو داخل پوسته فرزند انجام بدید و قبل از دست‌زدن به سایت اصلی، از سایتتون نسخه پشتیبان بگیرید و کد رو توی محیط آزمایشی بررسی کنید.

سوالات متداول

تابع do_shortcode در وردپرس چه کاری انجام می‌ده؟

این تابع یک شورت‌کد رو داخل فایل PHP پردازش می‌کنه و خروجی اون رو برمی‌گردونه. برای نمایش خروجی در صفحه، معمولاً از echo همراه با do_shortcode() استفاده می‌کنید.

آیا همیشه باید از do_shortcode استفاده کنیم؟

نه. اگه بخش موردنظرتون با ویرایشگر وردپرس یا ویرایشگر سایت قابل‌ویرایشه، بلوک اختصاصی افزونه یا بلوک «شورت‌کد» معمولاً انتخاب ساده‌تر و امن‌تریه. do_shortcode بیشتر برای اجرای شورت‌کد داخل فایل‌های PHP کاربرد داره.

چرا کد do_shortcode خروجی نشون نمی‌ده؟

اول مطمئن بشید افزونه یا قابلیتی که شورت‌کد رو ساخته فعاله. بعد شورت‌کد، کروشه‌ها، ویژگی‌ها و علامت‌های نقل‌قول رو بررسی کنید. اگه هنوز خروجی نمی‌بینید، کد رو توی محیط آزمایشی بررسی کنید و راهنمای سازنده شورت‌کد رو بخونید.

کد do_shortcode رو داخل کدوم فایل قالب بذاریم؟

فایل مناسب به بخشی بستگی داره که می‌خواید خروجی اونجا دیده بشه. برای نمونه، ممکنه این بخش در header.php یا footer.php باشه. ولی کد رو مستقیم داخل قالب اصلی نذارید؛ بهتره از پوسته فرزند استفاده کنید و اگه فایل مناسب رو نمی‌شناسید، از توسعه‌دهنده قالب کمک بگیرید.

آیا do_shortcode در قالب‌های بلوکی هم لازمه؟

معمولاً نه. توی قالب‌های بلوکی بیشتر بخش‌های سایت با ویرایشگر و بلوک‌ها ساخته می‌شن، پس اغلب می‌تونید بلوک «شورت‌کد» رو در محل مناسب بذارید. فقط وقتی سراغ PHP برید که بخش موردنظرتون واقعاً با فایل PHP سفارشی کنترل بشه.

نظر شما در این مورد چیه؟

  1. U26107۱۷ شهریور ۱۴۰۰

    سلام
    من می خوام عبارت های کلیدی رو با استفاده از شورت کد mks به صورت یک منوی بازشو نمایش بدم
    سه echo اول اجرا میشه اما دو echo پایانی که باعث بسته شدن منو میشه رو اصلا اجرا نمی کنه
    شما می تونید راهنمایی کنید که علت چیه و چطور باید نوشته بشه

    ID,’keywords’,true);
    echo do_shortcode( ‘[/mks_accordion_item]’ );
    echo do_shortcode( ‘[/mks_accordion]’ );
    ?>

  2. کاربر مهمان۸ اردیبهشت ۱۳۹۸

    با عرض سلام و با تشکر از مطالب جالبتون
    من این کار رو برای افزونه ها روی لوکال هاست انجام دادم. افزونه تماس با ما به درستی کار میکنه. ولی متاسفانه افزونه اسلایدر نشون داده نمیشه!
    لطفا راهنمایی بفرمایید.

    • رضا راد۹ اردیبهشت ۱۳۹۸

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

  3. کاربر مهمان۱۷ آذر ۱۳۹۷

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

    • رضا راد۱۷ آذر ۱۳۹۷

      سلام بستگی به افزونه چند زبانه داره. اگر wpml رو از سایت ما خریداری کرده اید تیکت ارسال کنید بررسی می کنیم.

  4. کاربر مهمان۲ فروردین ۱۳۹۷

    دم شما گرم

  5. کاربر مهمان۳۰ اردیبهشت ۱۳۹۶

    با سلام. من wp-postviews رو نصب و فعال کردم و در فوتر سایت به عنوان ابزارک ازش استفاده می کنم که به خوبی پربازدیدترین محصولات رو نشون می ده. اما من می خواهم از این ابزار، بالای هر شرح هر محصول هم استفاده کنم تا تعداد بازدید را در آن قسمت هم نشان دهد. از راه های گفته شده استفاده کردم ولی پاسخ مطلوب نیست. به جای تعداد بازدیدها، تعداد نظرات را نمایش می دهد. از شورت کد هم استفاده کردم ولی نتیجه ای نداشت.<?php while ( have_posts() ) : the_post(); ?><?php if(function_exists(‘the_views’)) { the_views(); } ?><?php while ( have_posts() ) : the_post(); ?><?php echo do_shortcode(“[views]”);?>

    • رضا راد۳۰ اردیبهشت ۱۳۹۶

      سلام کد اولی که اراسل کردید برای همین کار هست. توی پست آموزش post views کامل توضیح دادیم از چه روشی انجام بدید

  6. کاربر مهمان۳۰ دی ۱۳۹۵
  7. کاربر مهمان۷ دی ۱۳۹۵

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

    • رضا راد۸ دی ۱۳۹۵

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

      • کاربر مهمان۹ دی ۱۳۹۵

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

        • رضا راد۹ دی ۱۳۹۵

          پس با قالب شما هماهنگی لازم رو نداره

          • کاربر مهمان۹ دی ۱۳۹۵

            باسلام چه طور باید این هماهنگی رو انجام بدم لینک اموزشی دارید در اختیارم قرار بدید با تشکر

            • رضا راد۹ دی ۱۳۹۵

              سلام نه متاسفانه باید به یک کد نویس بسپارید

پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرس
پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرسآنلاین و پاسخگوی شما هستیم.آنلاین

در حال بارگذاری...

هر سوالی دارید بپرسید.پاسخگوی شما هستیم.