FA-TOOLS — Header Component
آموزش ساخت شورت کد در وردپرس

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

فهرست مطالب

  • شورت کد وردپرس چیست و چگونه کار می‌کند؟
  • مراحل ساخت شورت کد ساده در وردپرس
  • ساخت شورت کد با ویژگی (Attributes) و پارامترهای پویا
  • ساخت شورت کد محتوادار (Enclosing Shortcode)
  • جدول مقایسه انواع شورت کد در وردپرس
  • ۳ نکته تخصصی و اشتباهات متداول در کدنویسی شورت کد
  • پرسش‌های متداول
  • عیب‌یابی سریع مشکلات شورت کد

خلاصه سریع و نکات کلیدی:

  • شورت کدها توابع PHP هستند که با کدهای کوتاهی مانند [my_code] در ویرایشگر وردپرس فراخوانی می‌شوند.
  • همیشه باید خروجی شورت کد را مقداردهی بازگشتی (return) کنید، نه اینکه آن را چاپ (echo) نمایید.
  • بهترین مکان برای افزودن کدهای شورت کد، فایل functions.php پوسته فرزند یا یک پلاگین اختصاصی است.
  • برای دریافت پارامترهای متغیر در شورت کد از تابع shortcode_atts() استفاده می‌شود.

شورت کدها (Shortcodes) میانبرهایی کاربردی در وردپرس هستند که به شما اجازه می‌دهند المان‌های پیچیده، توابع محاسباتی یا محتوای پویا را بدون نیاز به نوشتن مستقیم کدهای HTML یا PHP در ویرایشگر گوتنبرگ و المنتور درج کنید. با یادگیری برنامه‌نویسی شورت کد، کنترل کاملی روی نحوه نمایش داده‌ها پیدا می‌کنید و کدنویسی سایت خود را به‌شدت تمیز و بهینه نگه‌می‌دارید.

شورت کد وردپرس چیست و چگونه کار می‌کند؟

شورت کد وردپرس چیست و چگونه کار می‌کند؟

شورت کد وردپرس یک متد یا تابع PHP است که با یک قلاب (Hook) به هسته وردپرس متصل شده و یک عبارت کروشه‌ای مانند [shortcode] را به خروجی پردازش‌شده HTML تبدیل می‌کند. این مکانیسم امنیت وردپرس را حفظ کرده و مانع اجرای مستقیم کدهای خطرناک در ویرایشگر متنی می‌شود.

وقتی وردپرس محتوای یک برگه یا نوشته را رندر می‌کند، موتور تجزیه‌کننده (Shortcode API) کلمات داخل کروشه را جستجو کرده و در صورت مطابقت با توابع ثبت‌شده، تابع مربوطه را اجرا و خروجی متنی یا کدهای تگ‌های ساختاری HTML را جایگزین همان شورت کد می‌کند.

مراحل ساخت شورت کد ساده در وردپرس

مراحل ساخت شورت کد ساده در وردپرس

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

  1. وارد بخش مدیریت وردپرس شده و از مسیر نمایش > ویرایشگر پرونده پوسته فایل functions.php را باز کنید (یا فایل پلاگین اختصاصی خود را ویرایش کنید).
  2. یک تابع PHP تعریف کنید که محتوای مورد نظر شما را باز می‌گرداند.
  3. تابع ساخته‌شده را با استفاده از تابع add_shortcode() در سیستم ثبت کنید.
  4. شورت کد را در نوشته یا برگه مورد نظر خود تست کنید.

نمونه کد یک شورت کد ساده:

function my_custom_subscribe_notice() {
    $output = '<div class="subscribe-box" style="background:#eef6ff; padding:15px; border-radius:5px;">';
    $output .= '<p style="margin:0;">برای دریافت آخرین اخبار، در خبرنامه ما عضو شوید!</p>';
    $output .= '</div>';
    
    return $output;
}
add_shortcode('subscribe_box', 'my_custom_subscribe_notice');

حالا اگر عبارت [subscribe_box] را در هرجای نوشته قرار دهید، باکس فوق به کاربر نمایش داده می‌شود.

ساخت شورت کد با ویژگی (Attributes) و پارامترهای پویا

ساخت شورت کد با ویژگی (Attributes) و پارامترهای پویا

