J'ai créé mon propre service de téléchargement pour mon site Web, qui est distinct de WP, mais utilise WP pour fournir des fonctions de base de données de bas niveau et la vérification de l'utilisateur. Pour ce faire, j'inclus wp-load.php dans mon script principal (Uploadify), mais cela semble remplir la mémoire du serveur avec des composants inutiles. Grâce à cela, je constate une erreur dans mon script qui semble pointer vers un plugin installé WP.
Comment puis-je charger uniquement les composants principaux WP et ignorer les plug-ins? Est-ce seulement possible?
Utilisez BackPress , mais j'ai de petits développements, où j'utilise une installation par défaut et une source plus petite via const.
voir sur le wp-settings.php
// Stop most of WordPress from being loaded if we just want the basics.
if ( SHORTINIT )
return false;
Définissez le const SHORTINIT sur true dans le wp-config.php
et observez le fonctionnement rapide. define( 'SHORTINIT', TRUE );
Ce sont les fichiers que vous obtenez:
// All are located in ABSPATH.WPINC
'/load.php'
'/default-constants.php'
'/version.php'
'/compat.php'
'/functions.php'
'/class-wp.php'
'/class-wp-error.php'
'/plugin.php'
'/default-filters.php'
'/pomo/mo.php'
// Only Multisite
'/ms-blogs.php'
'/ms-settings.php'
Désactiver complètement les plugins signifie perdre de nombreux avantages.
Il existe des distributions de wordpress qui vont plus loin et suppriment les publications, les liens, etc., mais elles sont toujours en retard sur le noyau de WordPress et ont tendance à ne pas survivre aussi longtemps.
Voici quelques choses qui pourraient être faites
Short Init
Mettre ceci dans votre wp-config.php:
define( 'SHORTINIT', TRUE );
Ou le définir quelque part avant de charger dans wordpress devrait réduire le processus de chargement et le ramener à des fonctions de base minimales.
Installations légères secondaires
Configurez une deuxième installation wordpress, avec uniquement les plugins et les thèmes que vous voulez (le cas échéant). Configurez ensuite le fichier wp-config.php pour utiliser le même répertoire wp-content et les mêmes valeurs de base de données.
Backpress
WordPress, l'original BBpress et glotpress, entre autres, sont construits autour de la bibliothèque BackPress. Vous pouvez utiliser cette option au lieu de WordPress pour effectuer votre travail, même si de nombreuses API et fonctionnalités peuvent être manquantes ou nécessiter une réimplémentation/un portage.
Tables d'options
Je garderais également à l'esprit que WordPress charge la totalité du tableau des options en mémoire pour réduire le nombre de requêtes. Si vous enregistrez des valeurs importantes, cela aura une incidence sur les performances.
Quitter tôt
Vous pouvez également essayer de vous connecter à des fonctions antérieures dans le processus de chargement de WordPress et de quitter le processus PHP avant la fin de WordPress, mais je ne peux pas vous dire à quel point cela serait sûr.
Chargement sélectif des plugins
Il y a aussi cet article sur le chargement sélectif des plugins , mais nécessite des hacks aux fichiers core de WordPress
Pour faire fonctionner is_user_logged_in()
et current_user_can()
, j’ai trouvé une réponse similaire ici (commentaire). La comparsion correspond aux réponses ici, comme suit:
L'utilisation de define('SHORTINIT', true)
+ require('wp-load.php')
+ comprend manuellement:
Chargement de la page: 1.05 sek - fichiers inclus: 43 fichiers
Comparaison: utilisation deUNIQUEMENTrequire('wp-load.php')
:
Chargement de la page: 1.35 sek - fichiers inclus: 419 fichiers
La différence de temps (0,3 sek) peut différer des installations et des moteurs PHP, mais lors de la validation de nombreuses demandes sur une page, tout s'additionne!/@ Anna Ericson
C'était une bonne idée d'utiliser un appel relatif à WP rép_installé. À partir d'un plugin personnalisé Wordpress "ROOT" comme:
$wordpress = '../../../wp-load.php';
Puis dans mon plugin index.php:
define('SHORTINIT', true);
include_once $wordpress;
require_once ( ABSPATH . WPINC . '/class-wp-user.php' );
require_once ( ABSPATH . WPINC . '/class-wp-roles.php' );
require_once ( ABSPATH . WPINC . '/class-wp-role.php' );
require_once ( ABSPATH . WPINC . '/class-wp-session-tokens.php' );
require_once ( ABSPATH . WPINC . '/class-wp-user-meta-session-tokens.php' );
require_once ( ABSPATH . WPINC . '/formatting.php' );
require_once ( ABSPATH . WPINC . '/capabilities.php' );
//require_once ( ABSPATH . WPINC . '/query.php' ); // - might be useful
require_once ( ABSPATH . WPINC . '/user.php' );
require_once ( ABSPATH . WPINC . '/meta.php' );
wp_cookie_constants();
require_once ( ABSPATH . WPINC . '/vars.php' );
require_once ( ABSPATH . WPINC . '/kses.php' );
require_once ( ABSPATH . WPINC . '/rest-api.php' );
require_once ( ABSPATH . WPINC . '/pluggable.php' );
Après cela, la validation de l'utilisateur fonctionne pour moi. Merci à @Anna Ericson mots finaux du code original:
Pour d’autres tâches, exécuter sur une ou deux demandes, rechercher d’autres fichiers nécessaires pourrait ne pas valoir 0,3 SEK . Ignore la constante
SHORTINIT
et encombre manuellement.
Avez-vous essayé define('SHORTINIT', true);
? Je ne l'ai pas testé moi-même, mais il semble charger très peu d'aspects de WP core tout en conservant suffisamment de fonctionnalités, en particulier si vous souhaitez uniquement gérer la base de données.