Eu tenho um script PHP que eu preciso executar como um trabalho cron. No entanto, este script precisa acesso à API WP ( get_pages()
, get_post_meta()
e get_permalink()
especificamente). Eu segui as instruções em http://codex.wordpress.org/Integrating_WordPress_with_Your_Website , mas sem sucesso.
Código:
require_once('../../../wp-blog-header.php');
$args = array(
'child_of' => 2083
);
$pages = get_pages($args);
No entanto, quando executo a php -q this_file.php
partir da linha de comando, recebo a seguinte saída:
<!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>
Alguém tem alguma opinião / sugestão?
fonte
get_pages
, ele precisa da classe WP. então wp-blog-header.php era o arquivo certo para chamar.HTTP_HOST
,SERVER_NAME
eREQUEST_URI
. Também tentei com amboswp-blog-header.php
ewp-load.php
. A mesma mensagem de erro como indicado na pergunta original em todas as instâncias. Estou executando isso no meu diretório de temas - isso importa?Você pode usar o comando wp-cli
eval-file
:Isso primeiro carregará o ambiente WP e, em seguida, execute seu arquivo.
fonte
A resposta aceita por @prettyboymp é sobre as informações mais úteis e exclusivas sobre como acessar o wordpress a partir de um script php que encontrei na web. Funcionou perfeitamente para mim com o WP core 3.7.1, depois o 3.9 quebrou.
O problema foi que
wp-load.php
mudou a maneira como testouREQUEST_URI
um caminho válido. Mas, felizmente, ele também adicionou um novo filtro para permitir um curto-circuito no teste.Assim, para restaurar a funcionalidade da resposta em 3,9, acrescentei
define('SUNRISE', 'on');
awp-config.php
, e criou arquivowp-content/sunrise.php
com este conteúdo:fonte
Uma variação da resposta de @ prettyboymp pode ser:
fonte