Mam skrypt PHP, który muszę uruchomić jako zadanie CRON. Jednak to skrypt potrzebuje dostępu do API (WP get_pages()
, get_post_meta()
a get_permalink()
konkretnie). Postępowałem zgodnie z instrukcjami na stronie http://codex.wordpress.org/Integrating_WordPress_with_Your_Website , ale bezskutecznie.
Kod:
require_once('../../../wp-blog-header.php');
$args = array(
'child_of' => 2083
);
$pages = get_pages($args);
Jednak po uruchomieniu php -q this_file.php
z wiersza polecenia otrzymuję następujące dane wyjściowe:
<!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>
Czy ktoś ma jakieś przemyślenia / sugestie?
źródło
get_pages
, potrzebuje klasy WP. więc wp-blog-header.php był odpowiednim plikiem do wywołania.HTTP_HOST
,SERVER_NAME
iREQUEST_URI
. Próbowałem także z obuwp-blog-header.php
iwp-load.php
. Ten sam komunikat o błędzie, jak podano w pierwotnym pytaniu we wszystkich przypadkach. Uruchamiam to z katalogu motywów - czy to ma znaczenie?Możesz użyć polecenia wp-cli
eval-file
:Spowoduje to najpierw załadowanie środowiska WP, a następnie uruchomienie pliku.
źródło
Akceptowana odpowiedź @prettyboymp dotyczy najbardziej pomocnych i unikalnych informacji na temat uzyskiwania dostępu do wordpress ze skryptu php, który znalazłem w sieci. Działa dla mnie idealnie z rdzeniem WP 3.7.1, a następnie 3,9 go zepsuło.
Problem polegał na tym, że
wp-load.php
zmienił sposób, w jaki testowałREQUEST_URI
prawidłową ścieżkę. Ale na szczęście dodano także nowy filtr, aby umożliwić zwarcie testu.Tak aby przywrócić funkcjonalność odpowiedzi w 3.9, dodałem
define('SUNRISE', 'on');
dowp-config.php
, a utworzony plikwp-content/sunrise.php
z tej zawartości:źródło
Wariacją odpowiedzi @ prettyboymp może być:
źródło