Charger un environnement WordPress minimum

12

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 des utilisateurs. 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 vois une erreur dans mon script qui semble pointer vers un plugin WP installé.

Comment puis-je charger uniquement les principaux composants WP et ignorer les plugins? Est-ce seulement possible?

MechEngineer
la source
1
Découvrez BackPress .
soulseekah

Réponses:

9

La désactivation complète des plugins signifie que vous perdez de nombreux avantages.

Il existe des distributions de wordpress qui vont plus loin et extraient les publications et les liens, etc., mais elles seront toujours à la traîne du noyau WordPress et ont tendance à ne pas survivre aussi longtemps.

Voici quelques choses qui pourraient être faites

Init court

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 souhaitez (le cas échéant). Configurez ensuite wp-config.php pour utiliser les mêmes valeurs de répertoire et de base de données wp-content.

Backpress

WordPress, le BBpress original et le glotpress entre autres sont construits autour de la bibliothèque BackPress. Vous pouvez l'utiliser au lieu de WordPress pour faire votre travail, bien que de nombreuses API et fonctionnalités puissent être manquantes ou avoir besoin d'être réimplémentées / portées

Tableaux d'options

Je voudrais également garder à l'esprit que WordPress charge la totalité du tableau des options en mémoire pour réduire les requêtes, si vous enregistrez des valeurs importantes, cela aura un impact sur les performances.

Sortir tôt

Vous pouvez également essayer de vous connecter à des fonctions antérieures du processus de chargement de WordPress et de quitter le processus PHP avant la fin de WordPress, mais je ne peux pas vous conseiller sur la sécurité.

Chargement sélectif des plugins

Il y a aussi cet article sur le chargement sélectif des plugins , mais il nécessite des hacks sur les fichiers core wordpress

Tom J Nowell
la source
+1 Avez-vous déjà essayé les "installations légères secondaires" ?
kaiser
J'ai fait des choses similaires, mais jamais à cette fin, la plupart des cas d'utilisation seraient mieux servis par le multisite. Je l'utilise principalement pour pouvoir installer une installation de développement en parallèle afin qu'ils partagent du contenu
Tom J Nowell
8

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;

Réglez la constante SHORTINIT sur true dans le wp-config.phpet voyez la course 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'
bueltge
la source
6

Pour la fabrication is_user_logged_in()et le current_user_can()travail, j'ai trouvé une réponse similaire ici ( Je ne peux pas commenter) La comparaison correspond aux réponses ici, comme:

L'utilisation manuelle de define('SHORTINIT', true)+ require('wp-load.php')+ comprend:

Pageload: 1.05 sek - fichiers inclus: 43 fichiers

Comparer: en utilisant UNIQUEMENT require('wp-load.php') :

Pageload: 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 tout en validant de nombreuses demandes sur un seul chargement de page, cela s'ajoute! / @ Anna Ericson

C'était une bonne idée d'utiliser un appel relatif au répertoire installé WP. À partir d'un plugin personnalisé Wordpress "ROOT" comme:

$wordpress = '../../../wp-load.php';

Puis à l'intérieur de 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 des utilisateurs fonctionne pour moi. Merci aux derniers mots @Anna Ericson du code original:

Pour d'autres tâches, exécutées sur une ou deux demandes, la recherche d'autres fichiers nécessaires peut ne pas valoir 0,3 sek . Sautez l' SHORTINIT encombrement constant et manuel.

cavameta
la source
1
C'est le moyen le plus propre jusqu'à présent. Fonctionne bien sur les appels ajax chargeant des images restreintes sur notre installation.
Jonas Lundman du
@cavameta Savez-vous comment importer Woocommerce sur wok avec SHORTINIT?
webmastx
2

As-tu 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, surtout si tout ce que vous voulez c'est traiter avec la base de données.

Tomas Buteler
la source