ساخت شورت کد (Shortcode) اختصاصی - تصویر شاخص

ساخت شورت کد (Shortcode) اختصاصی

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

Picture of هانیه مجللی
هانیه مجللی

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

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

ساخت شورت کد (Shortcode) اختصاصی - تصویر شاخص
ساخت شورت کد (Shortcode) اختصاصی – تصویر شاخص

ساخت شورت کد (Shortcode) اختصاصی

شورت‌کد (Shortcode) در وردپرس یک میانبر متنی مثل [my_shortcode] است که هنگام نمایش صفحه، به خروجی HTML یا حتی یک منطق پیچیده (مثل گرفتن داده از دیتابیس، ساخت فرم، نمایش لیست پست‌ها و…) تبدیل می‌شود. مزیت اصلی این روش این است که نویسنده محتوا یا مدیر سایت بدون نیاز به کدنویسی، فقط با قرار دادن یک شورت‌کد در برگه/نوشته می‌تواند یک بخش پویا را نمایش دهد.

«شورت‌کدها مثل یک قرارداد بین شما و وردپرس هستند: شما یک عبارت کوتاه می‌نویسید، وردپرس بقیه کار را انجام می‌دهد.»

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

شورت‌کد دقیقاً چه زمانی به درد می‌خورد؟

  • نمایش اطلاعات تکراری مثل شماره تماس، آدرس، باکس معرفی، CTA و… در چند صفحه
  • ساخت باکس‌های پویا: آخرین نوشته‌ها، محصولات مرتبط، پیشنهاد ویژه
  • ساخت قطعه‌های قابل تنظیم: رنگ، عنوان، تعداد آیتم‌ها، دسته‌بندی، چیدمان
  • کاهش دستکاری قالب توسط مدیر محتوا (امن‌تر و تمیزتر)

ساختار پایه شورت‌کد در وردپرس

برای ساخت شورت‌کد، وردپرس یک تابع آماده دارد: add_shortcode(). شکل کلی آن:

<?php
add_shortcode('my_shortcode', 'my_shortcode_callback');

function my_shortcode_callback($atts, $content = null) {
    return 'Hello World!';
}
?>

در این مثال اگر داخل محتوا بنویسید [my_shortcode] خروجی Hello World! را می‌بینید.

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

اگر می‌خواهید شورت‌کدتان با تغییر قالب از بین نرود، بهترین انتخاب این است که آن را در یک افزونه کوچک بسازید. مراحل:

  1. داخل مسیر wp-content/plugins یک پوشه بسازید (مثلاً my-shortcodes).
  2. داخل آن یک فایل بسازید: my-shortcodes.php
  3. هدر افزونه و کد شورت‌کد را اضافه کنید.
<?php
/**
 * Plugin Name: My Shortcodes
 * Description: مجموعه شورت‌کدهای اختصاصی سایت
 * Version: 1.0.0
 * Author: Your Name
 */

if (!defined('ABSPATH')) exit;

add_shortcode('hello_box', 'ms_hello_box_shortcode');

function ms_hello_box_shortcode($atts, $content = null) {
    $atts = shortcode_atts([
        'title' => 'سلام!',
        'class' => 'hello-box'
    ], $atts, 'hello_box');

    $title = esc_html($atts['title']);
    $class = sanitize_html_class($atts['class']);

    $html  = '<div class="' . $class . '">';
    $html .= '<strong>' . $title . '</strong>';
    if (!empty($content)) {
        $html .= '<div class="hello-box__content">' . do_shortcode(wp_kses_post($content)) . '</div>';
    }
    $html .= '</div>';

    return $html;
}
?>

حالا در محتوا می‌توانید بنویسید:

[hello_box title="خوش آمدید" class="my-box"]این متن داخل باکس است.[/hello_box]

جدول: بخش‌های مهم در یک شورت‌کد استاندارد

بخشکاربردنکته سئو/فنی
add_shortcodeثبت شورت‌کد در وردپرسنام کوتاه و قابل فهم انتخاب کنید
shortcode_attsتعریف مقدار پیش‌فرض برای ویژگی‌هااز ورودی‌های خالی جلوگیری می‌کند
esc_html / wp_kses_postامن‌سازی خروجیبرای جلوگیری از XSS ضروری است
do_shortcodeاجازه اجرای شورت‌کدهای تو در تودر محتوای داخلی مفید است
بازگشت returnخروجی HTMLبه‌جای echo همیشه return کنید

نمونه کاربردی: شورت‌کد نمایش آخرین نوشته‌ها

یکی از رایج‌ترین نیازها این است که در یک صفحه (مثلاً صفحه خدمات یا درباره ما) آخرین مطالب یک دسته را نشان دهیم. این شورت‌کد را بسازید:

