Includerea fișierelor în functions.php al temei copil

26 oct. 2010, 08:41:35
Vizualizări: 47.7K
Voturi: 9

De obicei, în fișierul functions.php al temei mele, folosesc require pentru a include alte fișiere și a păstra lucrurile organizate.

require_once("foo.php");

Acum, lucrând într-o temă copil, aș dori să fac același lucru. Adaug opțiuni personalizate pentru administrare și pare imposibil să includ codul. Am afișat calea pentru a mă asigura că apelez fișierul corect și acesta indică locația potrivită, dar nimic din interiorul acelui fișier nu pare să ruleze. Codul funcționează bine dacă este plasat direct în fișierul functions.php al temei copil.

1
Comentarii

Poți să postezi mai mult din codul tău pentru a arăta exact ce faci?

MikeSchinkel MikeSchinkel
26 oct. 2010 09:45:00
Toate răspunsurile la întrebare 8
2
20

Într-un temă copil, metoda corectă este

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

În timp ce în tema părinte, poți folosi în continuare

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

get_template_directory() funcționează și în tema copil, dar din păcate direcționează către directorul temei părinte. În cazul tău, este util

23 aug. 2012 22:38:43
Comentarii

A trebuit să folosesc '/' de exemplu require_once( get_stylesheet_directory() . '/foo.php');

ssaltman ssaltman
2 ian. 2020 21:20:07

mulțumesc @ssaltman. Ai dreptate, documentația confirmă: https://developer.wordpress.org/reference/functions/get_stylesheet_directory/ Am editat răspunsul meu

Christian Christian
5 ian. 2020 16:45:34
3
14

Temele copil fac referire la temele părinte după numele directorului, iar într-o instalare normală toate temele tale se află în wp-content/themes/, așa că aș spune că este în regulă să faci referire la acele teme prin calea lor relativă:

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

Dacă acest lucru te face să te simți incomod, observ următoarele constante în WordPress 3.0.1 cu o temă copil twentyten numită tt-child:

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

Deci, poți face următoarele în tema ta copil pentru a face referire la directorul temei părinte:

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

Constanta STYLESHEETPATH era exact ceea ce căutam. Include-urile funcționează într-un tema copil dacă folosești aceasta.

curtismchale curtismchale
26 oct. 2010 17:21:14

Sunt foarte surprins că ai putea să te gândești să folosești o cale hardcodată... un tema nu ar trebui să funcționeze doar într-un singur mediu. Aș putea înțelege dacă get_template_directory() nu ar exista... dar ea există. Tocmai am realizat că este o întrebare din 2010 lol

Christian Christian
23 aug. 2012 22:44:27

Prima opțiune nu a funcționat pentru mine. Nu sunt sigur de ce, când cu siguranță aveam calea relativă corectă către fișierul părinte. A doua opțiune a funcționat pentru mine, așa că îți mulțumesc.

bowlerae bowlerae
10 iun. 2016 16:58:19
0

Cu siguranță nu doriți să codificați URL-ul direct în cod. Modul corect de a face acest lucru este:

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

Mai multe informații găsiți pe Wordpress Codex

Dacă, de exemplu, modificați fișierul header.php care include un alt fișier, trebuie să faceți referire la acesta astfel:

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

Salut @curtismchale:

Nu știu dacă asta este soluția, dar trebuie să pui ghilimele în jurul foo.php, astfel:

require_once('foo.php');

Rezolvă asta problema ta?

26 oct. 2010 09:46:24
Comentarii

Bună observație. Am ratat-o aici, dar o aveam în tema copil.

curtismchale curtismchale
26 oct. 2010 17:15:27
0

Folosește <?php get_template_part( 'numele-paginii-aici' ); ?>. Fără extensia .php

12 iul. 2011 03:03:41
0

Cea mai simplă și cea mai bună metodă de a include fișiere atât în functions.php al temei, cât și în dezvoltarea de plugin-uri, este prin utilizarea dirname(__FILE__).

În cazul tău, este nevoie doar de asta:

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

Dacă fișierul pe care dorești să-l incluzi se află într-un alt folder, de exemplu inc, ai folosi următorul cod:

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

Sper că acest lucru va ajuta pe cineva în viitor.

15 aug. 2021 03:05:32
0

Este complet posibil și normal să faci includeri în functions.php.

Eu fac asta în felul următor în tema mea copil (php este un subdirector pentru cod):

include 'php/core.php';

Dacă ai probleme fără un motiv aparent, încearcă să activezi modul de depanare în wp-config.php:

define('WP_DEBUG', true);

Pot exista erori relevante care apar, dar nu sunt afișate.

26 oct. 2010 08:57:46
1

Cred că aceasta este cea mai bună metodă de a obține calea către tema copil.

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

Idee preluată de pe http://dynamicweblab.com/2013/02/get-template-path-in-wordpress-child-themes/

19 mar. 2013 22:34:35
Comentarii

require_once necesită o cale, nu un URL.

fuxia fuxia
19 mar. 2013 23:04:15