Cargar el entorno mínimo de WordPress

11

Hice mi propio servicio de carga para mi sitio web que es independiente de WP, pero usa WP para proporcionar funciones de db de bajo nivel y verificación de usuario. Para hacer eso, incluyo wp-load.php en mi script principal (Uploadify) pero al hacer eso parece llenar la memoria del servidor con componentes innecesarios. Gracias a eso, veo un error en mi script que parece apuntar a un complemento WP instalado.

¿Cómo puedo cargar solo los componentes principales de WP e ignorar los complementos? ¿Es esto posible?

    
pregunta MechEngineer 03.04.2012 - 20:09

4 respuestas

6

Use BackPress , pero tengo pequeños desarrollos, donde uso una instalación predeterminada y una fuente más pequeña a través de const.

ver en wp-settings.php

// Stop most of WordPress from being loaded if we just want the basics.
if ( SHORTINIT )
    return false;

Establezca la constante SHORTINIT en verdadero en el wp-config.php y vea la ejecución rápida. define( 'SHORTINIT', TRUE );

Estos son los archivos que obtienes:

// 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'
    
respondido por el bueltge 05.04.2012 - 14:03
5

Deshabilitar los complementos por completo significa que pierdes muchas ventajas.

Hay distribuciones de WordPress que van más allá y eliminan publicaciones y enlaces, etc., pero siempre se quedan atrás del núcleo de WordPress y tienden a no sobrevivir todo el tiempo.

Aquí hay algunas cosas que se podrían hacer

Iniciativa corta

Poniendo esto en tu wp-config.php:

define( 'SHORTINIT', TRUE );

O definirlo en algún lugar antes de cargar en WordPress, debería reducir el proceso de carga y devolverlo a las funciones básicas mínimas.

Instalaciones ligeras secundarias

Configure una segunda instalación de wordpress, con solo los complementos y temas que desee (si los hay). Luego, configure wp-config.php para usar el mismo directorio de wp-content y los mismos valores de la base de datos.

Backpress

WordPress, el BBpress original y glotpress entre otros están construidos alrededor de la biblioteca BackPress. Puede usar esto en lugar de WordPress para hacer su trabajo, aunque es posible que falten numerosas API y funciones o que necesiten una reimplementación / portabilidad

Tablas de opciones

También debo tener en cuenta que WordPress carga toda la tabla de opciones en la memoria para reducir las consultas, si está guardando valores grandes, el rendimiento se verá afectado.

Salir temprano

También puedes intentar conectar funciones anteriores en el proceso de carga de WordPress y salir del proceso de PHP antes de que se complete WordPress, pero no puedo aconsejarte sobre qué tan seguro sería.

Cargando complementos

También hay este artículo sobre la carga selectiva de complementos , pero requiere hacks para WordPress archivos principales

    
respondido por el Tom J Nowell 03.04.2012 - 20:20
2

¿Has probado define('SHORTINIT', true); ? No lo he probado yo mismo, pero parece que carga muy pocos aspectos del núcleo de WP a la vez que conserva suficiente funcionalidad, especialmente si todo lo que quiere es tratar con la base de datos.

    
respondido por el Tomas Buteler 05.04.2012 - 13:40
2

Para hacer funcionar a is_user_logged_in() y current_user_can() , encontré una respuesta similar here (No puedo comentar) La comparsion encuentra las respuestas aquí, como:

El uso manual de define('SHORTINIT', true) + require('wp-load.php') + incluye:

Pageload: 1.05 sek - archivos incluidos: 43 archivos

Comparando: utilizando SOLAMENTE require('wp-load.php') :

Pageload: 1.35 sek - archivos incluidos: 419 archivos

  

La diferencia de tiempo (0,3 sek) puede diferir de las instalaciones y PHP   motores, pero al mismo tiempo validar muchas solicitudes en una página de carga -cosas   ¡suma! / @ Anna Ericson

Fue una buena idea usar una llamada relativa a WP instalado dir. Desde un plugin de Wordpress "ROOT" como:

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

Luego dentro de mi 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' );

Después de esto, la validación del usuario está funcionando para mí. Gracias a las palabras finales de @Anna Ericson del código original:

  

Para otra tarea, ejecutar una o dos solicitudes, rastrear otras   los archivos necesarios podrían no valer 0.3 sek . Salta el SHORTINIT   Desorden constante y manual.

    
respondido por el cavameta 25.10.2018 - 11:21

Lea otras preguntas en las etiquetas