Includerea fișierelor în functions.php al temei copil
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.

Î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

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

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

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

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

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

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

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.

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.

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/
