Saya ingin tahu apakah mungkin menggunakan file templat untuk url tertentu tanpa harus membuat halaman untuk templat itu.
Ini masalah saya yang disederhanakan:
Saya telah membuat halaman di WP dengan beberapa konten tautan yang mengarah ke url tertentu dengan beberapa data formulir tambahan: (mysite.com/retail/?a=test&b=1234) .
Saya ingin url itu (ritel) untuk secara otomatis menggunakan file template saya template-retail.php yang saya miliki di direktori tema anak, tanpa harus membuat halaman bernama "retail" & pilih halaman template dari sana. Hanya ada konten eksternal dalam file template-retail.php, tidak ada yang dari Wordpress itu sendiri.
Apakah ini mungkin?
template_redirect
atau endpointJawaban:
Anda bisa melihat url, memuat file dan keluar.
Itu bisa dilakukan ketika WordPress memuat lingkungannya, mis
'init'
.Perhatikan bahwa melakukannya dengan halaman nyata dengan slug "retail" tidak pernah dapat digunakan.
Ini cukup mudah, tetapi juga hardcode, jadi jika Anda memerlukan ini untuk satu halaman tidak apa-apa. Jika Anda perlu mengontrol lebih banyak url, lihat solusi yang diusulkan dalam jawaban ini .
sumber
var_dump($url_path);
dan lihat bagaimana tampilannya dan sesuaikan kodenya. Nilai itu tergantung pada url asli Anda . Misalnya untuk url rumah khusus, atau WP yang diinstal dalam subfolder mungkin berbeda. @Keat$url_path = trim(parse_url(add_query_arg(array()), PHP_URL_PATH), '/');
$templatename = 'retail';
$pos = strpos($url_path, $templatename);
if ($pos !== false) {
The
init
tindakan tidak sesuai untuk apa yang Anda coba capai. Anda harus menggunakantemplate_include
filter sebagai gantinya. Anda akan menggabungkan ini denganget_query_var
untuk mengambil params URL untuk memeriksa template apa yang perlu dimuat. Inilah tautannya:Kode:
sumber
Cara WordPress untuk melakukan ini adalah dengan
page-templates
. https://developer.wordpress.org/themes/template-files-section/page-template-files/Anda hanya perlu kode untuk templat WordPress. Dalam tema WordPress Anda, Anda dapat membuat templat halaman dan mengganti nama menjadi
page-id.php
Halaman tertentu itu akan secara otomatis mengambilnya dan menggunakan templat.
Misalnya, jika halaman Anda memiliki id 5874, Anda akan menamai template itu sebagai
page-5784.php
Anda juga bisa memberi nama templat berdasarkan pada halaman slug. Misalnya jika halaman siput
hello-world
maka nama templat akanpage-hello-world.php
Lihat juga: - https://developer.wordpress.org/files/2014/10/template-hierarchy.png
sumber
@ shivanand-sharma ini adalah metode yang sempurna dan lebih bersih ( https://developer.wordpress.org/themes/template-files-section/page-template-files/ ) untuk membuat halaman seperti di wordpress lainnya, dan jika Anda ingin untuk menyembunyikan halaman Anda, saya hanya menggunakan plugin sederhana dan efektif ' https://wordpress.org/plugins/exclude-pages/ '
Saya harus mengatakan bahwa saya membutuhkan URL untuk membuat POST atau GET ke halaman saya sendiri dan menyimpan beberapa data sesi 'WC () -> session', dan ini menyelesaikan ini dan masalah lain, karena Anda dapat memiliki tulang punggung kustom kode php termasuk semua 'memerlukan (' wp-load ') dll' dari seluruh wordpress, woocommerce dll untuk bekerja melalui, mysite.com/index.php/MYPAGE .....
Anda hanya perlu:
Pertama: Buat file di dalam lokasi tema Anda sebagai templat dari halaman baru seperti 'wp-content / themes / mytheme / customtemplate.php' (Komentar itu penting agar 'Nama Templat' dapat diamati oleh Wordpress):
Kedua: Buat halaman di wordpress secara normal melalui 'wp-admin'> Halaman (Katakanlah nama seperti MYPAGE , atau Anda dapat mengubah siput apa pun yang Anda inginkan) dan tentu saja menautkan template sebelumnya sebagai templat dari halaman ini yang merupakan nama 'ApapunName' pada bagian templattestes.
Jadi, mari kita buka halaman baru 'mysite.com/index.php/MYPAGE' dan Anda akan melihat.
Ekstra: Mari kita buat fungsi javascript atau jquery di troli, checkout, apa pun yang dapat Anda bayangkan di dalam tag HTML 'script', dan sertakan kode seperti ini:
sumber