مقدمات ایجاد پلاگین وردپرس

پیش از شروع کدنویسی، لازم است تا با برخی نکات مهم در مورد ساختار و جزییات یک پلاگین در وردپرس آشنا شوید. بنابراین در ابتدا به بررسی نکات ضروری و پایه برای ساخت پلاگین در وردپرس می پردازیم.

نام گذاری و توضیحات پلاگین

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

در وردپرس، هر پلاگین دارای پوشه ای مجزا در پوشه پلاگین های وردپرس واقع در مسیر wp-content/plugins/ می باشد که تمامی فایل ها و پوشه های مرتبط (مانند پوشه تصاویر، پوشه فایل های css و پوشه فایل های js)  در آن قرار می گیرد. نام پوشه پلاگین، با اتصال کلمات تشکیل دهنده آن به یکدیگر با تیره (-) نام گذاری می شود. به عنوان مثال اگر نام پلاگین شما my amazing plugin است، باید نام پوشه را به صورت my-amazing-plugin قرار دهید.

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

نمونه ای از بخش توضیحات یک پلاگین (پلاگین aksimat) در فایل اصلی آن:

/*
Plugin Name: Akismet
Plugin URI: http://akismet.com
Description: Used by millions, Akismet is quite possibly the best way in the world to
 <strong>protect your blog from spam</strong>. It keeps your site protected even while
 you sleep. To get started:
 1) Click the "Activate" link to the left of this description,
 2) <a href="http://akismet.com/get/">Sign up for an Akismet plan</a> to get an API key, and
 3) Go to your Akismet configuration page, and save your API key.
Version: 3.1.7
Author: Automattic
Author URI: http://automattic.com/wordpress-plugins/
License: GPLv2 or later
Text Domain: akismet
*/

