ساخت شورت‌کد در افزونه

ساخت شورت‌کد در افزونه

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

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

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

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

نکته مهم این است که شورت‌کد نباید محلی برای اجرای بی‌قاعده کد یا تولید خروجی ناامن باشد. اگر تابع شورت‌کد به‌درستی نوشته نشود، ممکن است با نام یک افزونه دیگر تداخل پیدا کند، در نوشته‌ها خروجی نامرتب بسازد یا حتی زمینه ایجاد مشکل امنیتی را فراهم کند. بنابراین در ادامه، روش استاندارد استفاده از API شورت‌کد وردپرس را با مثال‌های قابل استفاده در یک افزونه واقعی توضیح می‌دهم؛ به شکلی که در پایان بتوانید یک شورت‌کد ساده، قابل توسعه و سازگار با استانداردهای وردپرس بسازید.

ساخت شورت‌کد در افزونه

شورت‌کد در وردپرس یک عبارت کوتاه داخل کروشه است که با یک نام مشخص به تابعی در PHP متصل می‌شود. برای نمونه، زمانی که عبارت [profile_box] را در ویرایشگر قرار می‌دهید، وردپرس هنگام پردازش محتوای نوشته، تابع مربوط به آن را اجرا می‌کند و نتیجه را در همان نقطه نمایش می‌دهد.

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

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

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

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

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

کد زیر یک شورت‌کد با نام site_notice ایجاد می‌کند. پس از فعال‌سازی افزونه، با قرار دادن [site_notice] در نوشته، متن موردنظر نمایش داده می‌شود.

<?php

 

function mwp_site_notice_shortcode() {

 

return ‘<div class=”mwp-site-notice”>این یک پیام اطلاع‌رسانی است.</div>’;

 

}

 

add_shortcode( ‘site_notice’, ‘mwp_site_notice_shortcode’ );

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

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

فایل اصلی افزونه

برای شروع، یک پوشه با نامی مانند mwp-shortcodes داخل مسیر wp-content/plugins بسازید و درون آن فایل mwp-shortcodes.php را قرار دهید. فایل اصلی افزونه باید هدر استاندارد وردپرس را داشته باشد تا در پنل مدیریت شناسایی شود.

<?php

 

/**

 

* Plugin Name: MWP Custom Shortcodes

 

* Description: مجموعه‌ای از شورت‌کدهای اختصاصی وردپرس

 

* Version: 1.0.0

 

* Author: Your Name

 

*/

 

if ( ! defined( ‘ABSPATH’ ) ) {

 

exit;

 

}

 

function mwp_simple_box_shortcode( $atts = array(), $content = null ) {

 

return ‘<div class=”mwp-simple-box”>محتوای باکس</div>’;

 

}

 

add_shortcode( ‘simple_box’, ‘mwp_simple_box_shortcode’ );

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

جدا کردن منطق شورت‌کد از فایل اصلی

در افزونه‌های کوچک، قرار دادن چند شورت‌کد در فایل اصلی مشکلی ایجاد نمی‌کند؛ اما با افزایش قابلیت‌ها، بهتر است فایل‌ها را تفکیک کنید. برای نمونه، می‌توانید فایل شورت‌کدها را در مسیر includes/shortcodes.php قرار دهید و با require_once آن را بارگذاری کنید.

<?php

 

if ( ! defined( ‘ABSPATH’ ) ) {

 

exit;

 

}

 

require_once plugin_dir_path( __FILE__ ) . ‘includes/shortcodes.php’;

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

ثبت شورت‌کد با add_shortcode

نحوه عملکرد add_shortcode

تابع add_shortcode() دو آرگومان اصلی دارد: نام شورت‌کد و نام تابعی که باید اجرا شود. نمونه کلی آن به شکل زیر است:

add_shortcode( 'shortcode_name', 'callback_function_name' );

وقتی وردپرس عبارت [shortcode_name] را در محتوای نوشته پیدا می‌کند، تابع callback_function_name را اجرا می‌کند. تابع می‌تواند سه ورودی داشته باشد: ویژگی‌ها یا $atts، محتوای داخلی یا $content و نام شورت‌کد یا $tag.

function mwp_demo_shortcode( $atts, $content = null, $tag = '' ) {

 

return ‘<div>خروجی شورت‌کد</div>’;

 

}

 

add_shortcode( ‘demo_box’, ‘mwp_demo_shortcode’ );

چرا نباید در تابع شورت‌کد echo کنیم؟

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

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

function mwp_card_shortcode() {

 

ob_start();

 

?>

 

<div class=”mwp-card”>

 

<h3>عنوان کارت</h3>

 

<p>توضیحات کارت در این بخش قرار می‌گیرد.</p>

 

</div>

 

<?php

 

return ob_get_clean();

 

}

ساخت شورت‌کد دارای ویژگی و محتوای داخلی

دریافت ویژگی‌ها با shortcode_atts

ویژگی‌ها باعث می‌شوند یک شورت‌کد انعطاف‌پذیر باشد. به جای ساخت چند شورت‌کد برای رنگ‌ها یا عنوان‌های مختلف، می‌توانید یک شورت‌کد داشته باشید که ویژگی دریافت کند.

