Menambahkan Arsip Posting ke Menu Navigasi di WordPress 3.0

10

Namun, saya bermain-main dengan WordPress 3.0 dan dua (2) fitur baru, Custom Post Types dan Menu Editor .

Saya mulai dengan membuat jenis posting baru yang disebut " products", seperti yang sudah Anda duga, daftar produk ini.

Saya menggunakan template standar rawa dan saya membuat menu baru untuk menggantikan nav atas. Sejauh yang saya lihat, saya hanya bisa menambahkan "produk" tertentu ke dalamnya, saya tidak bisa menambahkan "arsip" produk. Yang saya coba lakukan adalah menambahkan tautan ke menu untuk pergi ke halaman yang mencantumkan SEMUA produk.

Ada ide bagaimana caranya mengerjakan ini?

Dotty
sumber

Jawaban:

12

@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:

Halaman Produk yang menggunakan Shortcode untuk menampilkan daftar Produk di WordPress
(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.phpTema Template Berkas

Selanjutnya Anda harus membuat file templat tema yang hanya menampilkan satu produk. Fungsi yang mengimplementasikan shortcode menamai file template post-product.phpdan 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):

  1. Pilih opsi menu di menu admin.
  2. Klik " + " untuk menambahkan menu baru.
  3. Ketikkan nama menu Anda, apa pun yang Anda suka.
  4. Klik tombol "Buat Menu" (tangkapan layar menunjukkan "Simpan Menu" tetapi itu akan menjadi "Buat Menu" saat menambahkan.)
  5. Pilih Menu baru Anda sebagai "Navigasi Utama" .
  6. Pilih halaman " Produk " Anda.
  7. Klik "Tambahkan ke Menu"
  8. Klik "Simpan Menu"

Menambahkan Opsi Menu Halaman Produk ke Situs WordPress
(sumber: mikeschinkel.com )

Akhirnya, Output

Dan inilah yang terlihat seperti daftar produk dasar:

Daftar Produk menggunakan Jenis Posting Kustom di WordPress
(sumber: mikeschinkel.com )

MikeSchinkel
sumber
Pertanyaan yang ditinggalkan adalah bagaimana mengubah entri menu produk sehingga menyediakan submenu dengan semua produk.
hakre
@Harke Diperbarui.
MikeSchinkel
nah itu bukan permintaan :). Saya hanya ingin tahu bagaimana drop-down menjadi otomatis dibuat dan saya pikir itu masih belum berhasil. Tapi seperti yang tertulis, itu bukan permintaan.
hakre
Hai, saya punya masalah dengan ini dan harap Anda bisa membantu. Masalahnya adalah current-menu-itemkelas tidak diterapkan pada produk 'li
Reigel
Gambar tidak ada. : /
fuxia
4

Ini tidak didukung secara asli oleh WordPress. Namun, Anda bisa menambahkan ini ke file functions.php Anda dan itu akan berfungsi:

function give_me_a_list_of_products(){
  add_rewrite_rule( 'products/?$', 'index.php?post_type=products', 'top' );
}

add_action( 'init', 'give_me_a_list_of_products' );

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.

John P Bloch
sumber
Terima kasih atas info hebatnya di sini. Saya mencari hal yang sama tetapi meskipun semuanya bekerja dengan baik dengan penulisan ulang saya terjebak karena ketika saya menambahkan tautan khusus ke menu situs web publik tampaknya tidak mengubah css yang menunjukkan pengunjung ada di halaman itu. Bisakah Anda memberi tahu saya bagaimana hal ini dilakukan sehingga saya dapat menampilkan item menu dalam status "on" jika Anda berada dalam arsip "produk"?
NetConstructor.com
0
Sejauh yang saya lihat saya hanya bisa menambahkan "produk" tertentu untuk itu, saya tidak bisa menambahkan "arsip" produk. Yang saya coba lakukan adalah menambahkan tautan ke menu untuk pergi ke halaman yang mencantumkan SEMUA produk. Ada ide bagaimana caranya mengerjakan ini?

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" teks alternatif

Jika saya ingin semua pekerjaan dengan istilah taksonomi "Bukaan Saat Ini" saya akan memilihnya dan menambahkannya ke menu. teks alternatif

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.

Chris_O
sumber
@Chris_O : Ini adalah satu cara, tetapi bukan satu-satunya cara dan juga membutuhkan upaya yang cukup untuk mempertahankan kategorisasi oleh pengguna. Lagipula, JMTCW.
MikeSchinkel
Masuk akal. Semoga halaman indeks jenis posting khusus ini akan ditanggapi secara inti.
Chris_O
0

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 .

bueltge
sumber