Fügen Sie eine externe PHP-Datei in eine benutzerdefinierte Wordpress-Vorlage ein
-
-
Werfen Sieeinen Blick auf http://codex.wordpress.org/Integrating_WordPress_with_Your_Website sollte Ihre Fragebeantworten.Take a look at http://codex.wordpress.org/Integrating_WordPress_with_Your_Website should answer your question.
- 0
- 2013-08-26
- Mark Davidson
-
Du kannstesbenutzen.Wasist das Problem,vor dem Sie stehen?You can use it. What's the problem are you facing?
- 1
- 2013-08-26
- Vinod Dalvi
-
Hallo,ich habegerademeine Dateienin den WordPress-Ordner kopiert und sie richtig verlinkt. Wie lautet die Antwort auf diese Frage?Ichbekommenureine leere weiße Seitehi, 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
-
Umganz klar zu sein,versuchen Sie,Dateieneinzuschließen,die sich aufeinerexternen Sitebefinden?Wennja,erlauben die aktuellen Berechtigungen der PHP-Dateiseite den öffentlichen Lesezugriff auf diese Dateien?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 Antworten
- Stimmen
-
- 2014-03-25
Nein,Sie können PHP-Dateiennicht wie angegebenin ein Themaeinfügen.
Um zu sehen warum,müssen wirnureinen gesunden Menschenverstand undgrundlegendes kritisches Denken üben:
- Sie würdeneine Remote-Anfrage aneinen Remote-Server senden.
include
kann diesnicht. - Wennes durchein Wunderfunktionieren würde,hätten Sieeinen großen Sicherheits-Exploit,daich dann soetwastun könnte:
include( 'http://yoursite/wp-config.php' ); echo DB_PASSWORD;
. Stellen Sie sich vor,wieeinfaches wäre,Websites zu hacken! Was kannmich davon abhalten,facebook.com/index.php
einzuschließen? - Wennes auch dannirgendwiefunktioniert hat und sicher war,stellen Sie sich die Langsamkeit vor! Sie stelleneine Anfrage an den Server,und danngeht der Server undmachteine anderefür den Header undeine anderefür die Seitenleiste undeine anderefür die Fußzeile,all das Warten,wer könntegestört werden?
- Aber schließlich,auch wenninclude Remote-Anforderungen stellen könnte. Wasesnicht kann,warum solltees PHP-Code zurückgeben? Wirdesnicht zurückgeben,was der Server ausspuckt,auchbekannt als dasfinalisierte HTML? Der Serverführtjedes PHP aus,bevores zurückgegeben wird,sodass kein PHPin dementhaltenist,was Sieeinschließen.
Alsonein,dasistnichtmöglich. Aberein schnelles Kopieren und Einfügen des Codesin Ihrer Fragein ein PHP-Skript,gefolgt voneinem kurzen Besuch,hätte Ihnen das schnellergesagt alsjeder andere hier.
Stattdessen können Sienur Dateien aus dem lokalen Dateisystemeinschließen,auf dem Ihr Servergerade ausgeführt wird. Sie würdenniemalseine URL anein Include odereine require-Anweisung übergeben.
Wennichmich alsoin index.phpbefinde undeseine Dateiim selben Ordnernamens sidebar.phpgibt,würdeich siefolgendermaßeneinfügen:
include('sidebar.php');
include
gibt einen Wert zurück,wenn diesfehlgeschlagenist. Die Semantik derinclude-Anweisungist allgemeinesgrundlegendes PHP und wird auf dieser Q & A-Sitenicht zum Thema.Ich habe diese Fragejedoch offengehalten,da Sie stattdesseneine WordPress-API-Funktion verwenden sollten,diebesserist als das Einschließen und Erfordernisfür das,was Siebenötigen.
Umein Vorlagenteilin ein Thema aufzunehmen,verwenden Sie:
get_template_part( 'partname' );
Diese Funktion sucht auchin einem untergeordneten oder übergeordneten Themanach dem von Ihnen angegebenen Teil.
Zum Beispielin diesem Code:
get_template_part( 'sidebar', 'first' );
Es wirdnach denerstengefundenen suchen und dieseeinschließen:
- untergeordnetes Thema
sidebar-first.php
- übergeordnetes Thema
sidebar-first.php
- untergeordnetes Thema
sidebar.php
- übergeordnetes Thema
sidebar.php
Esist zubeachten,dass Sieget_template_partnur zum Einschließen von Vorlagendateien verwenden sollten. Verwenden Sieesnicht,um Dateien wie Bibliotheken oder andere PHP-Dateieneinzuschließen,die kein HTML ausgeben.
Ich schlage vor,dass Sie sich über diefolgenden Themeninformieren,bevor Siefortfahren:
- die Include- und Require-Funktionenin PHP.Net
- Eltern- und Kinderthemen
- die Vorlagenhierarchie und wie WordPress die zu verwendende Vorlage auswählt
-
<?php php ?> <?php tag ?> <?php spam ?> <?php and ?> <?php why ?> <?php its ?> <?php bad ?>
-
get_template_part
- die
WP_HTTP
API,für dieseechten Zeitenmüssen Sie wirklicheine Remote-Anfrage aneine API stellen. Hier helfen Funktionen wiewp_remote_get
undwp_remote_post
. - PHP-Debugging. Bei Ihren weißen Seiten handeltes sich um schwerwiegende PHP-Fehler. Da Siejedoch die Fehlerprotokollierung soeingestellt haben,dass sie vor dem Front-End ausgeblendet wird,wird siein einer Fehlerprotokolldateiprotokolliert,die Sienicht kennen. Suchen Sie Ihr Fehlerprotokoll,definieren Sie
WP_DEBUG
in Ihrerwp-config.php
undinstallieren Sieein Plugin wieeine Debug-Leiste odereinen Abfragemonitor. Diese helfen Ihnenenorm. Stellen Siejedoch sicher,dass Siein Ihrer Vorlagenfußzeilewp_footer
aufrufen.
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
Angenommen,Sie haben dieses Szenario:
Ihre WordPress-Installation wirdim Stammordner 'www' als Ihre Sitegehostet,und Ihre header.phpbefindet sichim Ordner 'www/include'.
Fügen Siein Ihrem WordPress-Themeeinfach
hinzu& lt ;?php include ('includes/header.php'); ?>
Wenn WordPress Themendateien liest,verwendetes den Stammpfad.
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
Sie können keineexterne Ressourcein die Funktionen
include()
aufnehmen!Arbeitennach serieninternen Pfadeneinschließen.Sie können keine URL wiegewünschteinfügen.Esistein PHP-Sicherheitsproblem!Sie können Folgendes verwenden:
get_file_contents('http://your.url');
oder verwenden Sieeine Curl-Bibliothek.
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.
-
Bittefügen Sie Ihren Antworteneine Menge Erklärungen hinzu,damit der Benutzer Ihren Standpunktbesser versteht.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
Alsich die Kerndateien überprüft habe,ist derfolgende Code,für denichgefunden habe in der Datei
wp/wp-includes/general-template.php
für die Funktionget_header()
Ich habefolgende Zeilengefunden
$templates[] = 'header.php'; locate_template( $templates, true );
Also verwendeichesin meinem Code (
index.php
) wiefolgt<?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
Für untergeordnetes Thema:
<?php echo get_stylesheet_directory_uri().'/subfoldername/add.php';?>
Sie können
verwendenFor 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
Es könnteeine schlechte Form sein,aufeine so alte Frage zuposten,aberichmusste kürzlichetwas Ähnlichestun undfand dieses Ergebnis,währendicheine hiernichtgezeigte Methode verwendete. Schreiben Sieesfür zukünftige Entdecker auf;).
Mein Anwendungsfall war:
- Wordpressim Unterverzeichnis installiert
- Ich wollte Fußzeilen-/Kopfzeilenelemente von der übergeordneten Siteeinfügen,anstatt WordPressfür diese Elemente zu verwenden.
Da
include()
oderrequire()
absolute Serverpfade verwenden kann (z. B.:/var/www/vhosts/foo.bar/httpdocs/includes/baz.php
) können wir dieABSPATH
-Definition von Wordpress verwenden,um Folgendes zugenerieren:include( dirname( ABSPATH ) . '/includes/header.php' );
Diesgibt
/var/www/vhosts/foo.bar/httpdocs/includes/baz.php
zurück.Auch wenn sich Wordpressin einem Unterverzeichnisbefindet (z. B.
/var/www/vhosts/foo.bar/httpdocs/blog/
),gibt unsdirname( ABSPATH )
das Dokumentstamm unabhängig davon.Esgibt möglicherweise andere Möglichkeiten,dies zutun,beispielsweisemit dem Superglobal
$_SERVER['DOCUMENT_ROOT']
,aber das habeichnicht untersucht.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.
Istesmöglich,eine externe PHP-Dateiin einebenutzerdefinierte Vorlage aufzunehmen?
Ich versuche,meiner Websiteein Blog hinzuzufügen. Ich habebereits das Layoutfür Kopf-,Fuß- und Seitenleisten aufmeiner Site. Kannich diesein meinerbenutzerdefinierten Vorlage verwenden?
Ich habe auch versucht: