WordPress 3.0'da Gezinme Menüsüne Yayın Arşivi Ekleme


10

Hayýr, WordPress 3.0 ve iki (2) yeni özellik, Özel Mesaj Türleri ve Menü Düzenleyici ile oynuyorum .

productsTahmin ettiğiniz gibi, bu liste ürünlerinin " " adında yeni bir yazı türü oluşturarak başladım .

Bataklık standart şablon kullanıyorum ve üst nav yerine yeni bir menü oluşturuyorum. Görebildiğim kadarıyla sadece belirli "ürünleri" ekleyebildiğim için , ürünlerin "arşivini" ekleyemiyorum . Yapmaya çalıştığım, TÜM ürünleri listeleyen bir sayfaya gitmek için menüye bir bağlantı eklemek.

Bunun nasıl yapılacağı hakkında bir fikrin var mı?

Yanıtlar:


12

@dotty Bu trac bileti ile görebileceğiniz gibi: Özel yazı türleri için dizin sayfaları bulunmalıdır, bu nedenle WordPress çekirdeğinde ihtiyaç henüz giderilmemiştir.

Hem @John P Bloch hem de @Chris_O size iyi alternatifler sunar; Sana bir üçüncü vereceğim.

Bir "Ürünler" Sayfası

Önce Özel Yazı Türünüz için bir Sayfa oluşturun ve "Ürünler" olarak adlandırın . Bu, aşağıdaki URL'yi verecektir:

http: //example.php/products/

Bir "Ürün Listesi" Kısa Kodu

Ardından , "Ürünler" sayfanıza gömebileceğiniz bir Kısa Kod oluşturun . Örneğimde aradım . İşte onu kullanarak neye benzeyeceğini gösteren bir ekran görüntüsü:[product-list]

WordPress'te Ürünlerin listesini görüntülemek için Kısa Kod kullanan bir Ürünün Sayfası
(kaynak: mikeschinkel.com )

Böyle bir kısa kodun birçok isteğe bağlı işlevsellik eklemek ve birçok farklı yazı tipi için çalışmasını sağlamak için harika bir aday olacağını unutmayın, ancak netlik açısından her şeyi çok zor kodladım. Elbette kendi kısa kodunuz için bir başlangıç ​​noktası olarak kullanabilirsiniz:

<?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);
  }
}

Bir post-product.phpTema Şablon Dosyası

Ardından, yalnızca bir ürünü görüntüleyen bir tema şablonu dosyası oluşturmanız gerekir. Kısa kodu uygulayan işlev şablon dosyasını adlandırır post-product.phpve işte iyi bir başlangıç ​​noktası:

<?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>

Menü Seçeneğini Ekle

Son olarak menü seçeneğini eklemek isteyeceksiniz. Bu ekran görüntüsünde görebileceğiniz gibi bu çok basittir (aşağıda WordPress 3.0 menüleriyle daha önce hiçbir şey yapmadığınız ve Yirmi On gibi WordPress 3.0 menülerini destekleyen bir tema kullandığınız varsayılmaktadır):

  1. Yönetici menüsünde menü seçeneğini seçin.
  2. Click " + " yeni bir menü eklemek için.
  3. Menü adınızı istediğinizi yazın.
  4. Click "Menü Oluştur" butonuna (ekran görüntüsü gösterileri "Kaydet Menüsü" ama olacak "Menü oluşturma" eklerken.)
  5. "Birincil Navigasyon" olarak yeni Menünüzü seçin .
  6. Senin seçin "Ürünler " sayfasını.
  7. "Menüye Ekle" yi tıklayın
  8. "Menüyü Kaydet" i tıklayın

WordPress Sitesine Ürün Sayfası Menü Seçeneği Ekleme
(kaynak: mikeschinkel.com )

Son olarak, Çıktı

Temel ürün listelemesi şöyle görünebilir:

WordPress'te Özel Yazı Türü Kullanan Ürünlerin Listesi
(kaynak: mikeschinkel.com )


Kalan soru, ürünler menüsü girişinin nasıl değiştirileceği, böylece tüm ürünlerle bir alt menü sağlamasıdır.
hakre

