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

28 mar 2012, 00:16:25
Vistas: 110K
Votos: 71

He leído sobre 2 métodos para inicializar funciones de WordPress fuera de los archivos de WordPress para poder 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 para 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');
?>
6
Comentarios

¿Qué funciones de WP estás intentando usar "fuera de WP" y por qué? Cualquiera de estos métodos seguirá cargando el entorno de WP (aunque sin soporte para temas), por lo que aún así estarás invocando funciones dentro de WP.

EAMann EAMann
28 mar 2012 00:41:56

Estoy tratando de entender la diferencia entre los 2 métodos. Lo que haré es integrar el tema de WordPress con mi script de soporte. Así que necesitaré el encabezado, pie de página y el loop de WordPress, además de cierto soporte para widgets y otros plugins.

alhoseany alhoseany
28 mar 2012 01:33:10

Realmente dudo que esta sea la forma en que quieras hacer las cosas... existen mejores soluciones que intentar cargar WordPress mismo.

EAMann EAMann
28 mar 2012 01:57:44

Estoy completamente abierto a sugerencias, estoy buscando la mejor manera de hacer las cosas. ¿Cuál es la mejor forma de integrar un tema de WordPress con una aplicación web externa?

alhoseany alhoseany
28 mar 2012 13:29:09

El Método 2 funcionó para mí mientras desarrollaba un plugin. Gracias.

StealthTrails StealthTrails
1 jul 2021 22:57:32

Sugiero editar a require( $_SERVER['DOCUMENT_ROOT'] . '/wp-blog-header.php' );, que va a la raíz del documento para cargar el núcleo de WP y evita ./././ (etc).

EdA EdA
14 ago 2024 21:57:33
Mostrar los 1 comentarios restantes
Todas las respuestas a la pregunta 7
1
67

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

define('WP_USE_THEMES', true);

/** Carga el Entorno de WordPress y la Plantilla */
require ('./wp-blog-header.php');

El archivo de cabecera del blog (que pone en cola el resto de WordPress) carga wp-load.php directamente y pone en marcha WordPress en sí. Aquí está la mayor parte 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' );

}

Así que la diferencia entre tus dos métodos es... lo que se carga.

El Método 1 es exactamente lo que hace WordPress para cargarse a sí mismo (con la excepción de desactivar los temas). Así que si necesitas todo WordPress y quieres activar todos los hooks/acciones predeterminados, ve por esa ruta.

El Método 2 es simplemente un paso más adelante en la línea. Carga todo WordPress, pero no llama a wp() ni invoca el cargador de plantillas (utilizado por los temas). El Método 2 será un poco más ligero, pero debería darte la misma funcionalidad.

28 mar 2012 01:57:02
Comentarios

¿Existe un diagrama o algo que mapee todos estos archivos? Vi uno hace tiempo pero no lo encuentro.

ninja08 ninja08
12 jun 2015 19:53:13
3
21

Método 2 de tu pregunta:

<?php 
define( 'WP_USE_THEMES', false ); // No cargar la funcionalidad de soporte de temas
require( './wp-load.php' );

wp-load.php es el acceso a todas las funciones de WordPress, eso es todo. La primera línea le indica a WordPress que no cargue los archivos del Tema; tal vez los archivos son necesarios para tus requisitos, entonces elimina la línea.

28 mar 2012 00:32:52
Comentarios

¿Qué significa incluso esa primera línea?

Sagive Sagive
28 mar 2012 01:35:46

La primera línea le indica a WordPress que no cargue toda su funcionalidad de soporte de temas. Básicamente, carga menos archivos.

EAMann EAMann
28 mar 2012 01:52:27

¿Se necesita la primera línea solo para el primer método?

mcont mcont
5 oct 2014 16:46:33
0

A veces, cargar el archivo functions.php del tema puede causarte algunos problemas. Estaba rompiendo el HTML de mi otra página. Así que esto es lo que hice y resolví mi problema:

// Definir rutas vacías para evitar conflictos
define('STYLESHEETPATH', '');
define('TEMPLATEPATH', '');

// Cargar el núcleo de WordPress
require_once(RAIZ_WORDPRESS."/wp-load.php");
27 oct 2015 13:19:27
0

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

wp-load.php no lo hará

Es útil tenerlo en cuenta al usar ajax, ya que verifica el código de estado HTTP

11 abr 2016 13:42:04
0

No necesitas llamar a todo el tema para usar funciones, solo utiliza la ubicación de wp-load.php en el directorio de WordPress.

<?php
require($_SERVER['DOCUMENT_ROOT'] . '/wordpress/wp-load.php');

?>
7 may 2020 11:45:48
2

@ninja08

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

Solo habilita ;xdebug.profiler_enable = 1 en tu archivo php.ini eliminando el ; al inicio de la línea y después reinicia el servidor Apache y ejecuta tu sitio WordPress... ahora se creará un archivo en el directorio tmp de tu servidor XAMPP... abre este archivo con la aplicación WincachGrind.

Ahora podrás ver un mapa de tu script

WincacheGrind Simple Wordpress Analyze

14 dic 2015 07:08:49
Comentarios

Deberías haber agregado esto en el comentario abajo ninja08. Esta ahora es una respuesta incorrecta.

alhoseany alhoseany
15 dic 2015 09:26:43

@alhoseany sí... lo sé... pero no tengo suficiente reputación... y entonces decidí hacer esto.

Mostafa Mostafa
15 dic 2015 20:48:44
0

En mi caso el './' no funcionó, pero esto funciona perfectamente:

require('../../../wp-load.php');

(Tendrás que retroceder tantas carpetas como sea necesario dependiendo de dónde esté tu carpeta ejecutable)

4 abr 2022 17:58:23