Comment puis-je inclure des fonctions Wordpress dans un fichier .php personnalisé?
En détail: j'ai un répertoire sous mon thème (Constructeur) nommé rapports. Ceux-ci contiennent des fichiers .php qui génèrent des rapports à partir des données du site avec DOMPDF pour le téléchargement. Pour cela, j'aimerais utiliser les fonctions fournies par le moteur Wordpress, par exemple get_the_author_meta( 'user_firstname', $user_id )
. Si je les utilise, j'obtiens (naturellement) l'erreur suivante:
Erreur fatale: appel de la fonction non définie get_the_author_meta () dans ROOT/public_html/wp-content/themes/constructeur/reports/testreport.php à la ligne 15
J'ai été amené à croire que je devais inclure wp-blog-header.php. J'utilise require_once("../../../../wp-blog-header.php");
. Avec cela, j'obtiens l'erreur 404 suivante:
Aucune page Web n'a été trouvée pour l'adresse Web: ROOT/wp-content/themes/constructeur/reports/testreport.php.
(Le require pointe vers le bon chemin. Si je le tripote, je reçois Avertissement: require_once (../../../ wp-blog-header.php): échec de l'ouverture du flux ... Le chemin doit donc être correct.)
Y a-t-il quelque chose que je néglige? Pourquoi ne puis-je pas inclure ce fichier wp? Quelle est la bonne méthode pour inclure les fonctions wp?
Merci pour l'aide, Sziro
Vous êtes sur la bonne voie. Essayez ceci à la place:
require_once("../../../../wp-load.php");
La manière la plus professionnelle sans les points, si WordPress était la racine du document:
require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
require_once(dirname(__FILE__) . '/options.php');
C’est un meilleur moyen d’inclure un fichier dans wordpress
Eh bien, si quelqu'un a de nouvelles versions PHP installées (ver> = 5.5.x), il peut également essayer le code ci-dessous dans le script racine dans le répertoire du site Wordpress:
<?php
define("WP_ROOT", __DIR__);
define("DS", DIRECTORY_SEPARATOR);
require_once WP_ROOT . DS . "wp-load.php";
Ou
<?php
define("WP_ROOT", __DIR__);
define("DS", DIRECTORY_SEPARATOR);
require_once WP_ROOT . DS . "wp-blog-header.php";
J'imagine que cette approche est plus directe et plus propre et ne nécessite pas l'ajout manuel de barres obliques ni la modification de répertoires par ..
.
J'espère que ça aide quelqu'un.
Les fichiers externes peuvent facilement accéder aux fonctions wordpress. Vous devez simplement inclure le fichier wp-load.php
dans votre fichier externe . Le fichier wp-load.php
se trouve à la racine de votre installation wordpress ..__ Exemple: supposons que votre fichier soit test.php
situé dans le répertoire racine de votre installation wordpress.
<?php
require_once('wp-load.php');
// Your custom code
?>
Source: Comment accéder aux fonctions WordPress dans un fichier externe