Charger l'environnement WordPress minimum

11

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 une 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 indiquer un plugin WP installé.

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

    
posée MechEngineer 03.04.2012 - 20:09

4 réponses

6

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 l’exécution 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'
    
réponse donnée bueltge 05.04.2012 - 14:03
5

Désactiver entièrement les plugins signifie perdre de nombreux avantages.

Certaines distributions de wordpress vont plus loin et suppriment les publications, les liens, etc., mais elles sont toujours en retard sur le noyau WordPress et ont tendance à ne pas survivre aussi longtemps.

Voici certaines choses qui pourraient être faites

Init courte

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 à ses fonctions de base minimales.

Installations secondaires légères

Configurez une seconde installation wordpress, avec uniquement les plugins et les thèmes de votre choix (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, le BBpress d’origine 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

Tableaux 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 que WordPress soit terminé, mais je ne peux pas vous dire à quel point cela serait sûr.

Chargement sélectif des plugins

Cet article traite également du chargement sélectif des plugins , mais nécessite des modifications de la part du wordpress. fichiers de base

    
réponse donnée Tom J Nowell 03.04.2012 - 20:20
2

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, tout en conservant suffisamment de fonctionnalités, en particulier si vous souhaitez uniquement gérer la base de données.

    
réponse donnée Tomas Buteler 05.04.2012 - 13:40
2

Pour que is_user_logged_in() et current_user_can() fonctionnent, j'ai trouvé une réponse similaire ici (commentaire) La comparsion correspond aux réponses ici, en tant que:

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

Chargement de la page: 1.05 sek - Fichiers inclus: 43 fichiers

.

Comparaison: utilisation de UNIQUEMENT require('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 de PHP   moteurs, mais lors de la validation de nombreuses demandes sur un pageload -things   additionne! / @ Anna Ericson

C'était une bonne idée d'utiliser un appel relatif à dir installé WP. À 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 une autre tâche, exécuter une ou deux demandes, traquer les autres   Les fichiers nécessaires pourraient ne pas valoir 0,3 sek . Ignorer le SHORTINIT   encombrement constant et manuel.

    
réponse donnée cavameta 25.10.2018 - 11:21

Lire d'autres questions sur les étiquettes