Normalerweise benötige ich in meiner Theme-Funktionsdatei andere Dateien, um die Dinge ordentlich zu halten.
require_once("foo.php");
Wenn ich jetzt in einem Kinderthema arbeite, möchte ich dasselbe tun. Ich füge benutzerdefinierte Admin-Optionen hinzu und es scheint unmöglich, Code einzuschließen. Ich habe den Pfad wiederholt, um sicherzustellen, dass ich die richtige Datei aufrufe und sie den richtigen Speicherort aufruft, aber nichts in dieser Datei scheint zu laufen. Der Code wird ordnungsgemäß ausgeführt, wenn er in die Funktionsdatei des untergeordneten Themas eingefügt wird.
Untergeordnete Themen verweisen auf übergeordnete Themen anhand des Verzeichnisnamens. Bei einer normalen Installation befinden sich alle Ihre Themen in wp-content/themes/
. Ich würde daher sagen, dass es in Ordnung ist, diese Themen anhand ihres relativen Pfads zu referenzieren:
include '../parent-theme/some-file.php';
Wenn Ihnen das unangenehm ist, beobachte ich die folgenden Konstanten in WordPress 3.0.1 mit einem twentyten child-Thema namens tt-child :
TEMPLATEPATH /home/adam/public_html/wp3/wp-content/themes/twentyten
STYLESHEETPATH /home/adam/public_html/wp3/wp-content/themes/tt-child
So können Sie in Ihrem untergeordneten Design Folgendes tun, um auf das übergeordnete Designverzeichnis zu verweisen:
include TEMPLATEPATH . '/some-file.php';
In einem Kinderthema ist der richtige Weg
require_once( get_stylesheet_directory() . 'foo.php');
Im übergeordneten Design können Sie weiterhin verwenden
require_once ( get_template_directory() . 'foo.php' );
get_template_directory()
funktioniert immer noch im untergeordneten Design und zielt leider auf das übergeordnete Designverzeichnis ab. In deinem Fall ist es nützlich
Sie möchten die URL definitiv nicht hart codieren. Der richtige Weg dazu ist
require_once( get_stylesheet_directory(). '/my_included_file.php' );
Weitere Informationen finden Sie unter Wordpress Codex
Wenn nun Ihr z. Wenn Sie die Datei header.php mit einem Include ändern, verweisen Sie darauf wie folgt:
require_once( get_stylesheet_directory() . '/../parenthteme/my_included_file.php' );
Verwenden Sie <?php get_template_part( 'name-the-page-here' ); ?>
. Ohne die Endung .php
Hallo @curtismchale :
Ich weiß nicht, ob dies der Fall ist oder nicht, aber Sie müssen Anführungszeichen um foo.php
einfügen, wie folgt:
require_once('foo.php');
Löst das dein Problem?
Ich denke, dies ist der beste Weg, um Ihr Kind Themenpfad zu bekommen
<?php $get_my_path = dirname( get_bloginfo('stylesheet_url') ); ?>
<?php require_once( $get_my_path. '/my_included_file.php' ); ?>
Machen Sie sich ein Bild von http://dynamicweblab.com/2013/02/get-template-path-in-wordpress-child-themes/
Es ist durchaus möglich und üblich, Includes in functions.php
zu machen.
Ich mache es in meinem untergeordneten Thema so (php
ist ein Unterverzeichnis für Code):
include 'php/core.php';
Wenn Sie Probleme ohne ersichtlichen Grund haben, aktivieren Sie den Debug-Modus in wp-config.php
:
define('WP_DEBUG', true);
Möglicherweise sind relevante Fehler aufgetreten, die jedoch nicht angezeigt werden.