get_template_directory_uri menunjuk ke tema orang tua bukan tema anak

35

Masalah yang saya alami adalah get_template_directory_uri menunjuk ke tema induknya site/wp-content/themes/twentythirteen/myGallery/gallery_functions_include.php

tapi saya ingin itu menunjuk ke tema anak saya yang seharusnya site/wp-content/themes/child-twentythirteen/myGallery/gallery_functions_include.php

apa yang saya gunakan adalah include (TEMPLATEPATH . '/myGallery/gallery_functions_include.php');

Elroy Fernandes
sumber

Jawaban:

70

get_template_directory_uri() akan selalu mengembalikan URI dari tema induk saat ini.

Untuk mendapatkan URI tema anak, Anda harus menggunakan get_stylesheet_directory_uri().

Anda dapat menemukannya di dokumentasi , bersama dengan daftar fungsi berguna lainnya untuk mendapatkan berbagai lokasi direktori tema.


Jika Anda lebih suka menggunakan konstanta, maka TEMPLATEPATHmirip dengan memanggil get_template_directory()(yaitu tema induk), dan STYLESHEETPATHmirip dengan memanggil get_stylesheet_directory()(yaitu tema anak).

Konstanta-konstanta ini diatur oleh inti WordPress wp-includes/default-constants.phpdan pada dasarnya terlihat seperti ini:

define('TEMPLATEPATH', get_template_directory());
...
define('STYLESHEETPATH', get_stylesheet_directory());

Jika tidak ada tema anak, maka fungsi 'templat' dan 'stylesheet' akan mengembalikan lokasi tema induk.

Perhatikan perbedaan antara fungsi-fungsi ini dan fungsi yang berakhiran _uri- ini akan mengembalikan jalur server absolut (mis. /home/example/public_html/wp-content/yourtheme), Sedangkan _urifungsi - fungsi tersebut akan mengembalikan alamat publik (alias URL) - mis. http://example.com/wp-content/themes/yourtheme.

Tim Malone
sumber
bagaimana dengan include (TEMPLATEPATH. '/myGallery/gallery_functions_include.php'); yang ini juga masuk ke direktori induk
Elroy Fernandes
@ ElroyFernandes Saya telah menambahkan ini ke jawaban saya. STYLESHEETPATH ​​adalah konstanta yang Anda inginkan
Tim Malone
2
Terima kasih telah menjawab pertanyaan alih-alih hanya mengatakan RTM. Ini muncul pertama kali di hasil pencarian saya.
rinogo
2
Jawaban yang bagus tetapi penamaan yang buruk pada bagian WordPress - itu bukan hanya untuk stylesheet, itu untuk JS, aset, termasuk dll.
Paul Feakins
1
@PaulFeakins Jangan memulai tentang penamaan inkonsistensi di WordPress - itu jalan panjang dan berangin yang mengarahkan siapa-tahu-ke mana! ;)
Tim Malone
0

Anda harus memindahkan templat khusus Anda, yang tidak dikontrol oleh tema aktif, ke folder anak.

Pisahkan tema dari semua file yang disesuaikan dengan cara ini sehingga tema dapat diperbarui tanpa kehilangan pekerjaan kustom Anda.

Tema out-of-the-box Anda tinggal di sini
------------------------------------
\\ Situs \ wp-content \ themes \ some_theme
Tema anak Anda tinggal di sini
---------------------------
\\ Situs \ wp-content \ themes \ some_theme-child

Gaya dan templat khusus Anda dan semua yang Anda sertakan (hal-hal seperti javascript khusus, gambar yang tidak disimpan ke WP, font khusus, file data json, dan plugin apa pun yang mungkin Anda enqueue) harus dipindahkan ke folder anak DI LUAR tema.

\ themes \ some_theme
\ themes \ some_theme-child \ (semua file templat php khusus Anda di sini)
\ themes \ some_theme-child \ images
\ tema \ some_theme-child \ termasuk 
\ themes \ some_theme-child \ bahasa
\ themes \ some_theme-child \ json 
\ themes \ some_theme-child \ style

Untuk halaman gaya khusus Anda ( bukan style.css yang ditimpa tema ) enqueue dengan wp_enqueue_style ('some-css', get_stylesheet_directory () . '/Style/some.css', false, '0.0.1', 'all');

Gunakan get_stylesheet_directory_uri () dengan panggilan xhr Anda, dll.

Greg Bologna
sumber