بررسی فایل اصلی افزونه ووکامرس woocommerce.php

تاریخ: 02 شهریور 1399

در روت ووکامرس، فایل اصلی این افزونه به نام woocommerce.php وجود دارد. این فایل هندل کننده افزونه و محل توجه وردپرس برای لود کردن تمام اجزا و ملحقات این افزونه است.

محدود کردن دسترسی مسقیم کاربران به فایل

در بالاترین قسمت این فایل، یک کد تکراری دیده می شود که تقریبا در تمام فایل های php وردپرس وجود دارد. در این دستور، وجود ثابت ABSPATH بررسی می شود.


defined( 'ABSPATH' ) || exit;

 

چنانچه می دانیم این دستور برای جلوگیری از دسترسی مستقیم کاربران به فایل های php قرار داده می شود. (آشنایی با ثابت ABSPATH)

 

تعریف ثابت اصلی افزونه با مقدار مسیر مطلق فایل اصلی

برای اینکلود کردن سایر فایل های درونی افزونه، معمول است که یک ثابت اصلی تعریف می شود.

در افزونه ووکامرس، ثابت WC_PLUGIN_FILE برای این منظور ایجاد شده است:


if ( ! defined( 'WC_PLUGIN_FILE' ) ) {
define( 'WC_PLUGIN_FILE', __FILE__ );
}

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

if ( ! defined( 'WC_PLUGIN_FILE' ) ) {
define( 'WC_PLUGIN_FILE', __FILE__ );
}

echo WC_PLUGIN_FILE;

/*
output: C:\wamp64\www\app\wp-content\plugins\woocommerce\woocommerce.php
*/

 

ووکامرس لزوما فقط از این ثابت برای اینکلود کردن فایل ها استفاده نمی کند.

ووکامرس به صورت مستقل ثابت های زیادی را در تابع define_constants در کلاس اصلی ووکامرس (فایل class-woocommerce.php) تعریف می کند تا در همه جای اپ، ثابت های تعریف شده و موردنیازی را داشته باشد.

 

اینکلود کردن فایل autoloader

ووکامرس برای مدیریت پکیج های کامپوزر، از autoloader خودش استفاده می کند.. فایل اصلی autolader ووکامرس اینکلود و سپس ران می شود.

require __DIR__ . '/src/Autoloader.php';

if ( ! \Automattic\WooCommerce\Autoloader::init() ) {
return;
}

 

اینکلود کردن پکیج های موردنیاز

ووکامرس برای مدیریت راحت تر بعضی بخش ها نظیر rest api و guthenburg blocks پکیج های مستقلی ایجاد کرده است. این پکیج ها در فولدر packages روت ووکامرس قرار دارند. برای مدیریت این پکیج ها، autoloader خاصی در فولدر src ایجاد کرده است. این فایل اینکلود شده و سپس ران می شود:

require __DIR__ . '/src/Packages.php';

\Automattic\WooCommerce\Packages::init();

 

اینکلود کردن کلاس مادر ووکامرس

ووکامرس یک کلاس اصلی دارد که تمام اتفاقات افزونه در آن می افتد. این کلاس درون فولدر includes با نام class-woocommerce وجود دارد. در این بخش کلاس مادر برای استفاده های بعدی اینکلود می شود:

// Include the main WooCommerce class.
if ( ! class_exists( 'WooCommerce', false ) ) {
include_once dirname(WC_PLUGIN_FILE) . '/includes/class-woocommerce.php';
}

 

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

طراحی افزونه وردپرس