زمانی که افزونه ووکامرس فعال می شود چه اتفاقاتی میفتد؟

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

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

در ووکامرس، این تابع به واسطه متد construct کلاس اصلی (class-woocommerce.php) موجود در فولدر includes و درون تابع init_hooks تعریف می شود.


// includes/class-woocommerce.php

public function __construct() {
$this->init_hooks();
}

private function init_hooks() {
register_activation_hook( WC_PLUGIN_FILE, array( 'WC_Install', 'install' ) );
}

 

چنانچه مشخص است، وردپرس یک کلاس مستقل با نام WC_Install برای مدیریت فعالسازی افزونه ایجاد کرده است. این کلاس در فایل class-wc-install.php در فولدر includes وجود دارد.

 

بررسی تابع install در کلاس WC_Install

چنانچه گفتیم این تابع در هنگام نصب ووکامرس اجرا می شود.


/**
* Install WC.
*/
public static function install() {
if ( ! is_blog_installed() ) {
return;
}

// Check if we are not already running this routine.
if ( 'yes' === get_transient( 'wc_installing' ) ) {
return;
}

// If we made it till here nothing is running yet, lets set the transient now.
set_transient( 'wc_installing', 'yes', MINUTE_IN_SECONDS * 10 );
wc_maybe_define_constant( 'WC_INSTALLING', true );

WC()->wpdb_table_fix();
self::remove_admin_notices();
self::create_tables();
self::verify_base_tables();
self::create_options();
self::create_roles();
self::setup_environment();
self::create_terms();
self::create_cron_jobs();
self::create_files();
self::maybe_enable_setup_wizard();
self::update_wc_version();
self::maybe_update_db_version();
self::maybe_enable_homescreen();

delete_transient( 'wc_installing' );

do_action( 'woocommerce_flush_rewrite_rules' );
do_action( 'woocommerce_installed' );
}

 

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


if ( ! is_blog_installed() ) {
return;
}

 

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

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