it-swarm-id.com

Menambahkan Arsip Posting ke Menu Navigasi di WordPress 3.0

Namun, saya bermain-main dengan WordPress 3.0 dan dua (2) fitur baru, Jenis Posting Kustom dan Menu Editor .

Saya sudah 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 bisa lihat, saya hanya dapat menambahkan "produk" padanya, saya tidak bisa menambahkan arsip " " produk. Apa yang saya coba lakukan adalah menambahkan tautan ke menu untuk pergi ke halaman yang mencantumkan SEMUA produk.

Ada ide bagaimana caranya mengerjakan ini?

10
dotty

@ dotty Seperti yang dapat Anda lihat dengan tiket trac ini: Seharusnya ada halaman indeks untuk jenis posting khusus jadi jelas kebutuhannya belum ditangani di inti WordPress.

@John P Bloch dan @Chris_O memberi Anda alternatif yang baik; Saya akan memberi Anda 3.

A "Produk" Halaman

Pertama-tama, buat Halaman untuk Jenis Posting Kustom Anda dan menyebutnya "Produk" . Itu akan memberikannya URL berikut:

http: //example.php/products/

A "Daftar Produk" Kode Pintas

Selanjutnya buat Shortcode yang dapat Anda sisipkan ke dalam "Produk" halaman. Dalam contoh saya, saya menyebutnya [product-list]. Berikut ini screenshot dari tampilannya yang seperti apa:

A Product's Page that uses a Shortcode to display a list of Products in 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);
  }
}

File Template Tema post-product.php

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

  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 akan "Buat Menu" saat menambahkan.)
  5. Pilih Menu baru Anda sebagai "Navigasi Utama" Anda.
  6. Pilih halaman "Produk " Anda.
  7. Klik "Tambahkan ke Menu"
  8. Klik "Simpan Menu"

Adding a Products Page Menu Option to a WordPress Site
(sumber: mikeschinkel.com )

Akhirnya, Output

Dan inilah tampilan daftar produk dasar:

A List of Products using a Custom Post Type in WordPress
(sumber: mikeschinkel.com )

12
MikeSchinkel

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 yang Anda dapat dengan posting blog), dan akan memberi Anda kemampuan untuk menyesuaikan permalink berdasarkan kategori, penulis, bulan, tahun, jenis posting, dll.

4
John P Bloch

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 .

0
bueltge
Sejauh yang saya lihat saya hanya bisa menambahkan "produk" tertentu untuk itu, saya tidak bisa menambahkan "arsip" produk. Apa 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 posting khusus yang disebut "Pekerjaan" dengan taksonomi berlabel "posisi" alt text

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

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.

0
Chris_O