2016-04-16 6 views
1

Ich bin neu in WordPress und folgende ist mein Szenario. Ich füge ein externes PHP-Skript in WordPress ein, indem ich eine neue Vorlage im Design erstelle und diese Vorlage dann auf einer neuen Seite verwende.WordPress-Thema bricht nach dem Einfügen von externen PHP? möglicher Fehler in der Ordnerkonfiguration?

Wenn ich dies tun, ist der neue Inhalt in der geladenen Seite sichtbar (und funktioniert wie erwartet), aber das Thema bricht für die Seite, d.h. alle Seitenleisten (rechts und unten) gehen verloren. und wenn ich eingeloggt bin, ist die Wpadmin-Leiste oben nur für diese Seite verloren. für alle anderen Seiten kommt alles zurück.

Könnt ihr mir bitte helfen, was hier schief gehen könnte? Ich bezweifle, dass irgendwo Ordner-Konfiguration irgendwo schief geht.

Es folgt, was ich tue: in meiner neuen Thema Seite Vorlage -

<?php 
/** 
* The template for displaying pages 
* 
* This is the template that displays all pages by default. 
* Please note that this is the WordPress construct of pages and that 
* other "pages" on your WordPress site will use a different template. 
* 
* Template Name: abctemplate 
* @package WordPress 
* @subpackage Twenty_Sixteen 
* @since Twenty Sixteen 1.0 
*/ 
?> 

<?php 
get_header(); 
?> 

<div id="primary" class="content-area"> 
    <main id="main" class="site-main" role="main"> 

     <?php 
     // Start the loop. 
     while (have_posts()) : the_post(); 

      // Include the page content template. 
      get_template_part('template-parts/content', 'page');  

      include_once dirname(ABSPATH) . '\abc\index.php'; // <=== the EXTERNAL SCRIPT 


      // If comments are open or we have at least one comment, load up the comment template. 
      if (comments_open() || get_comments_number()) { 
       comments_template(); 
      } 

      // End of the loop. 
     endwhile; 
     echo "end post loop"; 
     ?> 

    </main><!-- .site-main --> 

    <?php get_sidebar('content-bottom'); ?> 

</div><!-- .content-area --> 

<?php echo "get_sidebar"; get_sidebar(); ?> 
<?php echo "get_footer"; get_footer(); ?> 

Das obige Skript intern nach einigen Variablen einstellen, Anrufen folgenden Vorlage:

require_once('templates/'.$template.'/index.php');

die obige Vorlage eine einfache HTML-Seite, die einige Variablen in abc/index.php

ruft

Aufruf dieses bricht das Wordpress-Thema meist, das si debars, (ich bin mir noch nicht sicher, ob es etwas anderes bricht).
Könnte das bedeuten, dass Wordpress die benötigten Seitenleisten-Dateien nicht gefunden hat? aber alles ist in der Motivvorlage.

Im Grunde ist dieses ganze Szenario ein Laden einer vorhandenen Webseite in WordPress. Ich habe die Funktionalität funktioniert, aber die Benutzeroberfläche bricht.

+0

Eine begründete Vermutung ist, dass die index.html Datei, die Sie aufrufen, nicht gut formatiert ist (z. B. nicht schließen alle Tags, die Sie öffnen ..) – niklas

+0

Ich auch dachte, aber es ist nicht der Fall. Es hat etwas mit dem Kontext von Wordpress zu tun, dass es nicht die benötigten Theme-Dateien findet, wenn das Skript enthalten ist. Sobald ich das Skript kommentiere, erscheinen alle Seitenleisten wieder. Ich bin kein Experte dafür. Das Skript enthält hauptsächlich Inhalte, die sich auf die Admin-Seite beziehen und einige Variablen setzen. hier ist es: https://docs.google.com/document/d/1Jir2gy1dr5juXjw9nrGgYf18B5r9I2AzGOctW7q90NM – tank

+0

setze debug auf true in deiner wp-config.php und suche nach Fehlern – niklas

Antwort

0

Das Problem, das ich zuerst sehe, ist Benennung der Vorlagen.

Sie haben die folgende, die ein PHP-Parse-Fehler ausgelöst wird:

<?php 
Template Name: abctemplate 
?> 

Werfen Sie einen Blick in die Dokumentation hier: https://developer.wordpress.org/themes/template-files-section/page-template-files/page-templates/

Ein Template-Namen in einem Docblock sein sollte als

folgt
<?php 
/** 
* Template Name: Full Width Page 
* 
* @package WordPress 
* @subpackage Twenty_Fourteen 
* @since Twenty Fourteen 1.0 
*/ 
+0

Entschuldigung dafür! Ich habe den Vorlagennamen im Docblock. Es wurde von mir beim Bearbeiten der Frage entfernt. Ich habe die Frage erneut bearbeitet. Obwohl es nicht das Problem ist Danke, dass du das herausgefunden hast. – tank

+0

Das ist kein Docblock –

-1

Rate mal was! Es war der Würfel, der alles kaputt machte. Und die Art und Weise, wie ich es fand, war völlig lahm (Entfernung von etwa 2000 Zeilen Code nacheinander). Wie auch immer, der Grund macht mir jetzt ein bisschen Sinn. Vielen Dank!