Saya sedang menulis plugin yang membuat jenis posting khusus bernama "my_plugin_lesson":
$args = array (
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'lessons', 'with_front' => false)
);
register_post_type ('my_plugin_lesson', $args);
Jenis pos khusus memiliki arsip, dan URL arsipnya adalah:
http://example.com/lessons
Saya ingin menyesuaikan tampilan arsip ini; Saya ingin daftar posting dalam format tabel, daripada arsip posting blog WordPress standar. Saya mengerti bahwa templat arsip khusus dapat dibuat dalam tema dengan membuat archive-my_plugin_lesson.php
file; namun, saya ingin plugin berfungsi dengan tema apa pun.
Bagaimana saya bisa mengubah konten halaman arsip tanpa menambahkan atau memodifikasi file tema?
Sunting:
Saya mengerti bahwa saya bisa menggunakan archive_template
hook filter. Namun, semua ini dilakukan adalah mengganti templat tema, yang masih harus spesifik tema. Sebagai contoh, hampir setiap tema template yang akan membutuhkan get_header
, get_sidebar
dan get_footer
fungsi, tapi apa yang harus id konten <div>
menjadi? Ini berbeda di setiap tema.
Yang ingin saya lakukan adalah mengganti konten itu sendiri dengan konten saya sendiri, dan menggunakannya sebagai ganti halaman arsip untuk jenis posting kustom saya.
sumber
Anda dapat menggunakan
archive_template
kait untuk memproses konten templat arsip tema, dengan menggunakan skema di bawah ini, tetapi jelas Anda hanya akan dapat memproses sebagian kecil dari tema di luar sana, mengingat bahwa templat pada dasarnya dapat berisi benda lama apa pun .Skema ini memuat template ke string (
$tpl_str
) diarchive_template
filter, mengganti konten Anda, memasukkan string (menggunakan trikeval( '?>' . $tpl_str );
), dan kemudian mengembalikan file kosong sehinggainclude
di "wp-include / template-loader.php" menjadi no-op.Di bawah ini adalah versi kode yang diretas yang saya gunakan dalam sebuah plugin, yang menargetkan templat "klasik" yang digunakan
get_template_part
dan lebih mementingkan pemrosesan templat tunggal daripada arsip, tetapi akan membantu Anda memulai. Penyiapannya adalah plugin memiliki subdirektori yang disebut "templat" yang menampung file kosong ("null.php") dan templat konten (mis. "Content-single-posttype1.php", "content-archive-postype1.php") serta template mundur "single.php" untuk kasus tunggal, dan menggunakan versi kustomget_template_part
yang terlihat di direktori ini.Kebiasaan
get_template_part
:Untuk kelengkapan, inilah back back "single.php", yang menggunakan custom
get_template_part
:sumber
Saya telah merenungkan pertanyaan yang sama, dan ini adalah solusi hipotetis yang saya buat:
Setelah aktivasi plugin, buat halaman menggunakan wp_insert_post dengan nama menjadi jenis posting dan konten menjadi kode pendek.
Anda dapat memberikan opsi dalam kode pendek untuk pertimbangan gaya tambahan, atau menambahkan kelas ke wadah pos untuk mencocokkan gaya khusus atau gaya khusus. Pengguna juga dapat menambahkan konten tambahan sebelum / sesudah loop dengan mengedit halaman.
sumber
Anda bisa menggunakan filter
single_template
. Contoh dasar yang diambil dari Codex :sumber
archive_template
, tetapi saya tidak berpikir ini akan bekerja untuk apa yang saya coba lakukan. Saya telah mengedit pertanyaan saya dengan informasi lebih lanjut.