Ist es möglich, eine externe PHP -Datei in eine benutzerdefinierte Vorlage aufzunehmen?
Ich versuche, meiner Website ein Blog hinzuzufügen. Ich habe bereits das Layout für Kopfzeile, Fußzeile und Seitenleiste auf meiner Site. Kann ich diese in meiner benutzerdefinierten Vorlage verwenden?
<?php
/*
Template Name: Blog
*/
?>
<?php include( PATH . 'http://www.example.com/includes/header.php' ); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<div <?php post_class() ?> id="post-<?php the_ID(); ?>">
<h2><a href="<?php the_permalink() ?>">
<?php the_title(); ?>
</a></h2>
<?php include (TEMPLATEPATH . '/inc/meta.php' ); ?>
<div class="entry">
<?php the_content(); ?>
</div>
<div class="postmetadata">
<?php the_tags('Tags: ', ', ', '<br />'); ?>
Posted in
<?php the_category(', ') ?>
|
<?php comments_popup_link('No Comments »', '1 Comment »', '% Comments »'); ?>
</div>
</div>
<?php endwhile; ?>
<div class="mypagination">
<?php include (TEMPLATEPATH . '/inc/nav.php' ); ?>
</div>
<?php else : ?>
<h2>Not Found</h2>
<?php endif; ?>
<?php include( PATH . 'http://www.example.com/includes/sidebar.php' ); ?>
<?php include( PATH . 'http://www.example.com/includes/footer.php' ); ?>
Ich habe auch versucht:
<?php include('http://mywebsite.com/includes/header.php'); ?>
Nein, Sie können PHP -Dateien nicht auf die von Ihnen angegebene Weise in ein Thema einfügen.
Um zu sehen, warum, müssen wir uns nur mit gesundem Menschenverstand und grundlegendem kritischem Denken auseinandersetzen:
include
kann dies nichtinclude( 'http://yoursite/wp-config.php' ); echo DB_PASSWORD;
. Stellen Sie sich vor, wie einfach es wäre, Websites zu hacken! Was hält mich davon ab, facebook.com/index.php
einzuschließen?Also nein, es ist nicht möglich. Ein schnelles Einfügen des Codes in Ihre Frage in ein PHP Skript gefolgt von einem kurzen Besuch hätte Ihnen jedoch gezeigt, dass dies schneller geht als jeder andere hier.
Stattdessen können Sie nur Dateien aus dem lokalen Dateisystem einschließen, auf dem Ihr Server derzeit ausgeführt wird. Sie würden niemals eine URL an eine Include- oder eine Require-Anweisung übergeben.
Wenn ich also in index.php bin und eine Datei mit dem Namen sidebar.php im selben Ordner ist, würde ich sie folgendermaßen einfügen:
include('sidebar.php');
include
gibt einen Wert zurück, wenn dies fehlschlägt. Die Semantik der include-Anweisung ist allgemein grundlegend PHP und auf dieser Q & A-Site nicht thematisch.
Ich habe diese Frage jedoch offen gelassen, da Sie stattdessen eine WordPress-API-Funktion verwenden sollten, die besser ist als include und require für das, was Sie benötigen.
Um einen Vorlagenteil in ein Thema aufzunehmen, verwenden Sie:
get_template_part( 'partname' );
Diese Funktion sucht auch in einem untergeordneten oder übergeordneten Thema nach dem von Ihnen angegebenen Teil.
Zum Beispiel in diesem Code:
get_template_part( 'sidebar', 'first' );
Es wird das erste suchen und einschließen, das es von diesen findet:
sidebar-first.php
sidebar-first.php
sidebar.php
sidebar.php
Es ist zu beachten, dass Sie get_template_part nur zum Einbinden von Vorlagendateien verwenden sollten. Verwenden Sie es nicht, um Dateien wie Bibliotheken oder andere PHP Dateien einzuschließen, die kein HTML ausgeben.
Ich schlage vor, Sie lesen sich die folgenden Themen durch, bevor Sie fortfahren:
<?php php ?> <?php tag ?> <?php spam ?> <?php and ?> <?php why ?> <?php its ?> <?php bad ?>
get_template_part
WP_HTTP
API, für die echten Zeiten, in denen Sie wirklich eine Remote-Anfrage an eine API stellen müssen. Funktionen wie wp_remote_get
und wp_remote_post
helfen dabei.WP_DEBUG
in Ihrem wp-config.php
und installieren Sie ein Plugin wie die Debug-Leiste oder den Query-Monitor. Dies wird Ihnen enorm helfen. Stellen Sie sicher, dass Sie wp_footer
in Ihrer Vorlagenfußzeile aufrufen.angenommen, Sie haben dieses Szenario:
Ihre WordPress-Installation wird im "www" -Stammordner als Ihre Site gehostet, und Ihre header.php befindet sich im "www/includes" -Ordner.
In Ihrem WordPress-Theme fügen Sie einfach hinzu
<? php include ('includes/header.php'); ?>
Wenn WordPress Themendateien liest, wird der Stammpfad verwendet.
Sie können für include()
-Funktionen keine externe Ressource angeben! Arbeiten nach serverinternen Pfaden einschließen. Sie können keine URL einfügen, wie Sie möchten. Es ist ein PHP Sicherheitsproblem!
Sie können verwenden:
get_file_contents('http://your.url');
oder verwenden Sie eine Curl-Bibliothek.
Wenn ich die folgenden Kerndateien überprüfte, ist der Code, für den ich in der Datei wp/wp-includes/general-template.php
für Funktion get_header()
gefunden habe
ich habe folgende Zeilen gefunden
$templates[] = 'header.php';
locate_template( $templates, true );
Also benutze ich es in meinem Code (index.php
) so
<?php get_header();
$myphpfile[] = 'grid.php';
locate_template( $myphpfile, true );
?>
Für Kinderthema:
<?php echo get_stylesheet_directory_uri().'/subfoldername/add.php';?>
Sie können verwenden
For Parent Theme: get_template_directory() or get_template_directory_uri()
For Child Theme: get_stylesheet_directory() or get_stylesheet_directory_uri()