function mwp_alert_shortcode( $atts, $content = null ) {

 

  7 ابزار کاربردی سئو در وردپرس

$atts = shortcode_atts(

 

array(

 

‘type’ => ‘info’,

 

‘title’ => ‘نکته’,

 

),

 

$atts,

 

‘mwp_alert’

 

);

 

$type = sanitize_key( $atts[‘type’] );

 

$title = sanitize_text_field( $atts[‘title’] );

 

$body = do_shortcode( $content );

 

return ‘<div class=”mwp-alert mwp-alert-‘ . esc_attr( $type ) . ‘”>

 

<strong>’ . esc_html( $title ) . ‘</strong>

 

<div class=”mwp-alert-content”>’ . wp_kses_post( $body ) . ‘</div>

 

</div>’;

 

}

 

add_shortcode( ‘mwp_alert’, ‘mwp_alert_shortcode’ );

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

[mwp_alert type="warning" title="قبل از انتشار بررسی کنید"]محتوای هشدار در این قسمت قرار می‌گیرد.[/mwp_alert]

در این نمونه، sanitize_key() برای مقدار کوتاه و شبیه نام کلاس مناسب است، sanitize_text_field() برای متن ساده استفاده شده و wp_kses_post() اجازه می‌دهد HTML مجاز وردپرس باقی بماند؛ در حالی که تگ‌های خطرناک حذف می‌شوند.

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

شورت‌کد خودبسته مانند [site_notice] محتوای داخلی ندارد. در مقابل، شورت‌کد دارای تگ پایانی به شکل [mwp_alert]متن[/mwp_alert] نوشته می‌شود. برای بخش‌هایی مانند تب، باکس هشدار، نقل‌قول سفارشی و کارت محتوا، نوع دوم کاربرد بیشتری دارد.

اگر احتمال می‌دهید کاربر داخل محتوای شورت‌کد، شورت‌کد دیگری قرار دهد، می‌توانید از do_shortcode( $content ) استفاده کنید. البته این کار باید آگاهانه باشد؛ چون پردازش شورت‌کدهای تو در تو می‌تواند روی عملکرد صفحه اثر بگذارد.

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

پاک‌سازی و Escape خروجی

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

    • برای متن ساده از esc_html() یا sanitize_text_field() استفاده کنید.
    • برای URL از esc_url() استفاده کنید.
    • برای قرار دادن مقدار در ویژگی HTML از esc_attr() استفاده کنید.
    • برای HTML محدود و مجاز از wp_kses_post() کمک بگیرید.
    • برای نام کلاس یا مقدارهای شناسایی‌شده از sanitize_key() استفاده کنید.

نمونه شورت‌کد امن برای نمایش لینک

function mwp_button_shortcode( $atts ) {

 

$atts = shortcode_atts(

 

array(

 

‘url’ => home_url( ‘/’ ),

 

‘text’ => ‘مشاهده بیشتر’,

 

‘target’ => ‘_self’,

 

),

 

$atts,

 

‘mwp_button’

 

);

 

$url = esc_url( $atts[‘url’] );

 

$text = esc_html( $atts[‘text’] );

 

$target = in_array( $atts[‘target’], array( ‘_self’, ‘_blank’ ), true )

 

? $atts[‘target’]

 

: ‘_self’;

 

$rel = ‘_blank’ === $target ? ‘ rel=”noopener noreferrer”‘ : ”;

 

return ‘<a class=”mwp-button” href=”‘ . $url . ‘” target=”‘ . esc_attr( $target ) . ‘”‘ . $rel . ‘>’ . $text . ‘</a>’;

 

}

 

add_shortcode( ‘mwp_button’, ‘mwp_button_shortcode’ );

در این نمونه، مقدار target به دو گزینه محدود شده است. این محدودسازی بهتر از آن است که هر مقدار دریافت‌شده مستقیماً در خروجی HTML قرار بگیرد.

آیا شورت‌کد به nonce نیاز دارد؟

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

نمونه واقعی: ساخت باکس سه لینک اخیر

سناریوی کاربردی

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

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

function mwp_recent_posts_shortcode( $atts ) {

 

$atts = shortcode_atts(

 

array(

 

‘count’ => 3,

 

‘title’ => ‘مطالب پیشنهادی’,

 

),

 

$atts,

 

‘recent_posts_box’

 

);

 

$count = absint( $atts[‘count’] );

 

$count = $count > 0 && $count <= 10 ? $count : 3;

 

$query = new WP_Query(

 

array(

 

‘post_type’ => ‘post’,

 

‘posts_per_page’ => $count,

 

‘post_status’ => ‘publish’,

 

‘ignore_sticky_posts’ => true,

 

‘no_found_rows’ => true,

 

)

 

);

 

if ( ! $query->have_posts() ) {

 

return ”;

 

}

 

$output = ‘<aside class=”mwp-recent-posts”>’;

 

$output .= ‘<h3>’ . esc_html( $atts[‘title’] ) . ‘</h3>’;

 

$output .= ‘<ul>’;

 

while ( $query->have_posts() ) {

 

$query->the_post();

 

$output .= ‘<li>’;

 

$output .= ‘<a href=”‘ . esc_url( get_permalink() ) . ‘”>’;

 

$output .= esc_html( get_the_title() );

 

$output .= ‘</a>’;

 

$output .= ‘</li>’;

 

}

 

wp_reset_postdata();

 

$output .= ‘</ul>’;

 

$output .= ‘</aside>’;

 

return $output;

 

}

 

