توابع پوسته

توابع پوسته به اون توابعی گفته می‌شه که به تهیه‌کننده پوسته امکان استفاده از اون‌ها رو با فراخوانی‌شون می‌ده. مثلاً the_title یه تابع هست که عنوان نوشته رو برمی‌گردونه؛ افزونه نظرسنجی وردپرس توابعی رو برای نمایش نظرسنجی در مکان دلخواه در پوسته فراهم کرده. برای معرفی توابع کافیه اون‌ها رو در فایل افزونه‌تون تعریف کنید و بعد اون توابع در دسترس پوسته‌ها هستند.
یه مثال کاربردی: می‌دونید که برای افزودن فرم جستجو به پوسته، یه فایل با محتویات زیر با نام مثلاً searchform.php ساخته می‌شه و بعد در سایر فایل‌های پوسته، include می‌شه.

فایل searchform.php

[php]
<form method="get" id="searchform" action="<?php echo $_SERVER['PHP_SELF'];

?>">
<div>
<input type="text" value="<?php echo wp_specialchars($s, 1); ?>" name="s" id="s"

/>
<input type="submit" id="searchsubmit" value="جستجو" />
</div>
</form>
[/php]

نحوه چپاندن فرم جستجو در فایل‌های پوسته:

[php]
<?php include (TEMPLATEPATH . "/searchform.php"); ?>
[/php]

حالا، بیاید یه تابع بسازیم تا بتونیم فرم جستجو رو با فراخوانی search یا search_form نمایش بدیم. فایل افزونه رو باز کنید و کدهای زیر رو توش قرار بدید:

[php]
<?php

function search_form() { ?>
<form method="get" id="searchform" action="<?php echo $_SERVER['PHP_SELF'];

?>">
<div>
<input type="text" value="<?php echo wp_specialchars($s, 1); ?>" name="s" id="s"

/>
<input type="submit" id="searchsubmit" value="جستجو" />
</div>
</form>
<?php } ?>

[/php]

این تابع فرم جستجو رو اکو می‌کنه. حالا در پوسته برای نمایش فرم جستجو کافیه تابع search_form رو فراخوانی کنید:

[php]
<?php search_form(); ?>
[/php]

این از این. حالا، وردپرس امکان گذاشتن کد برای اجرا لابه‌لای نوشته‌ها رو نمی‌ده (هرچند افزونه برای این موجوده). راه حل ارائه شده استفاده از shortcodeهاست. این‌ها ساختاری شبیه این دارند:

[shortcode param1="value" param2="value"]

مثلاً برای گذاشتن یه فرم نظرسنجی در نوشته از shortcodeها استفاده می‌شه. نیز shortcodeهای فراهم شده توسط خود وردپرس: (فوق‌العاده مفید)

[audio]: converts a link to an mp3 fle into an audio player
[digg]: embeds a voting button for your link on Digg
[fickr]: embeds a Flickr video
[googlemaps]: embeds Google Maps
[googlevideo]: embeds a Google Video
[livevideo]: embeds a video from LiveVideo
[odeo]: embeds an Odeo audio fle
[podtech]: embeds audio or video from the PodTech Network
[polldaddy]: embeds a PollDaddy poll(use without the space)
[redlasso]: embeds a video from Redlasso
[rockyou]: embeds a slideshow from RockYou
[slideshare]: embeds a slideshow from Slideshare.net
[sourcecode][/sourcecode]: preserves the formatting of source code
[splashcast]: embeds Splashcast media
[vimeo]: embeds a Vimeo video
[youtube]: embeds a YouTube video
(منبع: کتاب Wordpress 2.7 Cookbook)

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

[php]
add_shortcode(’search’, ’search_form’);
[/php]

الان تابع search_form ما با [search] فراخوانی می‌شه.
برای گرفتن پارامتر از shortcodeها ابتدا باید تو بخش تعریف آرگومان‌های تابع (بین پرانتزها) یه متغیر رو برای دسترسی به پارامترهای ارسالی مشخص کرد. یعنی:

[php]
function search($atts) {
[/php]

حالا باید دریافت‌شون کنیم:

[php]
extract(shortcode_atts(array(
‘dir’ => ”,
), $atts));
[/php]

اینو بذارید خط اول تابع. پارامترها رو تو اون آرایه تعریف می‌کنیم. مثلاً این‌جا یه پارامتر dir داریم که مقدار پیش‌فرضش رو هم خالی تعیین کردیم. بعد از اجرای این کد، به تک‌تک پارامترها به عنوان یه متغیر دسترسی داریم:

[php]
echo $dir."Hello!";
[/php]

dead easy!

در قسمت بعد راجع به تعریف ابزارک بحث می‌کنیم.

۲ پاسخ برای “ساخت افزونه برای وردپرس – بخش سوم”

  1. وبلاگچی گفت:

    سلام رفیق :)
    یک مطلب در رابطه با بخشش اولیای دم و رهایی مصزفی نقدی از اعدام نوشتم که دوست دارم حتمن بخونیش و در صورت تمایل لوگوی مخالفت با اعدام نوجوانان رو در وبلاگت بذاری و به دوستانت هم خبر بدی تا این کار رو انجام بدند.شرح کامل چگونگی و اینکه به کجا لینک بدی در وبلاگچی است
    http://www.weblogchi.com/2009/10/blog-post_27.html
    در آخر یه خواهش هم داشتم
    لطف کن و لینک منو اصلاح کن و در ابتدای لینک حتمن www را بذار یعنی اینجوری باشه http://www.weblogchi.com

  2. ارش گفت:

    میدونی چرا همه این چند روز یادشون افتاده ساخت افزونه رو آموزش بدن ؟
    اگه خبریه به ما هم بگین