درست کردن شورتکدهای پیشرفته تر
کدی که در بالا مثال زدم خیلی ساده بود یک شورتکد میساختیم و آن هم یک کد html نشان میداد.
اگر قرار باشد خودمان فقط از آن استفاده کنیم شاید نیازی به پیشرفته تر کردن این کار نباشد. اما اگر قرار باشد این شورتکد مثلا داخل یک پلاگین استفاده شود که چندین نفر دیگر هم از آن استفاده کنند باید به کاربر پلاگین قابلیت کنترل بیشتری بدهیم.
قرار نیست کاربر ما هر بار خودش وارد سورس کد شود و مثلا عنوان فرم یا متن پیشنمایش(Placeholder ) داخل آن را عوض کند.
اینجا باید از
attribute ها استفاده کنیم.
تابعی که با آن شورتکد را نوشتیم که یادتان هست؟(user_email_callback). بیایید یکبار دیگر این تابع را بنویسیم با این تفاوت که این بار قرار است مقدار label و placeholder که برای فرم نوشتیم را به دست کاربر بسپاریم.
تابعی که در آن شورتکد را میسازیم یک پارامتر میتواند بگیرد. این پارامتر از جنس
آرایه است.
داخل این آرایه مقادیری که قرار است به عنوان متغیر باشند قرار میگیرد و بعد، از آنها در داخل محتوایی که قرار است نمایش دهیم استفاده میکنیم.
اما این آرایه مستقیم استفاده نمیشود. در مثال پایین خواهم گفت روش کار چطور است.
به این مثال دقت کنید تا ببینید روش کار به چه شکل است.
PHP:
function user_email_callback($attr)
{
$data = array(
'label' => 'Email',
'placeholder' => 'Write your email',
'button' => 'Send',
);
$attr = shortcode_atts($data, $attr, 'my_form');
$html = '
<form>
<div>
<label for="email">' . $attr["label"] . '</label>
<input type="text" name="email" placeholder="ٌ' . $attr["placeholder"] . '">
<input type="submit" value="' . $attr["button"] . '">
</div>
</form>';
return $html;
}
اول از یک پارامتر به نام attr$ داخل تابع استفاده کرده ام. اگر خواستید اسمش را میتوانید عوض کنید فقط حواستان باشد داخل خود تابع از همان اسم استفاده کنید.
داخل تاfع یک آرایه تعریف کردم به نام data$ . داخل این آرایه مقادیری که قرار است به عنوان attribute خود کاربر تعیین کند را نوشتم. من در این مثال
عنوان فیلد،
مقدار placeholder و
عنوان دکمه فرم را به عنوان قرار داده ام. در این آرایه برای این سه مقدار باید مقدار پیش فرض تعیین کنید. همینطوری که در این مثال نوشته شده.
حالا باید برویم
سراغ تابعی به نام shortcode_atts. این تابع در وردپرس مقادیری که در آرایه وارد کردیم را به شورتکد ما وصل میکند. سه آرگومان باید داخل این تابع بنویسم:
آرگومان اول: آرایه ای که برای مقادیر پیش فرض نوشته بودیم.
آرگومان دوم : پارامتری که برای تابع تعیین کردیم(attr$).
آرگومان سوم: اسم کدکوتاهی که تعریف کردیم.
الان باید داخل خروجی نهایی که قرار است کاربر ببینید آرایه ای که تعریف کردیم را جاگذاری کنیم.
همانطور که در کد بالا دیدید در سه
قسمت از attr["label"]$ ،attr["placeholder "]$ وattr["button"]$ استفاده شده.
اگر کدکوتاه را به این شکل بنویسید میتوانید این سه بخش را به دلخواه بدون دستکاری در کد تغییر بدهید.
PHP:
[my_form label="Name" placeholder="Enter Your Name" button="Submit"]