web-dev-qa-db-fra.com

Comment inclure des fonctions Wordpress dans un fichier .php personnalisé?

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

43
Sziro

Vous êtes sur la bonne voie. Essayez ceci à la place:

require_once("../../../../wp-load.php");
86
seanbreeden

La manière la plus professionnelle sans les points, si WordPress était la racine du document:

require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
13
Salam El-Banna
require_once(dirname(__FILE__) . '/options.php');

C’est un meilleur moyen d’inclure un fichier dans wordpress

2
Syed Naeem Tariq

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.

2
VST

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

0
Aman Dhanda