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.phpdesde 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_NAMEyREQUEST_URI. También probé con amboswp-blog-header.phpywp-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.phpcambió la forma en que probóREQUEST_URIuna 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.phpcon este contenido:fuente
Una variación de la respuesta de @ prettyboymp podría ser:
fuente