ویژگی‌ها یا Attributes به شما امکان می‌دهند پارامترهای متغیری مانند رنگ، عنوان، یا تعداد نمایش پست‌ها را به شورت کد پاس دهید تا رفتار آن به‌صورت پویا تغییر کند. این کار توسط تابع shortcode_atts انجام می‌شود.

فرض کنید می‌خواهید دکمه‌ای بسازید که لینک و متن آن در هر نوشته متفاوت باشد. کد زیر این قابلیت را پیاده‌سازی می‌کند:

function custom_button_shortcode($atts) {
    // تنظیم مقادیر پیش‌فرض و ادغام با مقادیر ورودی کاربر
    $atts = shortcode_atts(
        array(
            'text'  => 'کلیک کنید',
            'url'   => '#',
            'color' => '#2271b1',
        ), 
        $atts, 
        'custom_button'
    );

    // ایمن‌سازی مقادیر ورودی
    $url   = esc_url($atts['url']);
    $text  = esc_html($atts['text']);
    $color = sanitize_hex_color($atts['color']);

    return sprintf(
        '<a href="%s" style="background-color:%s; color:#fff; padding:10px 20px; text-decoration:none; border-radius:4px; display:inline-block;">%s</a>',
        $url,
        $color,
        $text
    );
}
add_shortcode('custom_button', 'custom_button_shortcode');

نحوه استفاده از این شورت کد در ویرایشگر:

[custom_button text="دانلود فایل" url="https://example.com/file.zip" color="#46b450"]

ساخت شورت کد محتوادار (Enclosing Shortcode)

ساخت شورت کد محتوادار (Enclosing Shortcode)

گاهی نیاز است که شورت کد، کادري دور بخشی از محتوای درون ویرایشگر ایجاد کند. به این مدل، شورت کد محتوادار یا دوتایی گفته می‌شود که شامل یک تگ باز و یک تگ بستن است: [my_box]محتوای درون باکس[/my_box].

function content_box_shortcode($atts, $content = null) {
    // پردازش شورت کدهای احتمالی موجود در داخل محتوا
    $content = do_shortcode($content);

    return '<div style="border: 2px dashed #2271b1; padding: 15px; background: #f9f9f9; border-radius: 8px;">' . $content . '</div>';
}
add_shortcode('content_box', 'content_box_shortcode');

نکته کلیدی: استفاده از تابع do_shortcode($content) در داخل تابع باعث می‌شود اگر کاربر داخل شورت کد شما از شورت کد دیگری استفاده کرد، آن شورت کد نیز به درستی پردازش و اجرا شود.

جدول مقایسه انواع شورت کد در وردپرس

جدول مقایسه انواع شورت کد در وردپرس
نوع شورت کد کاربرد و توضیحات
تکی / ساده (Self-closing) برای درج محتوای ثابت مانند تاریخ امروز، اطلاعات تماس یا فرم‌های ساده بدون دریافت ورودی از کاربر.
دارای ویژگی (Attributed) زمانی استفاده می‌شود که بخواهید متغیرهایی مثل آیدی محصول، رنگ، یا تعداد آتم‌ها را خود کاربر تعیین کند.
محتوادار (Enclosing) برای کادربندی یا اعمال استایل‌های اختصاصی با کدهای استایل CSS روی بخشی از متن ویرایشگر.

۳ نکته تخصصی و اشتباهات متداول در کدنویسی شورت کد

بسیاری از توسعه‌دهندگان تازه‌کار در زمان توسعه قطعه کدهای وردپرس مرتکب اشتباهاتی می‌شوند که باعث برهم خوردن چیدمان یا خطاهای امنیتی می‌شود. در ادامه ۳ نکته پیشرفته را بررسی می‌کنیم:

۱. عدم استفاده مستقیم از echo و بکارگیری Output Buffering

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

function complex_template_shortcode() {
    ob_start(); // شروع بافر
    
    // فراخوانی فایل یا توابعی که echo می‌کنند
    include( get_stylesheet_directory() . '/template-parts/my-form.php' );
    
    return ob_get_clean(); // دریافت محتوا و خالی کردن بافر
}
add_shortcode('my_complex_form', 'complex_template_shortcode');

۲. امنیت و فراردهی داده‌ها (Data Escaping)

