Ich habe ein PHP-Skript, das ich als Cron-Job ausführen muss. Allerdings muss dieses Skript Zugriff auf die WP - API ( get_pages()
, get_post_meta()
und get_permalink()
speziell). Ich habe die Anweisungen unter http://codex.wordpress.org/Integrating_WordPress_with_Your_Website befolgt , aber ohne Erfolg.
Code:
require_once('../../../wp-blog-header.php');
$args = array(
'child_of' => 2083
);
$pages = get_pages($args);
Wenn ich jedoch php -q this_file.php
von der Kommandozeile aus starte, erhalte ich folgende Ausgabe:
<!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>
Hat jemand irgendwelche Gedanken / Vorschläge?
quelle
get_pages
benötigt er die WP-Klasse. Also war wp-blog-header.php die richtige Datei zum Aufrufen.HTTP_HOST
,SERVER_NAME
undREQUEST_URI
. Auch mit beidenwp-blog-header.php
und ausprobiertwp-load.php
. In allen Fällen dieselbe Fehlermeldung wie in der ursprünglichen Frage angegeben. Ich rufe dies von meinem Themenverzeichnis aus auf - ist das wichtig?Sie können den Befehl wp-cli verwenden
eval-file
:Dadurch wird zuerst die WP-Umgebung geladen und dann Ihre Datei ausgeführt.
quelle
Die akzeptierte Antwort von @prettyboymp handelt von den hilfreichsten und einzigartigsten Informationen zum Zugriff auf WordPress über ein PHP-Skript, das ich im Web gefunden habe. Es funktionierte perfekt für mich mit WP Core 3.7.1, dann brach 3.9 es.
Das Problem war, dass
wp-load.php
sich die Art und Weise geändert hat, in derREQUEST_URI
ein gültiger Pfad ermittelt wurde. Glücklicherweise wurde ein neuer Filter hinzugefügt, um den Test kurzschließen zu können.So die Funktionalität der Antwort wiederherstellen in 3.9, habe ich
define('SUNRISE', 'on');
zuwp-config.php
, und erstellen Dateiwp-content/sunrise.php
mit folgendem Inhalt:quelle
Eine Variation der Antwort von @ prettyboymp könnte sein:
quelle