it-swarm.com.de

Fügen Sie eine externe PHP Datei in eine benutzerdefinierte Wordpress-Vorlage

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 &#187;', '1 Comment &#187;', '% Comments &#187;'); ?>
  </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'); ?>
5
Jeremi Liwanag

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:

  1. Sie würden eine Remote-Anfrage an einen Remote-Server senden. include kann dies nicht
  2. Wenn es irgendwie klappen würde, hätten Sie einen großen Sicherheits-Exploit, da ich dann so etwas tun könnte: include( '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?
  3. Wenn es auch dann irgendwie funktioniert hat und es sicher war, stellen Sie sich die Langsamkeit vor! Sie stellen eine Anfrage an den Server, und dann geht der Server und macht eine weitere Anfrage für den Header und eine weitere Anfrage für die Seitenleiste und eine weitere Anfrage für die Fußzeile.
  4. Aber schließlich, auch wenn include Remote-Anfragen stellen könnte. Was es nicht kann, warum würde es PHP Code zurückgeben? Gibt es nicht zurück, was der Server ausgespuckt hat, auch bekannt als das finalisierte HTML? Der Server führt alle PHP aus, bevor er zurückgegeben wird. Es würde also keine PHP in Ihrer Include-Datei geben.

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:

  • untergeordnetes Thema sidebar-first.php
  • übergeordnetes Thema sidebar-first.php
  • untergeordnetes Thema sidebar.php
  • übergeordnetes Thema 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:

  • die Include- und Require-Funktionen von 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 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.
  • PHP-Debugging. Ihre weißen Seiten sind PHP schwerwiegende Fehler, aber da Sie die Fehlerprotokollierung so eingestellt haben, dass sie vor dem Front-End verborgen bleibt, wird sie in einer Fehlerprotokolldatei protokolliert, die Ihnen nicht bekannt ist. Suchen Sie Ihr Fehlerprotokoll, definieren Sie 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.
7
Tom J Nowell

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.

2

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.

1
Giorgio Tedesco

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 );
?>
0
abdul rashid

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()
0
Super Model