69 lines
1.9 KiB
PHP
69 lines
1.9 KiB
PHP
<?php
|
|
/**
|
|
* Autoloader for SEO Pro Stack plugin.
|
|
*
|
|
* @package SEO_Pro_Stack
|
|
* @subpackage SEO_Pro_Stack/Core
|
|
*/
|
|
|
|
// If this file is called directly, abort.
|
|
if (!defined('ABSPATH')) {
|
|
exit;
|
|
}
|
|
|
|
/**
|
|
* Class SEOProStack_Autoloader
|
|
*
|
|
* Handles autoloading of plugin classes.
|
|
*/
|
|
class SEOProStack_Autoloader {
|
|
/**
|
|
* Register the autoloader
|
|
*/
|
|
public static function register() {
|
|
spl_autoload_register(array(self::class, 'autoload'));
|
|
}
|
|
|
|
/**
|
|
* Autoload a class file based on its name
|
|
*
|
|
* @param string $class_name The name of the class to load.
|
|
*/
|
|
public static function autoload($class_name) {
|
|
// Check if the class should be loaded by this autoloader
|
|
if (false === strpos($class_name, 'SEOProStack')) {
|
|
return;
|
|
}
|
|
|
|
// Convert class name to filename
|
|
$file_path = str_replace('SEOProStack_', '', $class_name);
|
|
$file_path = str_replace('_', '-', $file_path);
|
|
$file_path = strtolower($file_path);
|
|
|
|
// Add 'class-' prefix
|
|
$file_path = 'class-' . $file_path . '.php';
|
|
|
|
// Base paths to check for classes
|
|
$base_paths = array(
|
|
SEOPROSTACK_PLUGIN_DIR . 'includes/',
|
|
SEOPROSTACK_PLUGIN_DIR . 'includes/core/',
|
|
SEOPROSTACK_PLUGIN_DIR . 'includes/features/',
|
|
SEOPROSTACK_PLUGIN_DIR . 'includes/features/auto-upload/',
|
|
SEOPROSTACK_PLUGIN_DIR . 'admin/',
|
|
SEOPROSTACK_PLUGIN_DIR . 'admin/settings/',
|
|
SEOPROSTACK_PLUGIN_DIR . 'admin/settings/ajax/',
|
|
SEOPROSTACK_PLUGIN_DIR . 'admin/settings/tabs/',
|
|
);
|
|
|
|
// Try to find and load the file
|
|
foreach ($base_paths as $base_path) {
|
|
$full_path = $base_path . $file_path;
|
|
if (file_exists($full_path)) {
|
|
require_once $full_path;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
SEOProStack_Autoloader::register(); |