@harke Güncellendi.
MikeSchinkel

iyi bir istek değildi :). Açılır listenin nasıl otomatik olarak oluşturulduğunu merak ettim ve bence bu hala geçerli değil. Ama yazıldığı gibi, bu bir istek değil .
hakre

Merhaba, bununla ilgili bir sorunum var ve umarım yardım edebilirsin. Sorun current-menu-itemsınıf ürünlere uygulanmadı 'li
Reigel

Eksik görüntüler. : /
fuxia

4

Bu, WordPress tarafından yerel olarak desteklenmemektedir. Ancak, bunu function.php dosyanıza ekleyebilirsiniz ve işe yarayacaktır:

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' );

Bu size bir ürün listesi olarak example.com/products/ adresini verecektir. Oradan menünüze özel bir bağlantı eklersiniz.

Ancak, özet akışlarıyla gerçek arşivleme (ay, yıl vb. Olarak) istiyorsanız, daha ayrıntılı bir koda ihtiyacınız vardır. 'Ürünleriniz' hiyerarşik olmayan bir yazı türüyse (olması gerektiği gibi görünüyorsa), eklentimi kullanabilirsiniz:

http://www.wordpress.org/extend/plugins/custom-post-permalinks/

Bu, kalıcı bağlantılarınızı (blog yayınlarında yapabileceğiniz gibi) özelleştirmek için ekstra alanlar sağlar ve kalıcı bağlantılarınızı kategori, yazar, ay, yıl, yayın türü vb.


Burada harika bilgiler için teşekkürler. Ben aynı şeyi arıyorum ama her şeyi yeniden yazma ile iyi çalışıyor rağmen ben menüye özel bağlantı eklemek zaman genel web sitesi bir ziyaretçi o sayfada olduğunu gösteren css değiştirmek gibi görünmüyor çünkü ben sıkışmış. Bunun nasıl yapıldığını bana bildirir misiniz, böylece "ürünler" arşivi içindeyseniz "açık" durumunda menü öğesini gösterebilir miyim?
NetConstructor.com

0
Görebildiğim kadarıyla sadece belirli "ürünler" ekleyebilirsiniz, ben ürünlerin "arşiv" ekleyemezsiniz. Yapmaya çalıştığım, TÜM ürünleri listeleyen bir sayfaya gitmek için menüye bir bağlantı eklemek. Bunun nasıl yapılacağı hakkında bir fikrin var mı?

"Ürünler" yayın türüne bir sınıflandırma atamanız ve sonra sınıflandırma terimini özel menülerinizden birine eklemeniz gerekir; bu da kullanıcıyı kullanılan sınıflandırma altındaki tüm ürünlerin bir arşiv sayfasına götürür.

Örnek "Pozisyonlar" etiketli bir sınıflandırma ile "İşler" adlı özel bir yazı türü var alternatif metin

Eğer "Current Openings" sınıflandırma terimi ile tüm işleri isteseydim onu ​​seçer ve menüye eklerdim. alternatif metin

Arşiv sayfasında tüm "ürün" yayın türlerinizin olması gerekiyorsa, hepsine arşiv sayfasında listelenebilmeleri için bir üst sınıflandırma atayabilirsiniz.


@Chris_O : Bu tek yoldur, ancak tek yoldur ve aynı zamanda kullanıcı tarafından sınıflandırmayı korumak için oldukça fazla çaba gerektirir. Yine de JMTCW.
MikeSchinkel

Mantıklı. Umarım özel yazı tipi dizin sayfası çekirdekte ele alınacaktır.
Chris_O

0

Bence, özel yazı tipi bir yazı tipi Arşivi oluşturmak ve arşivlenmiş mesajları bu arşive taşımak daha iyi bir çözümdür. Ayrıca mevcut post_type'i bu yeni post_type'in postmeta'sına da geri alın. Bunun için bir eklenti yazdım ve mevcut gist.github / 978690'da stil sayfaları, resimler ve dil dosyası olmadan bunu görebilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.