-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwp-seo-advanced.php
More file actions
176 lines (152 loc) · 5.49 KB
/
Copy pathwp-seo-advanced.php
File metadata and controls
176 lines (152 loc) · 5.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
<?php
/**
* Plugin Name: WP SEO Advanced
* Plugin URI: https://github.com/Probe311
* Description: Plugin WordPress d'analyse et d'optimisation SEO avancée avec intégrations Yoast SEO et Google Site Kit, support multi-IA, et fonctionnalités EEAT/GEO.
* Version: 1.0.6
* Author: Julien Vaissier
* Author URI: https://github.com/Probe311
* License: GPL-2.0+
* License URI: http://www.gnu.org/licenses/gpl-2.0.txt
* Text Domain: wp-seo-advanced
* Domain Path: /languages
* Requires at least: 6.0
* Requires PHP: 8.0
* Network: true
* Update URI: false
*/
// Si ce fichier est appelé directement, abandonner.
if ( ! defined( 'WPINC' ) ) {
die;
}
// Vérifier que WordPress est chargé
if ( ! function_exists( 'plugin_dir_path' ) ) {
return;
}
/**
* Version actuelle du plugin
*/
define( 'WP_SEO_ADVANCED_VERSION', '1.0.6' );
/**
* Chemin du fichier du plugin
*/
define( 'WP_SEO_ADVANCED_FILE', __FILE__ );
/**
* Chemin du répertoire du plugin
*/
define( 'WP_SEO_ADVANCED_PATH', plugin_dir_path( __FILE__ ) );
/**
* URL du répertoire du plugin
*/
define( 'WP_SEO_ADVANCED_URL', plugin_dir_url( __FILE__ ) );
/**
* Nom du plugin
*/
define( 'WP_SEO_ADVANCED_NAME', 'WP SEO Advanced' );
/**
* Préfixe de la base de données
*/
define( 'WP_SEO_ADVANCED_DB_PREFIX', 'wp_seo_' );
/**
* Autoloader des classes (map statique pour éviter boucles et multiples file_exists)
*/
spl_autoload_register( function ( $class ) {
if ( strncmp( 'WP_SEO_', $class, 7 ) !== 0 ) {
return;
}
$base_dir = defined( 'WP_SEO_ADVANCED_PATH' ) ? WP_SEO_ADVANCED_PATH . 'includes/' : plugin_dir_path( __FILE__ ) . 'includes/';
$relative_class = substr( $class, 7 );
$class_name = strtolower( str_replace( '_', '-', $relative_class ) );
// Map statique : une seule recherche, pas de fallback en boucle
$class_map = array(
'core' => '', 'activator' => '', 'deactivator' => '',
'admin' => 'admin/', 'dashboard' => 'admin/', 'settings' => 'admin/',
'content-analyzer' => 'admin/', 'logs' => 'admin/', 'taxonomy-controller' => 'admin/',
'engine' => 'engine/', 'analyzer' => 'engine/', 'eaat-analyzer' => 'engine/',
'geo-analyzer' => 'engine/', 'intent-detector' => 'engine/', 'recommendations' => 'engine/',
'semantic-analyzer' => 'engine/', 'schema-analyzer' => 'engine/', 'performance-analyzer' => 'engine/',
'content-quality-analyzer' => 'engine/', 'accessibility-analyzer' => 'engine/',
'link-structure-analyzer' => 'engine/', 'content-richness-analyzer' => 'engine/',
'integration-base' => 'integrations/', 'integration-manager' => 'integrations/',
'yoast' => 'integrations/', 'sitekit' => 'integrations/',
'ai-manager' => 'ai/', 'ai-provider-interface' => 'ai/', 'ai-service' => 'ai/', 'ai-enricher' => 'ai/',
'ai-openai' => 'ai/providers/', 'ai-anthropic' => 'ai/providers/', 'ai-gemini' => 'ai/providers/',
'ai-mistral' => 'ai/providers/', 'ai-groq' => 'ai/providers/', 'ai-openrouter' => 'ai/providers/',
'database' => 'database/', 'cache' => 'cache/', 'cron' => 'cron/', 'logger' => 'logger/',
'helpers' => 'utils/', 'validator' => 'utils/', 'options' => 'utils/',
'api-retry' => 'utils/', 'compatibility' => 'utils/',
'ai-rate-limiter' => 'utils/', 'ai-usage-tracker' => 'utils/', 'language-detector' => 'utils/',
'rest-controller' => 'rest/',
);
if ( ! isset( $class_map[ $class_name ] ) ) {
return;
}
$file = $base_dir . $class_map[ $class_name ] . 'class-wp-seo-' . $class_name . '.php';
if ( is_readable( $file ) ) {
require_once $file;
}
} );
/**
* Code exécuté lors de l'activation du plugin
*/
function wp_seo_advanced_activate() {
// Définir les constantes si elles n'existent pas encore
if ( ! defined( 'WP_SEO_ADVANCED_PATH' ) ) {
define( 'WP_SEO_ADVANCED_PATH', plugin_dir_path( __FILE__ ) );
}
require_once WP_SEO_ADVANCED_PATH . 'includes/class-wp-seo-activator.php';
if ( class_exists( 'WP_SEO_Activator' ) ) {
WP_SEO_Activator::activate();
}
}
/**
* Code exécuté lors de la désactivation du plugin
*/
function wp_seo_advanced_deactivate() {
// Définir les constantes si elles n'existent pas encore
if ( ! defined( 'WP_SEO_ADVANCED_PATH' ) ) {
define( 'WP_SEO_ADVANCED_PATH', plugin_dir_path( __FILE__ ) );
}
require_once WP_SEO_ADVANCED_PATH . 'includes/class-wp-seo-deactivator.php';
if ( class_exists( 'WP_SEO_Deactivator' ) ) {
WP_SEO_Deactivator::deactivate();
}
}
register_activation_hook( __FILE__, 'wp_seo_advanced_activate' );
register_deactivation_hook( __FILE__, 'wp_seo_advanced_deactivate' );
/**
* Initialisation du plugin
*/
function wp_seo_advanced_init() {
// Vérifier que WordPress est chargé
if ( ! function_exists( 'add_action' ) ) {
return;
}
// Charger la classe Core explicitement au cas où l'autoloader ne fonctionne pas
if ( ! class_exists( 'WP_SEO_Core' ) ) {
$core_file = WP_SEO_ADVANCED_PATH . 'includes/class-wp-seo-core.php';
if ( file_exists( $core_file ) ) {
require_once $core_file;
} else {
// Log l'erreur si possible
if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
error_log( 'WP SEO Advanced: Fichier Core introuvable : ' . $core_file );
}
return;
}
}
if ( class_exists( 'WP_SEO_Core' ) ) {
try {
$plugin = WP_SEO_Core::get_instance();
if ( method_exists( $plugin, 'run' ) ) {
$plugin->run();
}
} catch ( Exception $e ) {
if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
error_log( 'WP SEO Advanced: Erreur lors de l\'initialisation : ' . $e->getMessage() );
}
}
}
}
// Démarrer le plugin après le chargement de WordPress
add_action( 'plugins_loaded', 'wp_seo_advanced_init', 10 );