Includi i file nel file delle funzioni del tema figlio


8

In genere nel mio file delle funzioni del tema ho bisogno di altri file per mantenere le cose in ordine.

require_once("foo.php");

Ora, lavorando su un tema per bambini, mi piacerebbe fare lo stesso. Sto aggiungendo opzioni di amministrazione personalizzate e sembra impossibile includere il codice. Ho echeggiato il percorso per assicurarmi di chiamare il file giusto e che sta chiamando la posizione corretta, ma nulla all'interno di quel file sembra funzionare. Il codice funziona bene se inserito nel file delle funzioni del tema figlio.


Puoi per favore pubblicare un po 'di più del tuo codice per mostrare esattamente cosa stai facendo?
MikeSchinkel,

Risposte:


13

I temi secondari fanno riferimento ai temi principali in base al nome della directory e, in un'installazione normale, vivono tutti i temi wp-content/themes/, quindi direi che è opportuno fare riferimento a tali temi in base al loro percorso relativo:

include '../parent-theme/some-file.php';

Se questo ti mette a disagio, osservo le seguenti costanti in WordPress 3.0.1 con un tema di venti anni chiamato tt-child :

TEMPLATEPATH     /home/adam/public_html/wp3/wp-content/themes/twentyten
STYLESHEETPATH   /home/adam/public_html/wp3/wp-content/themes/tt-child

Quindi puoi fare quanto segue nel tuo tema figlio per fare riferimento alla directory del tema principale:

include TEMPLATEPATH . '/some-file.php';

La costante STYLESHEETPATH ​​è ciò che stavo cercando. Include il lavoro in un tema figlio se lo usi.
curtismchale,

Sono davvero sorpreso che potresti anche prendere in considerazione l'uso di un percorso codificato ... un tema non dovrebbe funzionare solo in un ambiente. Potrei capire se get_template_directory () non esistesse ... ma esiste. Mi sono appena reso conto che si tratta di una domanda del 2010 lol
Christian,

L'opzione migliore non ha funzionato per me. Non sono sicuro del perché quando ho avuto certamente il percorso relativo corretto al file principale. La seconda opzione ha funzionato per me, quindi grazie.
bowlerae,

12

In un tema figlio il modo corretto è

require_once( get_stylesheet_directory() . '/foo.php');

Mentre nel tema principale è ancora possibile utilizzare

require_once ( get_template_directory() . '/foo.php' );

get_template_directory()funziona ancora nel tema figlio, purtroppo indirizzare la directory del tema principale. Nel tuo caso è utile


1
Ho dovuto usare un '/' es. Request_once (get_stylesheet_directory (). '/Foo.php');
ssaltman,

grazie @ssaltman. Hai ragione, la documentazione lo conferma: developer.wordpress.org/reference/functions/… Ho modificato la mia risposta
Christian

2

Ciao @curtismchale :

Non so se è o no, ma devi includere le virgolette in giro foo.php, in questo modo:

require_once('foo.php');

Questo risolve il tuo problema?


Ha una buona nota. Mi è mancato qui, ma l'ho avuto nel tema del bambino.
curtismchale,

2

Usa <?php get_template_part( 'name-the-page-here' ); ?>. Senza l'estensione .php


2

Non vuoi assolutamente codificare l'URL. Il modo corretto di farlo è

require_once( get_stylesheet_directory(). '/my_included_file.php' );

Ulteriori informazioni su Wordpress Codex

Ora, se il tuo esempio modificando header.php che ha un'inclusione, lo faresti come segue:

require_once( get_stylesheet_directory() . '/../parenthteme/my_included_file.php' );

0

È completamente possibile e normale fare include in functions.php.

Lo faccio in questo modo nel mio tema figlio ( phpè una sottodirectory per il codice):

include 'php/core.php';

Se hai problemi senza motivo apparente prova ad abilitare la modalità debug in wp-config.php:

define('WP_DEBUG', true);

Potrebbero verificarsi errori rilevanti, ma non visualizzati.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.