¿Cuál es la forma correcta de usar las funciones de WordPress fuera de los archivos de WordPress?

52

Leí sobre 2 métodos para inicializar la función de WordPress fuera de los archivos de WordPress, por lo que podemos usar estas funciones en cualquier página o sitio web fuera del blog de WordPress.

¿Cuál de estos 2 métodos es el correcto? ¿Cuáles son los casos de uso de cada método si ambos son correctos? ¿Cuál es la diferencia entre usar un método u otro?

Método 1:

<?php 
    define('WP_USE_THEMES', false);
    require('./wp-blog-header.php');
?>

Método 2:

<?php 
    define('WP_USE_THEMES', false);
    require('./wp-load.php');
?>
    
pregunta alhoseany 27.03.2012 - 23:16

5 respuestas

52

Hay poca diferencia entre los archivos. Cuando ves una página de WordPress, el primer archivo llamado es index.php . Y es, esencialmente, tu "Método 1:"

define('WP_USE_THEMES', true);

/** Loads the WordPress Environment and Template */
require ('./wp-blog-header.php');

El archivo de encabezado del blog (que pone en cola el resto de WordPress) carga wp-load.php directamente y enciende WordPress. Aquí está la mayoría de wp-blog-header.php :

if ( !isset($wp_did_header) ) {

    $wp_did_header = true;

    require_once( dirname(__FILE__) . '/wp-load.php' );

    wp();

    require_once( ABSPATH . WPINC . '/template-loader.php' );

}

Entonces, la diferencia entre tus dos métodos es ... lo que está cargado.

El método 1 es exactamente lo que WordPress hace para cargarse (con la excepción de desactivar los temas). Entonces, si necesita todos de WordPress y desea disparar todos los ganchos / acciones predeterminados, vaya con esa ruta.

El método 2 es solo un paso más en la línea. Carga todos los WordPress, pero no llama a wp() ni invoca al cargador de plantillas (usado por temas). El método 2 será un poco más liviano, pero debería darle la misma funcionalidad.

    
respondido por el EAMann 28.03.2012 - 00:57
12

Método 2 de tu pregunta:

<?php 
define( 'WP_USE_THEMES', false ); // Don't load theme support functionality
require( './wp-load.php' );

wp-load.php es el acceso a todas las funciones de WordPress, eso es todo. La primera línea le dice a WordPress que no cargue los archivos del Tema; tal vez los archivos son necesarios para sus requerimientos, luego elimine la línea.

    
respondido por el bueltge 27.03.2012 - 23:32
3

wp-blog-header.php adjuntará un estado de encabezado, devolverá un código de estado http de 404

wp-load.php no lo hará

Es útil tener en cuenta cuando se utiliza ajax, ya que comprueba el código de estado de http

    
respondido por el RayLau135 11.04.2016 - 12:42
2

En ocasiones, cargar las funciones.php del tema puede causarle algunos problemas. Estaba rompiendo el html de mi otra página. Así que eso es lo que hice y resolví mi problema:

define('STYLESHEETPATH', '');
define('TEMPLATEPATH', '');
require_once(RAIZ_WORDPRESS."/wp-load.php");
    
respondido por el Wellington Lorindo 27.10.2015 - 12:19
0

@ ninja08

Podemos usar la extensión xDebug php para analizar un script.

simplemente habilite ;xdebug.profiler_enable = 1 en su archivo php.ini eliminando ; de la primera línea y después de esto, reinicie el servidor apache y ejecute su sitio de wordpress ... ahora un archivo creado en el directorio tmp de su servidor xampp ... abra este archivo con Aplicación WincachGrind .

ahora puedes ver un mapa de tu script

    
respondido por el Mostafa 14.12.2015 - 06:08

Lea otras preguntas en las etiquetas