Inclure un fichier PHP externe dans un modèle personnalisé Wordpress
-
-
Jetez un œil à http://codex.wordpress.org/Integrating_WordPress_with_Your_Websitepour répondre à votre question.Take a look at http://codex.wordpress.org/Integrating_WordPress_with_Your_Website should answer your question.
- 0
- 2013-08-26
- Mark Davidson
-
Tupeux l'utiliser.Quelest leproblème que vous rencontrez?You can use it. What's the problem are you facing?
- 1
- 2013-08-26
- Vinod Dalvi
-
salut,je viens de copiermesfichiers dans le dossier wordpresset de les lier correctement .. detoutefaçon,quelleest la réponse à cette question?J'aijuste unepageblanche viergehi, i just copied my files inside the wordpress folder and linked them properly.. anyway, whats the answer on this question? I just get a blank white page
- 0
- 2013-08-26
- Jeremi Liwanag
-
Pour être clair,vousessayez d'inclure desfichiers qui setrouvent sur un siteexterne?Sitelest le cas,les autorisations actuelles du site defichiersphppermettent-elles l'accèspublicen lecture à cesfichiers?Just to be clear, you are trying to include files that are located on an external site? If so, do the current permissions of the php files site allow public read access to these files?
- 0
- 2014-02-13
- iyrin
-
6 réponses
- votes
-
- 2014-03-25
Non,vousne pouvezpasinclure defichiers PHP dans unthème de lamanière que vous avezindiquée.
Pour comprendrepourquoi,tout ce quenous avons àfaireest defairepreuve debon senset de réflexion critique debase:
- Vousferiez une demande à distance à un serveur distant
include
ne peutpasfaire cela - Siparmiracle celafonctionnait,vous auriez unexploit de sécuritémajeur carje pourrais alorsfaire quelque chose comme ceci:
include( 'http://yoursite/wp-config.php' ); echo DB_PASSWORD;
. Imaginez à quelpointil seraitfacile depirater des sites Web! Qu'est-ce quipeutm'empêcher d'inclurefacebook.com/index.php
? - Si,même alors,celafonctionnait d'unemanière ou d'une autre,et que c'était sûr,imaginez la lenteur! Vousfaites une requête au serveur,puis le serveur s'en vaet enfait une autrepour l'en-tête,et une autrepour labarre latérale,et une autrepour lepied depage,toute cette attente,quipourrait être dérangé?
- Maisenfin,même siincludepouvaitfaire des requêtes distantes. Ce qu'ilne peutpas,pourquoi retournerait-il du code PHP? Ne retournera-t-ilpas ce que le serveur crache,c'est-à-dire le HTMLfinalisé? Le serveurexécuten'importe quel PHP avant qu'ilne soit renvoyé,donciln'y auraitpas de PHP dans ce que vousincluez ..
Doncnon,cen'estpaspossible. Mais un rapide copier-coller du code de votre question dans un script PHP suivi d'une visite rapide vous aurait dit queplus vite que quiconqueici.
Au lieu de cela,vousne pouvezinclure que desfichiers du système defichiers local sur lequel votre serveurest actuellementexécuté. Vousne transmettriezjamais une URL à uneinstruction d'inclusion ou d'exigence.
Donc,sije suis dansindex.php,et qu'il y a unfichier dans lemême dossier appelé sidebar.php,je l'inclurais comme ceci:
include('sidebar.php');
include
renvoie une valeuren cas d'échec. La sémantique de l'instructionincludeest debase PHPgénéraleet est hors sujet sur ce site de questions/réponses.Cependant,j'aigardé cette question ouverte caril y a unefonction API WordPress que vous devriez utiliser à laplaceet quiestmeilleure que d'inclureet d'exigerpour ce dont vous avezbesoin.
Pourinclure un élément demodèle dans unthème,utilisez:
get_template_part( 'partname' );
Cettefonction cherchera également à l'intérieur d'unthèmeenfant ouparent lapartie que vous avez spécifiée.
Parexemple,dans ce code:
get_template_part( 'sidebar', 'first' );
Il rechercheraet inclura lepremier qu'iltrouve de ceux-ci:
- thèmeenfant
sidebar-first.php
- thèmeparent
sidebar-first.php
- thèmeenfant
sidebar.php
- thèmeparent
sidebar.php
Il convient denoter que vousne devez utiliserget_template_part quepourinclure desfichiersmodèles. Ne l'utilisezpaspourinclure desfichierstels que desbibliothèques ou d'autresfichiers PHP quine produisentpas de code HTML.
Je vous suggère de lire les sujets suivants avant de continuer:
- lesfonctionsincludeet require sur PHP.Net
- thèmesparentset enfants
- la hiérarchie desmodèleset comment WordPress choisit lemodèle à utiliser
-
<?php php ?> <?php tag ?> <?php spam ?> <?php and ?> <?php why ?> <?php its ?> <?php bad ?>
get_template_part
- l'API
WP_HTTP
,pour cestemps réels,vous devez vraimentfaire une requête à distance à une API. Desfonctionstelles quewp_remote_get
etwp_remote_post
vous aiderontici. - Débogage PHP. Vospagesblanches sont deserreurs PHPfatales,mais comme vous avez configuré lajournalisation deserreurspour lamasquer dufront-end,elles sontenregistrées dans unfichierjournal deserreurs dont vousn'êtespas au courant. Trouvez votrejournal d'erreurs,définissez
WP_DEBUG
dans votrewp-config.php
et installez unplugintel que labarre de débogage ou lemoniteur de requêtes,cela vous aidera énormément. Assurez-vous cependant d'appelerwp_footer
dans lepied depage de vosmodèles.
No, you cannot include PHP files in a theme the way you indicated.
To see why, all we have to do is exercise some common sense and basic critical thinking:
- You would be doing a remote request to a remote server
include
cannot do this - If by some miracle it worked, you would have a major security exploit as I could then do something like this:
include( 'http://yoursite/wp-config.php' ); echo DB_PASSWORD;
. Imagine how easy it would be to hack websites! Whats to stop me includingfacebook.com/index.php
? - If even then it somehow worked, and it was secure, imagine the slowness! You make a request to the server, and then the server goes and makes another for the header, and another for the sidebar, and another for the footer, all that waiting, who could be bothered?
- But finally, even if include could make remote requests. Which it can't, why would it return PHP code? Won't it return what the server spits out, aka the finalised html? The server runs any PHP before it gets returned so there'd be no PHP in what your including..
So no, it's not possible. But a quick copy paste of the code in your question into a PHP script followed by a quick visit would have told you that quicker than anybody here.
Instead, you can only include files from the local file system your server is currently running on. You would never pass in a URL to an include or a require statement.
So if I'm in index.php, and there is a file in the same folder called sidebar.php, I would include it like this:
include('sidebar.php');
include
returns a value if this failed. The semantics of the include statement are general basic PHP and are off topic on this Q&A site.However I kept this question open because there is a WordPress API function you should be using instead that is better than include and require for what you need.
To include a template part in a theme, use:
get_template_part( 'partname' );
This function will also look inside a child or parent theme for the part you specified.
For example, in this code:
get_template_part( 'sidebar', 'first' );
It will look for and include the first it finds of these:
- child theme
sidebar-first.php
- parent theme
sidebar-first.php
- child theme
sidebar.php
- parent theme
sidebar.php
It should be noted, that you should only use get_template_part to include template files. Don't use it to include files such as libraries, or other PHP files that do not output html.
I suggest you read up on the following subjects before continuing:
- the include and require functions on PHP.Net
- parent and child themes
- the template hierarchy and how WordPress chooses which template to use
<?php php ?> <?php tag ?> <?php spam ?> <?php and ?> <?php why ?> <?php its ?> <?php bad ?>
get_template_part
- the
WP_HTTP
API, for those genuine times you really need to do a remote request to an API. Functions such aswp_remote_get
andwp_remote_post
will help here. - PHP Debugging. Your white pages are PHP Fatal errors, but because you have error logging set to hide it from the front end, it's being logged to an error log file you're unaware of. Find your error log, define
WP_DEBUG
in yourwp-config.php
and install a plugin such as debug bar or query monitor, these will help you enormously. Make sure you callwp_footer
in your templates footer though.
-
- 2014-02-13
supposons que vous ayez ce cénario:
Votreinstallation wordpressest hébergée sur le dossier racine «www» comme votre site,et votre header.phpest sur le dossier «www/includes».
Dans votrethème wordpress,ajoutez simplement
& lt;?php include ('includes/header.php'); ?>
Lorsque WordPress lit lesfichiers dethème,il utilise le chemin racine.
suppose you have this cenario:
Your wordpress instalation is hosted on 'www' root folder as your site, and your header.php is on 'www/includes' folder.
In you wordpress theme, just add
<?php include('includes/header.php'); ?>
When WordPress reads theme files, it uses the root path.
-
- 2014-02-03
Vousne pouvezpasinclure une ressourceexterne dans lesfonctions
include()
!Inclure les œuvrespar les cheminsinternes du serveur.Vousne pouvezpasinclure une URL comme vous le souhaitez.C'est unproblème de sécurité PHP!Vouspouvez utiliser:
get_file_contents('http://your.url');
ou utilisez unebibliothèque Curl.
You cannot include an external resource on
include()
functions! Include works by server internal paths. You cannot include an url as you want. It's a PHP security problem!You can use:
get_file_contents('http://your.url');
or use a Curl library.
-
Veuillez ajouter denombreusesexplications à vos réponsespour aider l'utilisateur à comprendre votre argument.Please add a good deal of explanation to your answers to help the user understand your point.
- 1
- 2014-02-03
- Maruti Mohanty
-
- 2017-01-12
Lorsquej'ai vérifié lesfichiersprincipaux suivants,le code quej'aitrouvé dans lefichier
wp/wp-includes/general-template.php
pour lafonctionget_header()
J'aitrouvé les lignes suivantes
$templates[] = 'header.php'; locate_template( $templates, true );
Je l'utilise donc dansmon code (
index.php
) comme ceci<?php get_header(); $myphpfile[] = 'grid.php'; locate_template( $myphpfile, true ); ?>
When i checked the core files following is the code i found for in the file
wp/wp-includes/general-template.php
for functionget_header()
i found following lines
$templates[] = 'header.php'; locate_template( $templates, true );
So I am using it in my code (
index.php
) like this<?php get_header(); $myphpfile[] = 'grid.php'; locate_template( $myphpfile, true ); ?>
-
- 2018-04-24
Pour lethèmeenfant:
<?php echo get_stylesheet_directory_uri().'/subfoldername/add.php';?>
Vouspouvez utiliser
For Parent Theme: get_template_directory() or get_template_directory_uri() For Child Theme: get_stylesheet_directory() or get_stylesheet_directory_uri()
For Child Theme:
<?php echo get_stylesheet_directory_uri().'/subfoldername/add.php';?>
You can use
For Parent Theme: get_template_directory() or get_template_directory_uri() For Child Theme: get_stylesheet_directory() or get_stylesheet_directory_uri()
-
- 2020-05-04
Pourrait être unemauvaiseformepourposter sur une question aussi ancienne,maisj'ai récemment dûfaire quelque chose de similaireet j'aitrouvé ce résultaten utilisant uneméthodenonmontréeici. Notez-lepour lesfutursexplorateurs;).
Mon cas d'utilisation était:
- Wordpressinstallé dans le sous-répertoire
- Je voulaisinclure des éléments depied depage/d'en-tête du siteparent,plutôt que d'utiliser wordpresspour ces éléments
Parce que
include()
ourequire()
peut utiliser des chemins de serveur absolus (parexemple:/var/www/vhosts/foo.bar/httpdocs/includes/baz.php
),nouspouvons utiliser la définitionABSPATH
de Wordpresspourgénérer ceci:include( dirname( ABSPATH ) . '/includes/header.php' );
cela renverra
/var/www/vhosts/foo.bar/httpdocs/includes/baz.php
.Même lorsque Wordpressest dans un sous-répertoire (parexemple:
/var/www/vhosts/foo.bar/httpdocs/blog/
),dirname( ABSPATH )
nous donne quelle que soit la racine du document.Ilpeut y avoir d'autresfaçons defaire cela,en utilisant la superglobale
$_SERVER['DOCUMENT_ROOT']
parexemple,maisje n'aipasexploré cela.Might be poor form to post on such an old question, but I recently had to do something similar and found this result while using a method not shown here. Jotting it down for future explorers ;).
My use case was:
- Wordpress installed in subdirectory
- I wanted to include footer/header elements from the parent site, rather than using wordpress for these elements
Because
include()
orrequire()
can use absolute server paths (eg:/var/www/vhosts/foo.bar/httpdocs/includes/baz.php
), we can use Wordpress'ABSPATH
definition to generate this:include( dirname( ABSPATH ) . '/includes/header.php' );
this will return
/var/www/vhosts/foo.bar/httpdocs/includes/baz.php
.Even when Wordpress is in a subdirectory (eg:
/var/www/vhosts/foo.bar/httpdocs/blog/
),dirname( ABSPATH )
gives us the document root regardless.There might be other ways to do this, using the
$_SERVER['DOCUMENT_ROOT']
superglobal for example, but I didn't explore that.
Est-ilpossible d'inclure unfichier PHPexterne dans unmodèlepersonnalisé?
J'essaye d'ajouter unblog àmon site. J'ai déjà la disposition de l'en-tête,dupied depageet de labarre latérale surmon site. Puis-je les utiliser dansmonmodèlepersonnalisé?
J'ai aussiessayé: