کد کوتاه (شورت کد) در وردپرس

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

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

ثبت شورت کد جدید

تابع add_shortcode تابعی است که برای افزودن یک شورت کد جدید به لیست شورت کد های ثبت شده وردپرس استفاده می شود. این تابع دو پارامتر ورودی می پذیرد. پارامتر اول عنوان شورت کد بودن براکت و پارامتر دوم نام تابعی که خروجی مورد نظر شورت کد را ایجاد می کند.

< ?php
/*
Plugin Name: Shortcode Example 1
Plugin URI: http://example.com/
Description: Replace [book] with a long Amazon link
Version: 1.0
*/
        
// Register a new shortcode: [book]
add_shortcode( 'book', 'bmpt_sc1_book' );
        
// The callback function that will replace [book]
function bmpt_sc1_book() {
    return ' < a href=”http://www.amazon.com/dp/0470560541” > book < /a > ';
}
       
        
? >

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

نکته مهم: خروجی تابع شورت کد باید همواره با دستور return برگشت داده شود و از استفاده از دستورات نمایش خروجی مانند echo پرهیز کنید. در صورت استفاده از echo به جای return شورت کد در محل مورد نظر شما به نمایش در نیامده و ساختار خروجی سایت به هم خواهد ریخت.

استفاده از صفات (ویژگی ها) در شورت کد

در مثال قبل لینک دسترسی به کتاب مشخصی را با استفاده از شورت کد ایجاد کردیم. فرض کنید بخواهیم برای چندین عنوان کتاب همین کار را انجام دهیم. یکی از روش ها ایجاد شورت کدهای جدا برای هر عنوان کتاب است. اما روش بهتر برای انجام این کار استفاده از صفت برای شورت کد است. صفات مورد نیاز هر شورت کد و مقادیر متناظر با هر صفت را می توانید به روش زیر به شورت کد اضافه کنید:

[book title=”Book Name1”]

برای دریافت مقادیر صفات یک شورت کد باید پارامتر ورودی $attr را به تابع شورت کد تعریف شده اضافه کنید. این پارامتر آرایه ای انجمنی از صفات شورت کد است که به صورت کلید و مقدار تنظیم شده است.

<?php
// Register a new shortcode: [book title="xxx"]
add_shortcode( 'book', 'bmpt_multiple_books' );
        
// The callback function that will replace [book]
function bmpt_multiple_books( $attr ) {
        
    switch( $attr['title'] ) {
        case 'xkcd':
            $asin = '0615314465';
            $title = 'XKCD Volume 0';
            break;
        
        default:
        case 'prowp':
            $asin = '0470560541';
            $title = 'Professional WordPress';
            break;
    }
        
    return " < a href='http://www.amazon.com/dp/$asin' > $title < /a > ";
}
? >

در مثال فوق، attr[‘title’] مقدار صفت title موجود در شورت کد را برمی گرداند.

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

فرض کنید کاربری بخواهد از متن خاصی برای عنوان هر لینک استفاده نماید و آدرس دهی به لینک کتاب را با شناسه آن انجام دهیم. بنابراین لازم است متن مورد نظر و شناسه لینک را دریافت نماییم. اما چون عنوان متن برای ما اهمیتی ندارد (برخلاف صفت شناسه کتاب) و پردازش خاصی بر روی آن انجام نمی دهیم، آن را به عنوان محتوای تگ شورت کد در نظر می گیریم. تگ های شورت کدی که دارای محتوا می باشند باید به صورت دو تکه باز و بسته از آنها استفاده نمود:

[newbook asin=”12345”]Book Name[/newbook]

پارامتر محتوای تگ شورت کد ($content) به عنوان پارامتر دوم ورودی تابع شورت کد در نظر گرفته می شود.

<?php 
add_shortcode( 'newbook', 'bmpt_sc3_newbook' );
        
// Callback function for the [newbook] shortcode
function bmpt_sc3_newbook( $attr, $content ) {
        
    // Get ASIN (Standard Identification Number)
    if( isset( $attr['asin'] ) ) {
        $asin = preg_replace( '/[^\d]/', '', $attr['asin'] );
    } else {
        $asin = '0470560541';
    }
        
    // Sanitize content, or set default
    if( !empty( $content ) ) {
        $content = esc_html( $content );
    } else {
        if( $asin == '0470560541' ) {
            $content = 'Professional WordPress';
        } else {
            $content = 'this book';
        }
    }
        
    return " < a href='http://www.amazon.com/dp/$asin' > $content < /a > ";
}
? >

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

تمامی شورت کدهای ثبت شده در وردپرس در آرایه سراسری $shortcode_tags ذخیره می شوند. اطلاعات موجود در این آرایه به صورت کلید-مقدار است که کلید آرایه عنوان شورت کد و مقادیر آن تابع شورت کد می باشد.

< ?php
        
global $shortcode_tags;
var_dump( $shortcode_tags );
        
/* Result:
array (
    'wp_caption'  = >  'img_caption_shortcode',
    'caption'     = >  'img_caption_shortcode',
    'gallery'     = >  'gallery_shortcode',
    'embed'       = >  '__return_false',
    'book' = >  'bmpt_multiple_books',
    'newbook'   = >  'bmpt_sc3_newbook',
)
*/
        
? >

حذف شورت کد

 برای حذف شورت کد از وردپرس از تابع remove_shortcode استفاده می شود. این تابع نام شورت کد بدون براکت را به عنوان پارامتر ورودی می پذیرد.

<?php
remove_shortcode(  ' newbooks'  );   
?>

برای حذف تمامی شورت کدهای ثبت شده می توان از تابع remove_all_shortcodes استفاده کرد. با اجرای این تابع آرایه $shortcode_tags خالی می گردد.

تنظیم مقادیر صفات شورت کد

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

مثال: تابع شورت کد گالری

< ?php
        
function gallery_shortcode( $attr ){
        
    // Define supported attributes and their default values
    $defaults = array(
        'order'      = >  'ASC',
        'orderby'    = >  'menu_order ID',
        'id'         = >  $post- > ID,
        'itemtag'    = >  'dl',
        'icontag'    = >  'dt',
        'captiontag' = >  'dd',
        'columns'    = >  3,
        'size'       = >  'thumbnail',
        'include'    = >  '',
        'exclude'    = >  ''
    );
        
    // Filter user entered attributes and set default if omitted
    $options = shortcode_atts( $defaults, $attr );
        
    //   [.. code continues ..]
    //   File: wp-includes/media.php
        
}
?>

یافتن شورت کد در محتوا و اجرای آن

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

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

محدودیت استفاده از شورت کدهای تو در تو

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

[foo]
    [bar]
        [baz]
    [/bar]
[/foo]

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

[foo]
    [foo]
    [/foo]
[/foo]

پست های مرتبط

Leave a Comment