Tengo un script PHP que necesito ejecutar como trabajo cron. Sin embargo, este script necesita el acceso a la API de WP ( get_pages()
, get_post_meta()
y get_permalink()
en concreto). He seguido las instrucciones en http://codex.wordpress.org/Integrating_WordPress_with_Your_Website , pero fue en vano.
Código:
require_once('../../../wp-blog-header.php');
$args = array(
'child_of' => 2083
);
$pages = get_pages($args);
Sin embargo, cuando ejecuto php -q this_file.php
desde la línea de comandos obtengo el siguiente resultado:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Database Error</title>
</head>
<body>
<h1>Error establishing a database connection</h1>
</body>
</html>
Alguien tiene alguna idea / sugerencia?
fuente
get_pages
, necesita la clase WP. entonces wp-blog-header.php fue el archivo correcto para llamar.HTTP_HOST
,SERVER_NAME
yREQUEST_URI
. También probé con amboswp-blog-header.php
ywp-load.php
. Mismo mensaje de error como se indica en la pregunta original en todos los casos. Estoy ejecutando esto desde mi directorio de temas, ¿eso importa?Puede usar el comando wp-cli
eval-file
:Esto primero cargará el entorno WP, luego ejecutará su archivo.
fuente
La respuesta aceptada por @prettyboymp es sobre la información más útil y única sobre el acceso a WordPress desde un script php que he encontrado en la web. Funcionó perfectamente para mí con WP core 3.7.1, luego 3.9 lo rompió.
El problema fue que
wp-load.php
cambió la forma en que probóREQUEST_URI
una ruta válida. Pero afortunadamente también agregó un nuevo filtro para permitir el cortocircuito de la prueba.Así que para restaurar la funcionalidad de la respuesta en 3.9, he añadido
define('SUNRISE', 'on');
awp-config.php
, y el archivo creadowp-content/sunrise.php
con este contenido:fuente
Una variación de la respuesta de @ prettyboymp podría ser:
fuente