checkRequirements()) {
return;
}
$this->loadDependencies();
$this->loadTextdomain();
$this->core = new WPSlug_Core();
}
private function checkRequirements()
{
if (version_compare(PHP_VERSION, "7.0", "<")) {
add_action('admin_notices', function() {
echo '
';
echo esc_html__('WP Slug requires PHP 7.0 or higher. Please upgrade your PHP version.', 'wpslug');
echo '
';
});
return false;
}
if (version_compare(get_bloginfo("version"), "5.0", "<")) {
add_action('admin_notices', function() {
echo '';
echo esc_html__('WP Slug requires WordPress 5.0 or higher. Please upgrade your WordPress version.', 'wpslug');
echo '
';
});
return false;
}
return true;
}
private function loadDependencies()
{
require_once WPSLUG_PLUGIN_DIR . "includes/class-wpslug-validator.php";
require_once WPSLUG_PLUGIN_DIR . "includes/class-wpslug-settings.php";
require_once WPSLUG_PLUGIN_DIR . "includes/class-wpslug-pinyin.php";
require_once WPSLUG_PLUGIN_DIR . "includes/class-wpslug-optimizer.php";
require_once WPSLUG_PLUGIN_DIR . "includes/class-wpslug-transliterator.php";
require_once WPSLUG_PLUGIN_DIR . "includes/class-wpslug-translator.php";
require_once WPSLUG_PLUGIN_DIR . "includes/class-wpslug-converter.php";
require_once WPSLUG_PLUGIN_DIR . "includes/class-wpslug-core.php";
if (is_admin()) {
require_once WPSLUG_PLUGIN_DIR . "includes/class-wpslug-admin.php";
}
}
public function initLanguages()
{
$locale = apply_filters('plugin_locale', get_locale(), 'wpslug');
$mo_file = WPSLUG_PLUGIN_DIR . "languages/wpslug-{$locale}.mo";
if (file_exists($mo_file)) {
load_textdomain('wpslug', $mo_file);
}
}
public function loadTextdomain()
{
load_plugin_textdomain(
"wpslug",
false,
dirname(plugin_basename(__FILE__)) . "/languages/"
);
}
public function activate()
{
if (!function_exists("is_plugin_active")) {
require_once ABSPATH . "wp-admin/includes/plugin.php";
}
if (!$this->checkRequirements()) {
deactivate_plugins(plugin_basename(__FILE__));
wp_die(
esc_html__('WP Slug plugin requirements not met. Please check your PHP and WordPress versions.', 'wpslug'),
esc_html__('Plugin Activation Error', 'wpslug'),
array('back_link' => true)
);
}
$this->loadDependencies();
try {
$settings = new WPSlug_Settings();
$settings->createDefaultOptions();
$core = new WPSlug_Core();
$core->activate();
add_option('wpslug_activation_redirect', true);
} catch (Exception $e) {
error_log('WP Slug activation error: ' . $e->getMessage());
wp_die(
esc_html__('An error occurred during plugin activation. Please check your server logs.', 'wpslug'),
esc_html__('Plugin Activation Error', 'wpslug'),
array('back_link' => true)
);
}
}
public function deactivate()
{
try {
if ($this->core) {
$this->core->deactivate();
}
delete_option('wpslug_activation_redirect');
} catch (Exception $e) {
error_log('WP Slug deactivation error: ' . $e->getMessage());
}
}
public static function uninstall()
{
try {
if (class_exists("WPSlug_Settings")) {
$settings = new WPSlug_Settings();
$settings->uninstall();
}
delete_option('wpslug_activation_redirect');
} catch (Exception $e) {
error_log('WP Slug uninstall error: ' . $e->getMessage());
}
}
public function getCore()
{
return $this->core;
}
public function getSettings()
{
if ($this->core) {
return $this->core->getSettings();
}
return null;
}
public function getConverter()
{
if ($this->core) {
return $this->core->getConverter();
}
return null;
}
public function getOptimizer()
{
if ($this->core) {
return $this->core->getOptimizer();
}
return null;
}
}
function wpslug()
{
return WPSlug::getInstance();
}
if (is_admin()) {
add_action('admin_init', function() {
if (get_option('wpslug_activation_redirect', false)) {
delete_option('wpslug_activation_redirect');
if (!isset($_GET['activate-multi'])) {
wp_safe_redirect(admin_url('options-general.php?page=wpslug'));
exit;
}
}
});
}
wpslug();