/*
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

Copyright 2005-2015 Automattic, Inc.

همانطور که گفته شد، نام گذاری پلاگین های وردپرس باید به گونه ای باشد که بدون ایجاد مشکل و تداخل با سایر پلاگین ها بتوان از آنها استفاده کرد. انتخاب نام های یکتا برای توابع و کلاس های تعریف شده در پلاگین ها، عاملی است که از بروز مشکل تداخل نام ها جلوگیری می کند. بدین منظور در ساختار استاندارد نام گذاری توابع و کلاس ها، از یک پیشوند در ابتدای نام آنها استفاده می شود. به طور معمول، این پیشوند از ترکیب حروف ابتدایی نام پلاگین ایجاد می شود و دارای طولی به اندازه 4 کاراکتر و یا بیشتر است. به عنوان مثال تمامی توابع تعریف شده در پلاگین my amazing plugin می تواند دارای پیشوند mapl_ باشند.

به عنوان مثال:

function mapl_test_function( )
{
}

تعیین مسیرها

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

تابع plugin_dir_path($file):

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

echo plugin_dir_path(__FILE__);

ثابت __FILE__ مسیر کامل دسترسی به فایل فعلی را تعیین می کند.

مثال: برگرداندن آدرس محلی دسترسی به فایل script.js در پوشه js پلاگین فعلی

echo plugin_dir_path(__FILE__).'/js/script.js';

تابع plugins_url:

این تابع آدرس URL پوشه پلاگین های وردپرس و یا آدرس URL دسترسی به فایل های یک پلاگین خاص را بر می گرداند. این تابع دو پارامتر اختیاری به عنوان ورودی می پذیرد که برای دسترسی به آدرس فایل های پلاگین باید استفاده شوند: پارامتر اول مسیر نسبی به فایل مورد نظر در پوشه پلاگین و پارامتر دوم نام فایل اصلی پلاگین.

مثال: برگرداندن آدرس URL پوشه پلاگین های وردپرس

echo plugins_url();

خروجی:

http://example.com/wp-content/plugins

مثال: برگرداندن آدرس URL دسترسی به فایل script.js در پوشه js پلاگین فعلی

echo plugins_url('js/script.js',__FILE__);

خروجی:

http://example.com/wp-content/plugins/my-amazing-plugin/js/script.js

تابع includes_url:

آدرس دسترسی به پوشه wp-includes وردپرس را بر می گرداند.

تابع content_url:

آدرس دسترسی به پوشه wp-content را بر می گرداند.

تابع admin_url:

آدرس دسترسی به بخش مدیریت وردپرس (wp-admin) را بر می گرداند.

توابع site_url() و home_url() نیز می توانند برای دسترسی به آدرس سایت وردپرس فعلی مورد استفاده قرار گیرند. تفاوت این دو تابع در این است که تابع site_url() آدرس دسترسی به هسته وردپرس را بر می گرداند در حالی که تابع home_url() آدرس مورد بازدید (قابل مشاهده) توسط بازدیدکنندگان وب سایت را بر می گرداند.

جلوگیری از دسترسی مستقیم

فایل­های پلاگین­های وردپرس مانند سایر فایل­های PHP در صورت فراخوانی می­توانند مورد دسترسی مستقیم سایر فایل­ها و برنامه­های خارج از چرخه وردپرس قرار گیرند و به اجرا در آیند. برای جلوگیری از این کار، در ابتدای فایل­های PHP پلاگین ها و پیش از شروع کدهای اصلی برنامه از کد زیر استفاده می شود:

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

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

توابع ثبت فعال ساز، غیرفعال ساز و حذف پلاگین

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

تابع ثبت فعالسازی پلاگین

برای اجرای مجموعه دستوراتی که در زمان فعالسازی پلاگین باید انجام شوند از تابع register_activation_hook() استفاده می کنیم. این تابع دو پارامتر ورودی می­گیرد. پارامتر اول مسیر به فایل اصلی پلاگین و پارامتر دوم نام تابعی که کدهای آن در هنگام فعالسازی پلاگین باید به اجرا در آیند.

مثال:

<?php 

register_activation_hook(__FILE__,'mbpt_install_plugin');

function  mbpt_install_plugin () {
echo  'You installed the plugin successfully';
}

?>

با اجرای کد فوق، در زمان فعالسازی پلاگین، تابع mbpt_install_plugin به اجرا در می آید و پیغام You installed the plugin successfully نمایش داده می شود. در این مثال، ثابت __FILE__ مسیر مستقیم به فایل فراخوانی شده را برمی گرداند.

مثال: بررسی نسخه وردپرس در هنگام فعالسازی پلاگین

<?php
register_activation_hook( __FILE__, 'mbpt_install_plugin' );
        
function mbpt_install_plugin() {
    If ( version_compare( get_bloginfo( 'version' ), '3.1', ' < ' ) ) {
        deactivate_plugins( basename( __FILE__ ) ); // Deactivate our plugin
    }
}
?>

در مثال فوق، در هنگام فعالسازی پلاگین بررسی می شود که آیا نسخه وردپرس فعلی از 3.1 کوچکتر است یا نه. در صورت کوچکتر بودن، پلاگین با اجرای تابع deactivate_plugins غیرفعال می شود.

تابع ثبت غیرفعالسازی پلاگین

تابع غیرفعالسازی پلاگین، مشابه تابع فعالسازی، به همان پارامترهای ورودی مسیر مستقیم و نام تابع اجرایی نیاز دارد و مجموعه دستورات آن در زمان غیرفعالسازی پلاگین به اجرا در می آید.

مثال:

<?php 

register_deactivation_hook(__FILE__,'mbpt_deactive_plugin');

function  mbpt_deacive_plugin () {
echo  'You deactivate the plugin successfully';
}

?>

تابع حذف پلاگین

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

مثال:

<?php 

register_uninstall_hook(__FILE__,'mbpt_uninstall_plugin');

function  mbpt_uninstall_plugin () {
echo  'You removed the plugin successfully';
}

?>

روش دیگر اجرای دستورات مربوط به حذف پلاگین، استفاده از فایل uninstall.php است. شما می توانید به جای استفاده از تابع register_unistall_hook، در پوشه پلاگین فایلی با نام uninstall.php ایجاد نمایید و دستورات مربوط به حذف پلاگین را در این فایل قرار دهید.

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

پست های مرتبط

Leave a Comment