it-swarm.com.de

Dateien in untergeordnete Designfunktionsdatei aufnehmen

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.

8
curtismchale

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';
12

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

10
Christian

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' );
2
Marlyse Comte

Verwenden Sie <?php get_template_part( 'name-the-page-here' ); ?>. Ohne die Endung .php

2
Everaldo Matias

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?

2
MikeSchinkel

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/

0
Maidul

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.

0
Rarst