add_shortcode( ‘recent_posts_box’, ‘mwp_recent_posts_shortcode’ );

برای استفاده از این قابلیت، عبارت زیر را در محتوای نوشته قرار دهید:

[recent_posts_box count="3" title="سه مطلب تازه سایت"]

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

افزودن استایل بدون شلوغ کردن قالب

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

function mwp_enqueue_shortcode_styles() {

 

wp_enqueue_style(

 

‘mwp-shortcodes’,

 

plugin_dir_url( __FILE__ ) . ‘assets/css/shortcodes.css’,

 

array(),

 

‘1.0.0’

 

);

 

}

 

add_action( ‘wp_enqueue_scripts’, ‘mwp_enqueue_shortcode_styles’ );

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

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

مزایای شورت‌کد

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

معایب و محدودیت‌ها

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

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

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

مقایسه روش‌های پیاده‌سازی شورت‌کد

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

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

استفاده از نام‌های عمومی

نام‌هایی مانند box، button یا gallery ممکن است قبلاً توسط قالب یا افزونه دیگری ثبت شده باشند. برای کاهش تداخل، از پیشوند برند یا نام پروژه استفاده کنید؛ مانند mwp_button یا company_gallery.

چاپ مستقیم خروجی

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

نادیده گرفتن بازنشانی کوئری

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

بارگذاری غیرضروری فایل‌ها

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

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

چک‌لیست تست قبل از انتشار

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

بررسی خطاهای PHP و وردپرس

اگر شورت‌کد خروجی ندارد، ابتدا مطمئن شوید افزونه فعال است و نام شورت‌کد دقیقاً با نام ثبت‌شده یکسان نوشته شده است. سپس خطاهای PHP، بسته بودن صحیح تگ‌ها و وجود return را بررسی کنید. در سایت آزمایشی می‌توانید گزارش خطا را در فایل wp-config.php فعال کنید، اما نمایش خطا روی سایت اصلی برای بازدیدکنندگان توصیه نمی‌شود.

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

نکات حرفه‌ای برای بهبود تجربه کاربری

خروجی را برای کاربر قابل فهم نگه دارید

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

برای حالت خالی تصمیم مشخص داشته باشید

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

به قابلیت دسترسی توجه کنید

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

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

ساخت شورت‌کد در افزونه زمانی ارزشمند است که یک قابلیت تکرارشونده را به شکل مستقل، امن و قابل توسعه در اختیار محتوای سایت قرار دهد. برای این کار، ابتدا باید تابعی با نام اختصاصی بسازید، آن را با add_shortcode() ثبت کنید و خروجی را با return برگردانید. سپس با استفاده از shortcode_atts() ویژگی‌ها را مدیریت کنید و تمام داده‌های ورودی و خروجی را متناسب با کاربردشان پاک‌سازی و Escape کنید.

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

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

آیا می‌توان شورت‌کد را بدون افزونه و در functions.php ساخت؟

بله، از نظر فنی می‌توانید تابع و add_shortcode() را در فایل functions.php قرار دهید؛ اما با تغییر قالب، قابلیت نیز از بین می‌رود. برای قابلیت‌های مهم و بلندمدت، ساخت شورت‌کد در افزونه اختصاصی انتخاب مطمئن‌تری است.

آیا تابع شورت‌کد باید echo داشته باشد یا return؟

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

چطور برای شورت‌کد ویژگی تعریف کنیم؟

ویژگی‌ها در عبارت شورت‌کد نوشته می‌شوند؛ مانند [mwp_button text=”شروع مطالعه” url=”https://example.com”]. سپس در تابع با shortcode_atts() مقدار پیش‌فرض تعریف می‌کنید و پس از پاک‌سازی، آن‌ها را در خروجی به کار می‌برید.

آیا امکان استفاده از یک شورت‌کد داخل شورت‌کد دیگر وجود دارد؟

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

چرا شورت‌کد من در صفحه نمایش داده نمی‌شود؟

فعال نبودن افزونه، اشتباه تایپی در نام شورت‌کد، ثبت نشدن تابع، وجود خطای PHP یا استفاده نادرست از تگ پایانی از دلایل رایج هستند. همچنین بررسی کنید تابع در زمان مناسب بارگذاری شده باشد و در پایان، خروجی را با return برگرداند.

آیا استفاده زیاد از شورت‌کد روی سئو اثر منفی دارد؟

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

امتیاز دادن

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

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

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

فهرست مطالب