Cómo cargar WordPress en una página que no es de WP

14 oct 2012, 18:47:57
Vistas: 14.8K
Votos: 13

Quiero usar la función get_option() de WordPress en uno de los archivos de mi tema, que no está relacionado con WP, solo está ubicado en el mismo directorio que los demás archivos del tema. Necesito este archivo para algunas acciones adicionales relacionadas con IPN de PayPal, pero requiero algunos valores de la tabla de opciones de WP para que funcione. Sé que no puedo simplemente usar get_option() ya que este archivo no es procesado por WordPress. ¿Existe algún enfoque para incluir algunas partes de WordPress en mi tema y hacer que esta funcionalidad funcione?

2
Comentarios

He reetiquetado tu pregunta. Pista: Solo echa un vistazo dentro de [tag:wp-load.php].

kaiser kaiser
14 oct 2012 22:40:47

¿Has pensado en obtener estos valores de la base de datos usando una consulta mysql personalizada? Cargar todo el sistema WordPress solo por un par de valores de opción podría ser excesivo. Para mantenibilidad, recomiendo la respuesta de Abdussamad (construirla como un plugin)

Erik Joling Erik Joling
11 dic 2017 21:13:10
Todas las respuestas a la pregunta 4
2
12

La forma más corta es cargar wp-load.php y abortar la carga del motor de plantillas (Nota: No podrías hacer esto si estuvieras cargando el archivo de cabecera, como se ve en muchos sitios de Internet).

# No se necesita el motor de plantillas
define( 'WP_USE_THEMES', false );
# Cargar el núcleo de WordPress
// Asumiendo que estamos en un subdirectorio: "~/wp-content/plugins/current_dir"
require_once( '../../../wp-load.php' );
15 oct 2012 04:19:36
Comentarios

¿Hay más documentación sobre WP_USE_THEMES además de https://codex.wordpress.org/The_Loop? :)

jave.web jave.web
25 may 2016 22:27:20

@jave.web Claro: La búsqueda cruzada en el código fuente.

kaiser kaiser
26 may 2016 00:37:53
2

La forma más sencilla es incluir el archivo wp-load.php. Este archivo cargará todo el núcleo de WordPress, por lo que podrás usar funciones de WP como get_option en tu archivo PHP:

include 'ruta/hacia/wp-load.php';

echo get_option( 'nombre_de_la_opcion' );
14 oct 2012 19:35:37
Comentarios

+1 Pero según la respuesta anterior, puedes eliminar "lo más simple" ;)

kaiser kaiser
14 oct 2012 22:48:23

Una línea (incluyendo wp-load.php) vs. múltiples líneas (comentarios del plugin al principio), eso es lo más simple, lol.

Anh Tran Anh Tran
15 oct 2012 04:16:09
1

Convierte tu archivo externo en un plugin de WordPress. De esta manera tendrás acceso completo a las funciones principales de WP.

14 oct 2012 19:04:41
Comentarios

Esto te facilitaría mucho la vida a largo plazo.

westondeboer westondeboer
14 oct 2012 20:31:45
0

Esto debería funcionar en cualquier instalación de WordPress:

<?php
function load_wp_load() {
  $wp_did_header = true;
  require_once($_SERVER['DOCUMENT_ROOT'] . '/index.php');
  $matches = preg_grep('/wp-blog-header.php/', get_included_files());
  if (!empty($matches)) {
    $abspath = dirname(reset($matches)) . '/';
    define('ABSPATH', $abspath);
    require_once(ABSPATH . 'wp-load.php');
  }
}
?>
11 dic 2017 19:23:28