web-dev-qa-db-fra.com

Impossible de charger WP fonction en fonction externe

J'ai créé un site Web de librairie et les fonctions d'en-tête, de bas de page et de connexion ont été ajoutées sur ma page d'accueil.

Toutes les fonctions sont déclarées dans functions.php et connectées à des hooks.

Ma page d'accueil fonctionne correctement.

Mais j'essaie d'appeler le fichier de menu d'enregistrement à partir de l'une de mes options de menu de connexion (fichier page-non-member.php) et d'utiliser l'en-tête de la page d'accueil comme en-tête sur cette page.

J'essaie d'utiliser ceci:

require( dirname( __FILE__ ) . '../wp-load.php' );
if ( function_exists( 'get_template_part' ) ) {
    echo "get_template_part found";
}
get_template_part( 'mybookshop', 'header' );  

ou ça:

do_action( 'create_header_html', 'Make registration' );

Mais dans les deux cas, j'ai reçu le message suivant

Avertissement: nécessite (W:\domain\wpfolder\wp-content\themes\mybookshop ../ wp- load.php): impossible d'ouvrir le flux: Aucun fichier ou répertoire de ce type dans W:\domains\wpfolder\wp-content\themes\mybookshop\page-not-member.php en ligne 4

Erreur fatale: require (): ouverture impossible: 'W:\domain\wpfolder\wp-content\themes\mybookshop ../ wp-load.php' (include_path = '.; w: /modules/php/PHP-5.6 ; w: /modules/php/PHP-5.6/PEAR/pear ') dans W:\domain\wpfolder\wp-content\themes\mybookshop\page-not-member.php on line 4 ".

Structure of my folders:
-- WordPress root directory
 |-- file wp-load.php
 |
 ....
 |
 -- my site(bookshop) root directory
 |-- header.php,header.php, page-home-page.php, page-not-member.php, etc
 |
  ....

J'utilise un serveur local (OpenServer). Quel est le problème et comment puis-je le résoudre?

1
adrian

Tout d'abord, ne faites pas ça. Inclure le moteur de WordPress dans certains fichiers externes PHP n'est pas recommandé du tout. Il a plus d'inconvénients que d'inconvénients.

Si vous souhaitez accéder aux fonctions de WordPress, créez votre fichier PHP dans le dossier du thème ou créez un plugin. Vous pouvez même créer une demande AJAX si vous avez vraiment besoin d'accéder à certaines données directement par une URL.

Maintenant, à propos de votre erreur. Il semble que vous essayiez d'inclure wp-load.php à partir d'un fichier de votre thème. Si tel est le cas, ce n'est pas nécessaire. Les fichiers de thème ont déjà accès aux fonctions de WordPress. Supprimez simplement le require... et tout ira bien.

Disons que pour des raisons inconnues, ce n'est pas le cas, et vous DEVEZ inclure wp-load.php. Ce fichier existe dans le dossier racine de votre installation et vous devez l'inclure 3 fois en arrière. Donc ça va ressembler à ça:

../../../wp-load.php

Encore une fois, s'il vous plaît ne faites pas ça. Ce n'est pas une bonne pratique.

2
Jack Johansson