Includere file nel functions.php del tema child

26 ott 2010, 08:41:35
Visualizzazioni: 47.7K
Voti: 9

Tipicamente nel file functions del mio tema uso require per includere altri file e mantenere le cose ordinate.

require_once("foo.php");

Ora, lavorando in un tema child, vorrei fare la stessa cosa. Sto aggiungendo opzioni personalizzate per l'admin e sembra impossibile includere il codice. Ho fatto l'echo del percorso per assicurarmi di chiamare il file giusto e sta effettivamente richiamando la posizione corretta, ma niente all'interno di quel file sembra funzionare. Il codice funziona correttamente se inserito direttamente nel file functions del tema child.

1
Commenti

Puoi per favore postare altro codice per mostrare esattamente cosa stai facendo?

MikeSchinkel MikeSchinkel
26 ott 2010 09:45:00
Tutte le risposte alla domanda 8
2
20

In un tema child, il modo corretto è:

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

Mentre nel tema parent si può ancora usare:

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

get_template_directory() funziona ancora nel tema child, ma purtroppo punta alla directory del tema parent. Nel tuo caso è utile

23 ago 2012 22:38:43
Commenti

Ho dovuto usare uno '/' ad esempio require_once( get_stylesheet_directory() . '/foo.php');

ssaltman ssaltman
2 gen 2020 21:20:07

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

Christian Christian
5 gen 2020 16:45:34
3
14

I temi figli fanno riferimento ai temi genitore tramite il nome della directory, e in un'installazione normale tutti i tuoi temi si trovano in wp-content/themes/, quindi direi che va bene fare riferimento a quei temi tramite il 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 figlio di twentyten 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 genitore:

include TEMPLATEPATH . '/some-file.php';
26 ott 2010 15:50:42
Commenti

La costante STYLESHEETPATH è esattamente ciò che stavo cercando. Le inclusioni funzionano in un child theme se la utilizzi.

curtismchale curtismchale
26 ott 2010 17:21:14

Sono davvero sorpreso che si possa anche solo considerare l'uso di un percorso hard-coded... un tema non dovrebbe funzionare solo in un ambiente specifico. Potrei capire se get_template_directory() non esistesse... ma esiste. Mi sono appena reso conto che è una domanda del 2010 lol

Christian Christian
23 ago 2012 22:44:27

La prima opzione non ha funzionato per me. Non sono sicuro del perché, visto che avevo sicuramente il percorso relativo corretto al file genitore. La seconda opzione invece ha funzionato, quindi grazie.

bowlerae bowlerae
10 giu 2016 16:58:19
0

Decisamente non vuoi hardcodare l'URL. Il modo corretto per farlo è

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

Maggiori informazioni su Wordpress Codex

Ora, se stai modificando ad esempio header.php che ha un include, lo dovresti referenziare così:

require_once( get_stylesheet_directory() . '/../parenthteme/my_included_file.php' );
19 mar 2013 21:39:19
1

Ciao @curtismchale:

Non so se è questo il problema, ma devi includere le virgolette attorno a foo.php, in questo modo:

require_once('foo.php');

Risolve il tuo problema?

26 ott 2010 09:46:24
Commenti

Buona nota. Mi era sfuggito qui ma ce l'avevo nel child theme.

curtismchale curtismchale
26 ott 2010 17:15:27
0

Usa <?php get_template_part( 'nome-della-pagina-qui' ); ?>. Senza l'estensione .php

12 lug 2011 03:03:41
0

Il modo più semplice e migliore per includere file sia nel functions.php del tema che nello sviluppo di plugin è utilizzando dirname(__FILE__).

Nel tuo caso bastava questo:

require_once dirname(__FILE__)."/foo.php";

Se il file che vuoi includere si trova in un'altra cartella, ad esempio inc, dovresti usare questo:

require_once dirname(__FILE__)."/inc/foo.php"; 

Spero che questo possa essere utile a qualcuno in futuro.

15 ago 2021 03:05:32
0

È completamente possibile e normale includere file in functions.php.

Io lo faccio così nel mio tema child (php è la sottocartella per il codice):

include 'php/core.php';

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

define('WP_DEBUG', true);

Potrebbero esserci errori rilevanti che si verificano, ma non vengono visualizzati.

26 ott 2010 08:57:46
1

Penso che questo sia il modo migliore per ottenere il percorso del tuo child theme

<?php $get_my_path = dirname( get_bloginfo('stylesheet_url') ); ?>
<?php require_once( $get_my_path. '/my_included_file.php' ); ?>

Idea presa da http://dynamicweblab.com/2013/02/get-template-path-in-wordpress-child-themes/

19 mar 2013 22:34:35
Commenti

require_once richiede un percorso, non un URL.

fuxia fuxia
19 mar 2013 23:04:15