Shortcode در وردپرس چیست ؟
شورت کد (Shortcode) در وردپرس یک دستور کوتاه و قابل استفاده در محتوای سایت است که داخل براکتهای مربعی [] نوشته میشود و وردپرس هنگام نمایش صفحه، آن را با خروجی موردنظر جایگزین میکند.
برای مثال، ممکن است یک افزونه فرم تماس، گالری تصاویر، فهرست محصولات یا قابلیت دیگری را در اختیار شما قرار دهد و برای نمایش آن از یک شورت کد مانند نمونه زیر استفاده کند:
[gallery]
در این حالت، چیزی که در ویرایشگر میبینید خود شورت کد است؛ اما بازدیدکننده سایت خروجی تولیدشده توسط آن، مانند یک گالری تصاویر، فرم یا فهرست محصولات را مشاهده میکند.
شورت کدها یکی از قابلیتهای قدیمی و همچنان پشتیبانیشده وردپرس هستند. این قابلیت از وردپرس ۲.۵ وجود داشته و با وجود معرفی و گسترش ویرایشگر بلوکی، هنوز در بسیاری از افزونهها و سایتهای وردپرسی استفاده میشود.
شورت کد وردپرس چه شکلی است؟
سادهترین شورت کد فقط شامل یک نام بین دو براکت است:
[gallery]
شورت کد میتواند پارامتر یا همان Attribute نیز داشته باشد. برای مثال:
[gallery ids="12,15,18" columns="3"]
در این مثال، ids و columns پارامترهای شورت کد هستند و مقدار هرکدام بعد از علامت = مشخص شده است.
بنابراین ساختار کلی یک شورت کد میتواند به شکل زیر باشد:
[نام_شورت_کد پارامتر="مقدار" پارامتر_دوم="مقدار"]
البته نام، پارامترها و مقادیر قابل قبول هر شورت کد را سازنده آن مشخص میکند و برای استفاده صحیح از یک شورت کد باید مستندات افزونه یا قالب مربوطه را بررسی کنید.
شورت کد در وردپرس چگونه کار میکند؟
شورت کد در واقع یک دستور ثبتشده در وردپرس است. زمانی که وردپرس در محتوای صفحه با یک شورت کد مواجه میشود، به دنبال تابعی میگردد که برای آن شورت کد ثبت شده است. سپس آن تابع را اجرا میکند و خروجی آن را جایگزین شورت کد میکند.
برای مثال، اگر شورت کد زیر ثبت شده باشد:
[my_message]
تابع مربوط به آن میتواند عبارتی مانند «سلام دنیا» را برگرداند. در نتیجه بازدیدکننده به جای [[my_message]]، عبارت تولیدشده را مشاهده خواهد کرد.
این منطق باعث شده است افزونهها بتوانند قابلیتهایی را به وردپرس اضافه کنند که مدیر سایت بتواند آنها را با یک دستور کوتاه در محل دلخواه قرار دهد.
شورت کدهای وردپرس چه کاربردی دارند؟
شورت کدها میتوانند برای تولید انواع مختلف محتوا و قابلیتها استفاده شوند. برای مثال:
- نمایش فرمهای تماس
- نمایش گالری تصاویر
- نمایش محصولات و فهرست محصولات فروشگاه
- نمایش اسلایدر، جدول قیمت یا آکاردئون
- نمایش محتوای وابسته به وضعیت کاربر یا عضویت
- نمایش محتوای پویا بر اساس پارامترهای دریافتشده
- قرار دادن خروجی یک قابلیت افزونه در یک نوشته یا برگه
- فراخوانی قابلیتهای سفارشی که توسط توسعهدهنده سایت ایجاد شدهاند
به همین دلیل شورت کدها در بسیاری از افزونههای وردپرس، بهخصوص افزونههایی که باید خروجی خود را در مکانهای مختلف سایت نمایش دهند، کاربرد زیادی دارند.
شورت کدهای پیشفرض وردپرس
همه شورت کدها متعلق به افزونهها نیستند. خود وردپرس نیز تعدادی شورت کد را در هسته یا فرایندهای مرتبط با محتوای خود پشتیبانی میکند. از نمونههای شناختهشده میتوان به شورت کدهایی مانند [gallery]، [audio] و [video] اشاره کرد.
با این حال، در یک سایت واقعی بخش قابل توجهی از شورت کدهایی که با آنها مواجه میشوید توسط افزونهها، قالب یا کدهای سفارشی سایت ایجاد شدهاند.
پارامترهای شورت کد (Shortcode Attributes) چیست؟
پارامترهای شورت کد به شما اجازه میدهند رفتار یا خروجی آن را تغییر دهید. برای مثال یک شورت کد نمایش محصولات ممکن است پارامترهایی برای تعیین تعداد محصولات، دستهبندی یا ترتیب نمایش داشته باشد:
[products1 limit="6" columns="3" orderby="date"]
در این مثال:
limit="6"تعداد محصولات را مشخص میکند.columns="3"تعداد ستونها را مشخص میکند.orderby="date"ترتیب نمایش را مشخص میکند.
این پارامترها عمومی و ثابت نیستند و هر شورت کد میتواند مجموعه متفاوتی از پارامترها را داشته باشد. بنابراین برای اطلاع از پارامترهای قابل استفاده باید مستندات همان شورت کد را بررسی کنید.
شورت کد محصور (Enclosing Shortcode) چیست؟
همه شورت کدها به شکل یک دستور مستقل نیستند. بعضی از آنها میتوانند محتوایی را بین تگ باز و بسته خود قرار دهند.
[highlight1 color="yellow"]این متن مهم است[/highlight1]
در این مثال، عبارت بین دو شورت کد، محتوای داخلی شورت کد محسوب میشود. این نوع شورت کد برای مواردی مانند ایجاد دکمه، برجستهکردن متن، محدودکردن دسترسی به محتوا و ایجاد ساختارهای سفارشی کاربرد دارد.
بنابراین به طور کلی میتوان شورت کدها را به دو گروه تقسیم کرد:
- Self-closing: شورت کدهایی که محتوای داخلی ندارند، مانند [gallery]
- Enclosing: شورت کدهایی که بخشی از محتوا را در خود قرار میدهند، مانند [box1]متن[/box1]
استفاده از شورت کد در ویرایشگر وردپرس
در ویرایشگر بلوکی وردپرس، شورت کدها همچنان قابل استفاده هستند. وردپرس یک Shortcode Block نیز در اختیار شما قرار میدهد که برای قرار دادن شورت کد در محتوا طراحی شده است.
بنابراین استفاده از شورت کد به معنای استفاده از ویرایشگر قدیمی وردپرس نیست و شورت کدها همچنان در نسخههای جدید وردپرس پشتیبانی میشوند.
البته در پروژههای جدید، اگر یک افزونه یا قابلیت موردنظر یک Block اختصاصی و مناسب ارائه کند، استفاده از Block تجربه کاربری بهتری ایجاد میکند. چون کاربر میتواند خروجی را در خود محیط ویرایشگر بهتر مشاهده و تنظیم کند.
تفاوت Shortcode و Block در وردپرس چیست؟
شورت کد و Block هر دو میتوانند برای قرار دادن محتوای پویا یا قابلیتهای خاص در صفحات وردپرس استفاده شوند، اما روش کار آنها متفاوت است.
| ویژگی | Shortcode | Block |
|---|---|---|
| نحوه استفاده | نوشتن یک دستور مانند [gallery] | افزودن یک بلوک از طریق ویرایشگر |
| تجربه ویرایش | نمایش متن شورت کد | نمایش و تنظیم مستقیم بلوک |
| سازگاری با سایتهای قدیمی | بسیار زیاد | وابسته به پیادهسازی بلوک |
| استفاده در پروژههای قدیمی | بسیار رایج | رایجتر در پروژههای جدید |
به همین دلیل نمیتوان گفت شورت کدها در وردپرس منسوخ شدهاند. سایتهای قدیمی و بسیاری از افزونههای پرکاربرد همچنان به آنها وابستهاند. با این حال، برای قابلیتهای جدیدی که قرار است تجربه ویرایش بصری داشته باشند، توسعه یک Block میتواند انتخاب مناسبتری باشد.
استفاده از Shortcode در PHP
اگر بخواهید یک شورت کد را خارج از محتوای نوشته و در کد PHP اجرا کنید، میتوانید از تابع do_shortcode() استفاده کنید.
برای مثال:
|
1 2 3 |
<?php echo do_shortcode( '[[gallery ids="12,15,18"]]' ); ?> |
تابع do_shortcode() رشته موردنظر را بررسی میکند، شورت کدهای موجود در آن را اجرا میکند و خروجی نهایی را برمیگرداند.
این روش زمانی کاربرد دارد که بخواهید خروجی یک افزونه یا قابلیت مبتنی بر شورت کد را مستقیماً در قالب، Template یا بخش دیگری از کد PHP نمایش دهید.
ساخت شورت کد اختصاصی در وردپرس
یکی از قابلیتهای مهم WordPress Shortcode API این است که توسعهدهندگان میتوانند شورت کد اختصاصی خودشان را نیز ایجاد کنند.
برای ثبت یک شورت کد از تابع add_shortcode() استفاده میشود. یک نمونه ساده:
|
1 2 3 4 5 |
function roka_message_shortcode() { return 'سلام! این یک شورت کد اختصاصی است.'; } add_shortcode( 'roka_message', 'roka_message_shortcode' ); |
پس از ثبت این شورت کد، میتوان از دستور زیر در محتوای سایت استفاده کرد:
[roka_message]
وردپرس هنگام پردازش محتوا تابع مربوطه را اجرا میکند و مقدار بازگشتی آن را در خروجی قرار میدهد.
ساخت شورت کد دارای پارامتر
در شورت کدهای سفارشی میتوان پارامتر نیز دریافت کرد. برای مدیریت مقادیر پیشفرض پارامترها، تابع shortcode_atts() کاربرد زیادی دارد.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
function roka_button_shortcode( $atts ) { $atts = shortcode_atts( array( 'text' => 'مشاهده بیشتر', 'url' => '#', ), $atts, 'roka_button' ); return '<a href="' . esc_url( $atts['url'] ) . '">' . esc_html( $atts['text'] ) . '</a>'; } add_shortcode( 'roka_button', 'roka_button_shortcode' ); |
اکنون میتوان از این شورت کد به شکل زیر استفاده کرد:
[roka_button text="خدمات ما" url="https://example.com/services"]
نکته مهم در توسعه شورت کد این است که تابع مربوط به آن باید خروجی را بازگشت بدهد و نباید به شکل مستقیم آن را echo کند. همچنین مقادیری که از Attributeها دریافت میشوند باید متناسب با محل استفاده، به شکل صحیح Escape شوند.
شورت کد را در functions.php قرار دهیم یا افزونه؟
از نظر فنی میتوان شورت کد اختصاصی را در فایل functions.php قالب قرار داد، اما این روش یک مشکل مهم دارد و آن اینکه شورت کد به قالب وابسته میشود.
اگر قالب سایت تغییر کند، ممکن است کد شورت کد نیز دیگر اجرا نشود و در نتیجه شورت کدهایی مانند [roka_button] به صورت متن خام در محتوای سایت باقی بمانند.
برای قابلیتهایی که بخشی از منطق سایت محسوب میشوند و نباید با تغییر قالب از بین بروند، قرار دادن کد در یک افزونه اختصاصی یا افزونه mu-plugin انتخاب مناسبتری است.
استفاده از افزونههایی مانند Code Snippets نیز میتواند برای اضافهکردن کدهای سفارشی بدون ویرایش مستقیم فایلهای قالب مفید باشد.
چرا بعد از غیرفعال کردن یک افزونه، شورت کد آن نمایش داده میشود؟
یکی از مشکلات مهم شورت کدها وابستگی آنها به کدی است که شورت کد را ثبت کرده است.
فرض کنید افزونهای شورت کد زیر را ایجاد کرده باشد:
[my_form]
اگر افزونه غیرفعال یا حذف شود، دیگر تابعی برای پردازش [my_form] وجود نخواهد داشت. در نتیجه ممکن است خود عبارت شورت کد به صورت متن در صفحه نمایش داده شود.
این موضوع یکی از دلایلی است که هنگام حذف افزونهها، مخصوصا افزونههای صفحهساز و افزونههایی که از شورت کدهای زیادی استفاده میکنند، باید محتوای سایت نیز بررسی شود.
آیا استفاده زیاد از شورت کدها باعث کاهش سرعت سایت میشود؟
خود شورت کد به تنهایی به معنی کند بودن سایت نیست. اما پردازش تعداد زیادی شورت کد، بهخصوص شورت کدهایی که عملیات سنگینی انجام میدهند، میتواند روی زمان تولید خروجی صفحه تأثیر بگذارد.
وردپرس برای پیدا کردن و پردازش شورت کدهای موجود در محتوا باید محتوای موردنظر را بررسی کند و سپس Callback مربوط به هر شورت کد را اجرا کند. اگر Callback یک شورت کد شامل کوئریهای متعدد، محاسبات سنگین یا پردازشهای غیرضروری باشد، هزینه پردازشی آن بیشتر خواهد شد.
در عمل، عملکرد شورت کد به نحوه پیادهسازی آن و کاری که تابع مربوطه انجام میدهد وابسته است. استفاده از کش صفحه و کش داده نیز میتواند اثر پردازشهای تکراری را کاهش دهد.
Shortcode در ابزارکهای وردپرس
یکی از پرسشهای رایج این است که آیا میتوان شورت کد را در ابزارکهای وردپرس استفاده کرد؟
پاسخ به نوع ابزارک و ساختار سایت بستگی دارد. در نسخههای جدید وردپرس، محیط ابزارکها نیز بر پایه ویرایشگر بلوکی کار میکند و یک Shortcode Block در اختیار شما قرار دارد. همچنین بسیاری از ابزارکهای متنی وردپرس از شورت کد پشتیبانی میکنند.
اگر در یک سایت قدیمی یا یک Widget سفارشی، شورت کد پردازش نمیشود، میتوان در صورت نیاز از فیلتر مربوط به Widget استفاده کرد:
|
1 |
add_filter( 'widget_text', 'do_shortcode' ); |
بنابراین برخلاف روشهای قدیمی، لازم نیست در هر سایت جدید به صورت پیشفرض این کد را به functions.php اضافه کنید. ابتدا باید نوع Widget و نسخه و پیکربندی وردپرس را بررسی کنید.
مزایا و معایب شورت کدهای وردپرس
مزایای Shortcode
- استفاده ساده در محتوای نوشته و برگه
- امکان قرار دادن یک قابلیت پیچیده با یک دستور کوتاه
- امکان دریافت پارامتر و تغییر رفتار خروجی
- امکان استفاده از یک قابلیت در مکانهای مختلف
- سازگاری بسیار خوب با سایتها و افزونههای قدیمی
- امکان استفاده از شورت کد در کد PHP با
do_shortcode()
معایب Shortcode
- تجربه ویرایش آن به خوبی یک Block اختصاصی نیست.
- با حذف یا غیرفعالشدن افزونه تولیدکننده ممکن است شورت کد به صورت متن خام نمایش داده شود.
- وابستگی شدید به شورت کدهای یک صفحهساز میتواند مهاجرت سایت را دشوار کند.
- پیادهسازی ضعیف شورت کد میتواند باعث مشکلات امنیتی یا عملکردی شود.
- تعداد زیاد شورت کدهای پیچیده میتواند نگهداری سایت را دشوار کند.
آیا Shortcode در وردپرس منسوخ شده است؟
خیر. شورت کدها همچنان بخشی از WordPress API هستند و در بسیاری از سایتها و افزونههای موجود استفاده میشوند.
با این حال، از زمان معرفی ویرایشگر بلوکی، بلوکها به روش اصلی وردپرس برای ایجاد و ویرایش محتوای ساختاریافته تبدیل شدهاند. بنابراین برای یک قابلیت جدید، اگر قرار است کاربر بتواند آن را به صورت بصری در ویرایشگر تنظیم کند، توسعه یک Block میتواند انتخاب مناسبتری باشد.
در مقابل، اگر با یک سایت قدیمی، یک افزونه موجود یا یک قابلیت ساده مواجه هستید که API آن بر پایه شورتکد طراحی شده است، استفاده از Shortcode همچنان منطقی است و به دلیل قدیمی بودن این فناوری، نیازی به حذف آن وجود ندارد.
طراحی سایت حرفهای با وردپرس
اگر برای طراحی سایت با وردپرس یا توسعه افزونهها و شورتکدهای اختصاصی وردپرس به راهکاری متناسب با نیازهای پروژه خود نیاز دارید، میتوانید از خدمات تخصصی روکا در زمینه طراحی و توسعه سایت استفاده کنید.
خسته نباشید مرسی به خاطر این مطلب زیبا