(catatan: pertanyaan ini awalnya tentang Bidang Kustom, tetapi @MikeSchinkel memiliki solusi yang lebih baik yang melibatkan Jenis Posting Kustom)
Di situs saya, saya memiliki beberapa halaman yang ingin saya tampilkan data yang sama di sidebar. Misalnya, dalam struktur seperti ini:
-Home
-Cars
-Volvo 850 overview
-Volvo 850 tech spec
-Volvo 850 pictures
-Porsche 911 overview
-Porsche 911 tech spec
-Porsche 911 pictures
-Roads
-Route 66 overview
-Route 66 history
-Route 66 pictures
-Pan-American Highway overview
-Pan-American Highway history
-Pan-American Highway pictures
Saya ingin semua halaman Volvo 850 untuk menampilkan data yang sama di sidebar, semua halaman Porsche untuk menunjukkan kumpulan data yang berbeda (misalnya Kecepatan, Pembuat, dll.).
Halaman Road akan memiliki set data sendiri untuk setiap jalan. Mobil dan Jalan juga akan memiliki templat laman di sana, dan cara saya mengira akan mendapatkan bilah sisi kanan adalah sesuatu seperti ini di dalam sidebar.php:
if ( is_page_template('car-profile-template.php') ) :
// show car widgets
Berikut ini contoh halaman, halaman Volvo 850 Pictures. Bilah samping (kiri) yang sama akan muncul di halaman Volvo 850 lainnya, sementara yang di sebelah kanan hanyalah konten halaman.
| Home •Cars Roads |
--------------------------------------------------------
| Overview | Volvo 840 Pictures |
| Tech Spec | (some pics) |
| •Pictures | |
------------------ |
| -Specs- | |
| Volvo 850 | |
| Speed:150mph | |
| Maker:Volvo | |
| Download PDF | |
------------------ |
| -Rating- | |
| Style:3 | |
| Safety:5 | |
| Reliablity:4 | |
------------------ |
Dalam contoh ini, dua widget bilah sisi, Spesifikasi dan Peringkat harus mendapatkan informasinya dari Jenis Posting Kustom. Apakah ada metode, yang akan mudah bagi pengguna akhir untuk mengedit, yang berarti bahwa mereka harus memasukkan data khusus ini hanya sekali? Mungkin tidak perlu untuk masing-masing bidang dipisahkan (yaitu semua Spec dapat dimasukkan dalam bidang Editor, dan semua Peringkat bisa dimasukkan ke dalam bidang Kutipan .. mungkin)
sumber
Jawaban:
MEMPERBARUI:
Berdasarkan pembaruan pertanyaan, saya pikir saya perlu secara eksplisit menyatakan bahwa apa yang ditanyakan dalam pertanyaan dapat dilakukan dengan jawaban di bawah ini, hanya menggunakan bidang khusus dalam jenis posting kustom "Mobil" untuk setiap item yang ingin Anda tampilkan di semua halaman untuk mobil tertentu.
Jika Anda ingin melakukannya, cukup
single-car.php
masukkan hardcode sidebar ke file templat yang saya sertakan di bawah ini dan kemudian gunakanif
pernyataan Anda untuk menentukan konten mana yang akan ditampilkan untuk URL yang berbeda. Anda dapat melakukan upaya untuk membuat widget bilah sisi dan mengembangkan widget khusus tempat widget akan menarik informasi untuk ID posting saat ini, tetapi mengapa keduanya kecuali Anda membuat ini sebagai tema untuk digunakan orang lain?Sebenarnya ada banyak cara yang agak berbeda untuk mencapai hal ini, tetapi yang saya sarankan haruslah luar biasa untuk kebutuhan Anda.
Hai @cannyboy:
Saya sebenarnya tidak tahu apa cara terbaik untuk membagikan bidang khusus di seluruh posting. Tapi itu mungkin saja bendera merah yang Anda butuhkan. Jika sesuatu tampak terlalu sulit mungkin ...
Pendekatan Alternatif?
... Anda dapat mempertimbangkan untuk membuat arsitektur berbeda ? Saya pikir Anda akan jauh lebih baik menciptakan Kustom Pos Jenis dari "Car" dan kemudian Anda dapat menyimpan segala sesuatu untuk setiap "halaman" ke dalam salah satu mobil jenis posting. Berikut beberapa contoh URL:
Belajar tentang Jenis Pos Kustom
Anda dapat mempelajari lebih lanjut tentang Jenis Posting Kustom di jawaban atas pertanyaan-pertanyaan ini:
Jenis Posting Kustom dan Aturan Menulis Ulang
Untuk menerapkan Jenis Posting Kustom dan beberapa halaman Anda akan menggunakan kode seperti berikut yang mendaftarkan Tipe Posting Kustom "Mobil" Anda dan kemudian menetapkan aturan penulisan ulang untuk halaman mobil Anda . Masukkan kode ini di
functions.php
file tema Anda atau di plugin, mana yang Anda inginkan:Sebuah Mobil -specific Tema Template Berkas
Maka Anda akan membutuhkan file templat khusus- Mobil dalam tema Anda ; nama default untuk ini adalah
single-car.php
. Saya telah memberi kode templat pemula untuk Anda yang merender ketiga URL ( (tinjauan umum) , 'spesifikasi teknologi' dan 'gambar' ) dalam satu templat dengan menggunakan pernyataan if untuk menentukan konten mana yang akan di-render:Catatan dalam contoh di atas saya menjadi sangat sederhana dengan penggunaan
get_post_meta()
; situs nyata perlu memiliki lebih banyak kerumitan di sana.Tag Templat alias Fungsi Pembantu
Tentu saja saya menggunakan beberapa tag templat alias fungsi pembantu untuk meminimalkan kerumitan pada file templat di pernyataan kondisi if . Ini mereka dan Anda dapat meletakkan ini di
functions.php
file tema Anda juga:Cuplikan layar diisi dengan Love Post Type Love
Setelah Anda memiliki semua kode itu dan Anda telah menambahkan sebuah pos Mobil seperti Volvo 850 Anda dapat membuatnya berfungsi seperti tangkapan layar berikut:
Halaman Tinjauan
(sumber: mikeschinkel.com )
Halaman Spesifikasi Teknis
Halaman Gambar
sumber
Saya pikir seseorang mungkin sudah menjawab pertanyaan ini pada pertanyaan lain yang Anda posting (tentang halaman induk / halaman perantara), tetapi inilah yang saya pikir cara terbaik untuk menyusun data Anda, berdasarkan apa yang telah Anda jelaskan:
Dengan begitu Anda hanya perlu memasukkan bidang meta satu kali - pada halaman induk - dan pada halaman anak-anak Anda dapat menarik data meta itu dari induk:
Tentu saja, cara yang lebih baik untuk mengatur ini adalah dengan memiliki satu jenis pos khusus untuk setiap model mobil yang menyimpan semua informasi mobil, dan menampilkan berbagai subhalaman berdasarkan permintaan GET yang diteruskan ke halaman dan digunakan dalam templat halaman sebagai sakelar untuk menentukan templat mana yang akan ditampilkan. Dengan begitu Anda benar-benar dapat menghindari duplikasi data, dan membuatnya lebih mudah untuk menambahkan lebih banyak informasi ke templat nanti ...
Keterangan lebih lanjut...
Saya telah melakukannya dengan beberapa cara berbeda. Di satu situs di mana saya memiliki agen (perwakilan perusahaan) sebagai jenis posting khusus, saya menggunakan posting mereka untuk menyimpan semua data yang terkait dengan orang itu, tetapi tidak pernah benar-benar menampilkan halaman itu. Sebaliknya, saya memiliki halaman "Daftar Agen", halaman "Catatan Kinerja Agen", dan halaman "Hubungi Agen ini", yang selalu dipanggil dengan variabel GET dan menampilkan informasi dari pos yang sesuai. Jadi permalink akan terlihat seperti site.com/agent-listing/?agent=john-smith .
Di situs lain, saya mengatur semua informasi pada satu halaman dan membangun ketiga tampilan untuk halaman tersebut ke dalam templat halaman. Dalam kasus Anda, itu akan terlihat seperti gambar site.com/cars/volvo-850/ ?
Dan dalam templat halaman Anda akan menyertakan cek untuk variabel itu di dekat bagian atas konten:
sumber
Jika Anda tidak ingin membuat jenis posting khusus, dan Anda hanya ingin menyertakan sidebar khusus untuk setiap halaman atau posting, Anda bisa menggunakan Plugin Sidebar Anggun. Ini memungkinkan membuat konten sidebar khusus langsung dari dalam layar edit halaman atau halaman menggunakan bidang tambahan yang disebut judul anggun dan konten anggun. Ini kemudian ditampilkan di area sidebar sebagai widget ketika posting atau halaman ini ditampilkan di blog Anda. Informasi lebih lanjut tentang plugin ini tersedia di http://www.mlynn.org/graceful-sidebar-plugin
sumber