@otty Seperti yang dapat Anda lihat dengan tiket trac ini: Harus ada halaman indeks untuk jenis posting kustom jadi jelas kebutuhannya belum ditangani di inti WordPress.
@John P Bloch dan @Chris_O memberikan Anda alternatif yang baik; Saya akan memberi Anda 3.
Sebuah "Produk" Halaman
Pertama, Buat Halaman untuk Jenis Posting Kustom Anda dan menyebutnya "Produk" . Itu akan memberikannya URL berikut:
http: //example.php/products/
Sebuah "Daftar Produk" Kode pendek
Selanjutnya buat Shortcode yang dapat Anda sisipkan ke halaman "Produk" . Dalam contoh saya, saya menyebutnya [product-list]
. Berikut ini screenshot dari tampilannya yang seperti apa:
(sumber: mikeschinkel.com )
Perhatikan bahwa kode pendek seperti itu akan menjadi kandidat yang bagus untuk menambahkan banyak fungsi opsional dan memungkinkannya bekerja untuk banyak jenis posting yang berbeda, tetapi demi kepentingan kejelasan, saya cukup banyak mengkodekan semuanya. Tentu saja Anda dapat menggunakannya sebagai titik awal untuk kode pendek Anda sendiri:
<?php
add_shortcode('product-list', 'my_product_list');
function my_product_list($args) {
$save_post = $GLOBALS['post']; // Save state so you can restore later
$post_type = 'product';
$template_file = get_stylesheet_directory() . "/post-{$post_type}.php";
if (!file_exists($template_file)) {
return "<p>Missing template [$template_file].</p>";
} else {
global $post;
$q = new WP_Query("showposts=10&post_type={$post_type}&orderby=title&order=ASC");
$rows = array();
$rows[] = '<div class="post-list ' . $post_type . '-post-list">';
global $post_list_data;
$post_list_data = array();
$post_list_data['post_count'] = $post_count = count($q->posts);
foreach ($q->posts as $post) {
$q->the_post();
ob_start();
include($template_file);
$rows[] = ob_get_clean();
}
$rows[] = '</div>';
$GLOBALS['post'] = $save_post;
return implode("\n",$rows);
}
}
Sebuah post-product.php
Tema Template Berkas
Selanjutnya Anda harus membuat file templat tema yang hanya menampilkan satu produk. Fungsi yang mengimplementasikan shortcode menamai file template post-product.php
dan inilah titik awal yang baik:
<?php
/**
* post-product.php - File to display only one product within a list of products.
*/
?>
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<h2 class="entry-title"><?php the_title(); ?></h2>
<div class="entry-content">
<?php the_content(); ?>
</div>
</div>
Tambahkan Opsi Menu
Terakhir Anda ingin menambahkan opsi menu. Ini sangat mudah seperti yang Anda lihat dari tangkapan layar ini (berikut ini mengasumsikan Anda tidak melakukan apa-apa dengan menu WordPress 3.0 sebelumnya dan bahwa Anda menggunakan tema yang mendukung menu WordPress 3.0 seperti Twenty Ten):
- Pilih opsi menu di menu admin.
- Klik " + " untuk menambahkan menu baru.
- Ketikkan nama menu Anda, apa pun yang Anda suka.
- Klik tombol "Buat Menu" (tangkapan layar menunjukkan "Simpan Menu" tetapi itu akan menjadi "Buat Menu" saat menambahkan.)
- Pilih Menu baru Anda sebagai "Navigasi Utama" .
- Pilih halaman " Produk " Anda.
- Klik "Tambahkan ke Menu"
- Klik "Simpan Menu"
(sumber: mikeschinkel.com )
Akhirnya, Output
Dan inilah yang terlihat seperti daftar produk dasar:
(sumber: mikeschinkel.com )
current-menu-item
kelas tidak diterapkan pada produk 'li
Ini tidak didukung secara asli oleh WordPress. Namun, Anda bisa menambahkan ini ke file functions.php Anda dan itu akan berfungsi:
Itu akan memberi Anda example.com/products/ sebagai daftar produk. Dari sana, Anda cukup menambahkan tautan khusus ke menu Anda.
Namun, jika Anda ingin pengarsipan yang benar (berdasarkan bulan, tahun, dll.) Dengan umpan, Anda memerlukan kode yang lebih rinci. Jika 'produk' Anda adalah jenis posting non-hierarkis (sepertinya seharusnya), Anda dapat menggunakan plugin saya:
http://www.wordpress.org/extend/plugins/custom-post-permalinks/
Itu memberi Anda bidang tambahan untuk menyesuaikan permalink Anda (seperti Anda dapat dengan posting blog), dan akan memberi Anda kemampuan untuk menyesuaikan permalink berdasarkan kategori, penulis, bulan, tahun, jenis posting, dll.
sumber
Anda perlu menetapkan taksonomi untuk jenis posting "produk" kemudian menambahkan istilah taksonomi ke salah satu menu khusus Anda yang kemudian akan membawa pengguna ke halaman arsip semua produk di bawah taksonomi yang digunakan.
Contoh Saya memiliki jenis pos kustom yang disebut "Pekerjaan" dengan taksonomi berlabel "posisi"
Jika saya ingin semua pekerjaan dengan istilah taksonomi "Bukaan Saat Ini" saya akan memilihnya dan menambahkannya ke menu.
Jika Anda perlu memiliki semua jenis posting "produk" di halaman arsip, Anda dapat menetapkan taksonomi induk untuk semuanya sehingga semuanya dapat dicantumkan di halaman arsip.
sumber
Saya pikir, ini adalah solusi yang lebih baik untuk membuat melalui tipe posting kustom dan tipe posting Arsip dan memindahkan posting yang diarsipkan dalam arsip ini. Juga tambahkan post_type saat ini ke postmeta post_type baru ini untuk membatalkan ini. Saya telah menulis sebuah plugin untuk ini dan saat ini Anda dapat melihat ini, tanpa stylesheet, gambar dan file bahasa, di gist.github / 978690 .
sumber