J'ai un script en ligne de commande pour maintenir un plugin wordpress et je dois charger le noyau wordpress pour pouvoir accéder aux fonctions wordpress.
Ce problème est très similaire à Initialise l’environnement WordPress à utiliser dans un vrai script cron . Bien que cela en soit différent, la question renvoyée est supposée être utilisée avec un script cron (réel), ce qui peut être accompli autrement en démarrant un script php en ligne de commande. Comme la question posée a déjà reçu une réponse et que cette réponse ne satisfait pas mes besoins, j'ai commencé cette question.
Alors, qu'est-ce qui est nécessaire dans un script de ligne de commande pour initialiser l'environnement wordpress?
Connexes
Je suis venu avec la solution suivante. Le script doit commencer par le code suivant.
<?php
if( php_sapi_name() !== 'cli' ) {
die("Meant to be run from command line");
}
function find_wordpress_base_path() {
$dir = dirname(__FILE__);
do {
//it is possible to check for other files here
if( file_exists($dir."/wp-config.php") ) {
return $dir;
}
} while( $dir = realpath("$dir/..") );
return null;
}
define( 'BASE_PATH', find_wordpress_base_path()."/" );
define('WP_USE_THEMES', false);
global $wp, $wp_query, $wp_the_query, $wp_rewrite, $wp_did_header;
require(BASE_PATH . 'wp-load.php');
Connexes
Si vous ne souhaitez pas gérer le processus fastidieux de chargement manuel de WordPress, vous pouvez simplement utiliser la commande WP-CLI 's eval-file
:
wp eval-file my-script.php
Le fichier my-script.php
peut contenir n’importe quel appel de fonction WP. Par exemple:
<?php
global $wpdb;
echo implode( ' ', $wpdb->tables() ) . "\n";