<?php
add_shortcode('latest_posts', 'ms_latest_posts_shortcode');

function ms_latest_posts_shortcode($atts) {
    $atts = shortcode_atts([
        'count' => 5,
        'category' => '',
        'title' => 'آخرین مطالب'
    ], $atts, 'latest_posts');

    $count = max(1, intval($atts['count']));
    $category = sanitize_text_field($atts['category']);
    $title = esc_html($atts['title']);

    $args = [
        'post_type' => 'post',
        'posts_per_page' => $count,
        'no_found_rows' => true,
        'ignore_sticky_posts' => true,
    ];

    if (!empty($category)) {
        $args['category_name'] = $category;
    }

    $q = new WP_Query($args);

    if (!$q->have_posts()) {
        return '<p>مطلبی برای نمایش پیدا نشد.</p>';
    }

    ob_start();
    ?>
    <div class="latest-posts">
      <div class="latest-posts__title"><strong><?php echo $title; ?></strong></div>
      <ul class="latest-posts__list">
        <?php while ($q->have_posts()): $q->the_post(); ?>
          <li>
            <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
          </li>
        <?php endwhile; ?>
      </ul>
    </div>
    <?php
    wp_reset_postdata();
    return ob_get_clean();
}
?>

نحوه استفاده در محتوا:

[latest_posts count="6" category="wordpress" title="مطالب جدید وردپرس"]

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

چند نکته مهم برای تمیز، سریع و امن بودن شورت‌کد

  • همیشه return کنید (نه echo). وردپرس خروجی شورت‌کد را از return جمع‌آوری می‌کند.
  • ورودی‌ها را sanitize کنید و خروجی‌ها را escape. این ساده‌ترین راه برای جلوگیری از مشکلات امنیتی است.
  • به کارایی توجه کنید: اگر شورت‌کد روی هر صفحه اجرا می‌شود، کوئری سنگین نزنید. از no_found_rows و محدود کردن تعداد نتایج کمک بگیرید.
  • کلاس و ساختار HTML قابل استایل بدهید تا بعداً در قالب به راحتی طراحی شود.
  • تداخل نام ایجاد نکنید: بهتر است پیشوند اختصاصی داشته باشید (مثلاً ms_).

شورت‌کدهای تو در تو و محتوا (Content) داخل شورت‌کد

اگر شورت‌کد شما محتوای داخلی می‌گیرد (مثل [box]...[/box]) بهتر است دو نکته را رعایت کنید:

  1. برای اینکه شورت‌کدهای داخل محتوا هم اجرا شوند، از do_shortcode استفاده کنید.
  2. برای اینکه HTML خطرناک وارد نشود، از wp_kses_post کمک بگیرید.

همان‌طور که در نمونه hello_box دیدید، این دو نکته باعث می‌شود هم انعطاف داشته باشید، هم امنیت.

استفاده از شورت‌کد در ابزارک‌ها و بخش‌های مختلف سایت

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

<?php
add_filter('widget_text', 'do_shortcode');
?>

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

چطور شورت‌کد را سئو-دوست طراحی کنیم؟

خود شورت‌کد به‌تنهایی «سئو» نیست، اما خروجی آن می‌تواند کاملاً روی تجربه کاربر و در نتیجه سئو اثر بگذارد. چند پیشنهاد عملی:

  • خروجی را با HTML معنایی بسازید: تیترها را درست، لیست‌ها را درست، لینک‌ها را با متن واضح قرار دهید.
  • برای تصاویر، alt مناسب تولید کنید (اگر شورت‌کد تصویر نمایش می‌دهد).
  • از تولید محتوای تکراری بی‌هدف در صفحات مختلف خودداری کنید (مثلاً یک بلوک بزرگ متن ثابت در همه صفحات).
  • خروجی را سبک نگه دارید؛ اسکریپت و CSS سنگین را فقط در صفحاتی لود کنید که شورت‌کد استفاده شده است.

اشتباهات رایج هنگام ساخت شورت‌کد

  • قرار دادن کد شورت‌کد در قالب اصلی و از دست رفتن آن بعد از تغییر قالب
  • عدم استفاده از esc_* و باز شدن راه XSS
  • کوئری‌های سنگین و بدون محدودیت در شورت‌کدی که در صفحات زیاد استفاده می‌شود
  • نام‌گذاری عمومی مثل [box] که ممکن است با افزونه‌ها تداخل داشته باشد
  • return نکردن خروجی و خراب شدن چیدمان صفحه

نتیجه‌گیری

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

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

5/5 - 1 امتیاز

نظرات با ارزش کاربران

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

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

فهرست مطالب