Je souhaite utiliser la fonction get_option()
de wordpress dans l'un des fichiers de mon thème, qui n'est pas lié à WP, elle se trouve simplement dans le même répertoire que les autres fichiers de thème. J'ai besoin de ce fichier à cause d'actions supplémentaires liées à IPN Paypal, mais j'ai besoin que certaines valeurs de la table d'options existant dans WP soient appelées dans cette page pour que cela fonctionne. Je sais que je ne peux pas simplement utiliser get_option()
car ce fichier est ignoré par Wordpress. Existe-t-il une approche en incluant certaines parties de wordpress dans mon thème pour que cette fonctionnalité ne fonctionne que?
Le moyen le plus simple est d'inclure le fichier wp-load.php
. Ce fichier charge tout le noyau WP, vous pouvez donc utiliser les fonctions WP telles que get_option
dans votre fichier PHP:
include 'path/to/wp-load.php';
echo get_option( 'option_name' );
Le moyen le plus court consiste à charger wp-load.php
et à abandonner le chargement du moteur de modèle (Remarque: vous ne pouvez pas le faire si vous chargez le fichier d'en-tête, comme vous le voyez sur de nombreux sites de l'interweb).
# No need for the template engine
define( 'WP_USE_THEMES', false );
# Load WordPress Core
// Assuming we're in a subdir: "~/wp-content/plugins/current_dir"
require_once( '../../../wp-load.php' );
Transformez votre fichier externe en plugin WordPress. De cette façon, vous aurez un accès complet à WP fonctions essentielles.
Ceci devrait fonctionne sur n’importe quelle installation WordPress:
<?php
function load_wp_load() {
$wp_did_header = true;
require_once($_SERVER['DOCUMENT_ROOT'] . '/index.php');
$matches = preg_grep('/wp-blog-header.php/', get_included_files());
if (!empty($matches)) {
$abspath = dirname(reset($matches)) . '/';
define('ABSPATH', $abspath);
require_once(ABSPATH . 'wp-load.php');
}
}
?>