Dans mon fichier de modèle, je veux inclure une bibliothèque. J'ai chargé la bibliothèque dans mon dossier de thèmes et, à l'intérieur de celui-ci, se trouve mon fichier de modèle personnalisé. Dans mon fichier de modèle personnalisé, j'ai require 'OAuth2/Client.php';
, mais lorsque je charge une page qui utilise le modèle, cela me donne ceci:
Avertissement: requis (OAuth2/Client.php): échec de l'ouverture du flux: Aucun fichier ou répertoire de ce type dans /home/healthf0/public_html/wp-content/themes/healthfitcorpwell/single-iframe.php à la ligne 4
De toute évidence, le fichier existe, je le vois assis via FTP. Pourquoi ça me dit ça?
Vous voyez cette erreur parce que vous avez require
ing le fichier avec un chemin relatif. Comme @Mark Kapulun l'a souligné dans les commentaires, vous ne devez pas utiliser de chemins relatifs lorsque vous utilisez require
ing. Au lieu de cela, vous voulez être explicite et utiliser des chemins absolus.
Utilisez get_template_directory () qui retourne le
Chemin absolu vers le répertoire du thème actuel (sans la barre oblique finale)
Dans votre fichier de modèle, l'instruction require ressemblera à ceci:
require( get_template_directory() . '/path/from/theme/root/to/file.php');
Ou get_stylesheet_directory()
si vous créez un thème enfant. doc
Mise à jour:
Comme @Jack Johansson l'a noté dans sa réponse, vous pouvez également envisager d'utiliser require_once
à la place. Cela vous protégera des erreurs générées par plusieurs inclusions du fichier. Voir cette réponse pour plus de détails.
Oui, mais l'utilisation de chemins relatifs n'est pas autorisée. Vous voulez toujours des chemins absolus. Cela peut être fait comme suit:
<?php require( get_stylesheet_directory() . '/OAuth2/Client.php'); ?>
get_stylesheet_directory()
renverra le chemin absolu où se trouve style.css
pour le thème. Cependant, il ne mettra PAS le /
final.
Vous pouvez utiliser get_template_directory()
pour obtenir un chemin absolu vers le répertoire de votre modèle. Par exemple, si votre fichier php se trouve dans /my-theme/OAuth2/Client.php
, utilisez:
require_once(get_template_directory().'/OAuth2/Client.php');
N'oubliez pas, n'utilisez PAS de fonction relative et n'accédez pas directement au fichier PHP à des fins de sécurité. De plus, vous devez utiliser cette condition dans votre fichier client.php
pour le rendre plus sécurisé:
if ( ! defined( 'ABSPATH' ) ) {
exit('No script rookies, please.');
}
Cela ne permet pas un accès direct à votre fichier PHP.
Je voudrais également aller avec require_once
au lieu de require
pour m'assurer qu'il ne déclenche aucune erreur si je l'inclue ailleurs accidentellement.