Sertakan file dalam file fungsi tema anak


8

Biasanya dalam file fungsi tema saya, saya akan memerlukan file lain untuk menjaga semuanya tetap rapi.

require_once("foo.php");

Sekarang mengerjakan tema anak saya ingin melakukan hal yang sama. Saya menambahkan opsi admin khusus dan sepertinya tidak mungkin untuk memasukkan kode. Saya sudah menyuarakan jalan untuk memastikan saya memanggil file yang tepat dan itu memanggil lokasi yang tepat tetapi tidak ada di dalam file yang tampaknya berjalan. Kode berjalan dengan baik jika ditempatkan di dalam file fungsi tema anak.


Bisakah Anda memposting lebih banyak kode Anda untuk menunjukkan apa yang Anda lakukan, tepatnya?
MikeSchinkel

Jawaban:


13

Tema anak mereferensikan tema induk dengan nama direktori, dan secara normal menginstal semua tema Anda wp-content/themes/, jadi menurut saya boleh saja merujuk tema tersebut dengan jalur relatifnya:

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

Jika itu membuat Anda tidak nyaman, saya amati konstanta berikut di WordPress 3.0.1 dengan tema anak dua puluh yang disebut tt-child :

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

Jadi Anda dapat melakukan hal berikut dalam tema anak Anda untuk referensi direktori tema induk:

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

STYLESHEETPATH ​​yang konstan adalah yang saya cari. Termasuk pekerjaan dalam tema anak jika Anda menggunakannya.
curtismchale

Saya benar-benar terkejut bahwa Anda bahkan dapat mempertimbangkan untuk menggunakan jalur kode yang keras ... sebuah tema tidak seharusnya berfungsi hanya dalam satu lingkungan. Saya bisa mengerti jika get_template_directory () tidak ada ... tetapi memang ada. Saya baru menyadari bahwa ini adalah pertanyaan dari tahun 2010 lol
Christian

Opsi teratas tidak berfungsi untuk saya. Saya tidak yakin mengapa ketika saya memiliki jalur relatif yang benar ke file induk. Opsi kedua berhasil bagi saya, jadi terima kasih.
bowlerae

12

Dalam tema anak cara yang tepat adalah

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

Sementara di tema induk Anda masih bisa menggunakan

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

get_template_directory()masih berfungsi di tema anak, sayangnya menargetkan direktori tema induk. Dalam kasus Anda, ini berguna


1
Saya harus menggunakan '/' misalnya require_once (get_stylesheet_directory (). '/Foo.php');
ssaltman

terima kasih @ssaltman. Anda benar, dokumentasinya menegaskan: developer.wordpress.org/reference/functions/... Saya mengedit jawaban saya
Christian

2

Hai @curtismchale :

Tidak tahu apakah ini benar atau tidak, tetapi Anda harus menyertakan tanda kutip foo.php, seperti:

require_once('foo.php');

Apakah itu menyelesaikan masalah Anda?


Catatan bagus. Saya merindukannya di sini tetapi saya memilikinya di tema anak.
curtismchale


2

Anda pasti tidak ingin menyulitkan URL. Cara yang tepat untuk melakukannya adalah

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

Lihat info lebih lanjut di Wordpress Codex

Sekarang, jika mis. Memodifikasi header.php Anda yang memiliki menyertakan Anda akan referensi sebagai berikut:

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

0

Sangat mungkin dan normal untuk memasukkan functions.php.

Saya melakukannya seperti ini di tema anak saya ( phpadalah subdirektori untuk kode):

include 'php/core.php';

Jika Anda memiliki masalah tanpa alasan yang jelas, coba aktifkan mode debug di wp-config.php:

define('WP_DEBUG', true);

Mungkin ada kesalahan yang relevan terjadi, tetapi tidak ditampilkan.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.