همواره ویژگی‌های ورودی کاربر را پیش از رندر پاکسازی کنید. اگر شورت کد شما اطلاعاتی را از دیتابیس یا یک سرویس REST API وردپرس دریافت می‌کند، حتماً از توابعی نظیر esc_html()، esc_attr() و esc_url() جهت جلوگیری از حملات XSS استفاده کنید.

۳. تداخل نام‌گذاری (Prefixing)

از نام‌های عمومی مانند [button] یا [box] استفاده نکنید؛ زیرا ممکن است توسط افزونه‌های دیگر ثبت شده باشند و باعث تداخل گردند. همیشه یک پیشوند اختصاصی مثل [mycompany_button] قرار دهید. مثلاً افزونه‌های قدرتمندی مانند افزونه دیجیتس وردپرس برای جلوگیری از تداخل تمام شورت کدهای خود را با پیشوندهای یکتا نام‌گذاری می‌کنند.

پرسش‌های متداول

آیا می‌توان شورت کد را مستقیم در فایل‌های قالب PHP اجرا کرد؟

بله، با استفاده از تابع <?php echo do_shortcode('[my_shortcode]'); ?> می‌توانید هر شورت کدی را درون فایل‌های PHP قالب خود رندر کنید.

تفاوت main shortcode با do_shortcode چیست؟

تابع add_shortcode برای ساخت و ثبت شورت کد استفاده می‌شود، اما do_shortcode برای اجرای شورت کد در کدهای PHP یا متون پردازش‌نشده به کار می‌رود.

چرا شورت کد من در ابزارک‌ها (ویجت‌ها) کار نمی‌کند؟

در برخی از نسخه‌ها یا پوسته‌های قدیمی، پردازش شورت کد در ابزارک‌های متنی غیرفعال است. با اضافه کردن عبارت add_filter('widget_text', 'do_shortcode'); به فایل توابع، این مشکل برطرف می‌شود.

آیا ساخت تعداد زیادی شورت کد سرعت سایت را کاهش می‌دهد؟

خیر، ثبت شورت کدها بار پردازشی بسیار ناچیزی دارد. تنها زمانی سرعت کاهش می‌یابد که درون تابع شورت کد، کوئری‌های سنگین دیتابیس بدون کش‌سازی اجرا شوند.

عیب‌یابی سریع مشکلات شورت کد

مشکل ۱: شورت کد عیناً به صورت متن [my_shortcode] نمایش داده می‌شود

علت: نام شورت کد در add_shortcode با آنچه در متن نوشته‌اید مطابقت ندارد، یا فایل functions.php دارای خطای سنتکس بوده و کدهای بعد از آن اجرا نشده‌اند. همچنین دقت کنید که نام شورت کد شامل حروف بزرگ یا فاصله نباشد.

مشکل ۲: محتوای شورت کد بالای کل سایت قرار می‌گیرد!

علت: در تابع PHP به‌جای استفاده از دستور return $output; از دستور echo استفاده کرده‌اید. تابع را اصلاح کرده و تمام خروجی را در یک متغیر ذخیره و بازگردانی کنید.

مشکل ۳: تگ‌های p یا br اضافه اطراف شورت کد ایجاد می‌شود

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

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

شورت کد در وردپرس چیست؟

شورت کد یک کد کوتاه داخل کروشه مانند [shortcode] است که توابع PHP را اجرا کرده و خروجی HTML را در نوشته‌ها نمایش می‌دهد بدون اینکه نیاز به کدنویسی مستقیم در ویرایشگر باشد.

بهترین محل برای قرار دادن کدهای شورت کد کجاست؟

بهترین محل، فایل functions.php در پوسته فرزند (Child Theme) یا ایجاد یک پلاگین اختصاصی است تا با به‌روزرسانی قالب، کدهای سفارشی شما پاک نشوند.

تفاوت echo و return در ساخت شورت کد چیست؟

در توابع شورت کد حتماً باید خروجی با return بازگردانده شود. استفاده از echo باعث می‌شود محتوا در بالای برگه و خارج از جایگاه اصلی رندر شده و چیدمان سایت برهم بخورد.

چگونه به شورت کد پارامترهای پویا اضافه کنیم؟

با استفاده از تابع shortcode_atts در PHP می‌توانید مقادیر پیش‌فرض تعیین کرده و ویژگی‌های ورودی کاربر مانند رنگ، لینک یا متن را به‌صورت پویا دریافت و پردازش کنید.

دیدگاهتان را بنویسید

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