หน้ารายการอนุกรมวิธานที่กำหนดเอง?


11

ฉันทำงานในไซต์ร้านอาหารและฉันมีประเภทโพสต์ที่กำหนดเองสำหรับอาหารเช่น:

$args = array(
    'labels'=> $labels,
    'public'=> true,
    'publicly_queryable'=>true,
    'show_ui'=>true,
    'show_in_nav_menus'=>true,
    'query_var'=>'dish',
    'rewrite'=>true,
    'capability_type'=>'post',
    'hierarchicial'=>false,
    'menu_position'=>5,
    'supports'=>array(
        'title',
        'editor',
        'thumbnail',
        'excerpt',
        'custom-fields',
        'revisions'
    )   
);  

register_post_type('dish', $args);

ตัวอย่างหนึ่งของ taxonomies แบบกำหนดเองที่ฉันต้องการใช้คือ:

register_taxonomy('Main Ingredient', array('dish'), array(
    'hierarchical' => true,
    'label' => 'Main Ingredient',
    'singular_label' => 'Main Ingredient',
    'query_var'=>true,
    'rewrite' => true)
);

taxonomies ที่กำหนดเองนั้นใช้งานได้ดีในผู้ดูแลระบบและฉันสามารถไปที่myurl.com/main-ingredient/porkและดูรายการอาหารทั้งหมดที่มีหมูอยู่ในนั้น

สิ่งที่ฉันต้องการจะทำคือสามารถตีmyurl.com/main-ingredientและรับรายการของค่าส่วนผสมหลักต่างๆทั้งหมด

ฉันพบข้อมูลอ้างอิงนี้ซึ่งเป็นสิ่งที่ฉันพยายามทำ

แต่ทางออกไม่ได้ผลสำหรับฉัน - ฉันยังคงได้รับ 404 เมื่อไป myurl.com/main-ingredient

ข้อเสนอแนะใด ๆ เกี่ยวกับวิธีที่ดีที่สุดในการทำเช่นนี้?

คำตอบ:


20

ไม่มีสิ่งใดใน WordPress ที่จะให้หน้า"ดัชนี"สำหรับอนุกรมวิธานของคุณเนื่องจากคำถามของคุณบอกว่าควรจะมี(และฉันเห็นด้วยควรมี! แต่ไม่มี!)

แต่คุณต้องแฮ็คมันและวิธีหนึ่งในการทำเช่นนั้นคือการสร้างหน้าชื่อ"ส่วนผสมหลัก"ด้วยmain-ingredientURL ทากและกำหนดเทมเพลตหน้าสำหรับธีมของคุณที่คุณจะสร้าง (อาจ)เรียกว่า"รายการส่วนผสมหลัก" :

สกรีนช็อตแสดงตำแหน่งที่จะตั้งเทมเพลตของเพจใน WordPress
(ที่มา: mikeschinkel.com )

นี่คือจุดเริ่มต้น อาจใช้ชื่อไฟล์page-main-ingredient-list.php สำหรับเทมเพลตหน้าของคุณ:

<?php
/*
Template Name: Main Ingredient List
*/
get_header();
$main_ingredients = get_terms('main-ingredient');
foreach($main_ingredients as $main_ingredient) {
  $dishes = new WP_Query(array(
    'post_type' => 'dish',
    'post_per_page'=>-1,
    'taxonomy'=>'main-ingredient',
    'term' => $main_ingredient->slug,
  ));
  $link = get_term_link(intval($main_ingredient->term_id),'main-ingredient');
  echo "<h2><a href=\"{$link}\">{$main_ingredient->name}</a></h2>";
  echo '<ul>';
  while ( $dishes->have_posts() ) {
    $dishes->the_post();
    $link = get_permalink($post->ID);
    $title = get_the_title();
    echo "<li><a href=\"{$link}\">{$title}</a></li>";
  }
  echo '</ul>';
}
get_footer();

และนี่คือหน้าตาที่มีข้อมูลดัมมี่บนไซต์ทดสอบของฉัน:

สกรีนช็อตของหน้า Taxonomy Index สำหรับเว็บไซต์ WordPress


สวัสดีไมค์ใช่ฉันทำอย่างนั้น มันไม่ได้ช่วยอะไร

@Josh - ฉันเพิ่มรหัสที่คุณพบที่นี่ลงในfunctions.phpไฟล์ของธีมของฉันแล้วไปที่http://wp30.dev/main-ingredient/chicken/ ( wp30.devเป็นเว็บไซต์ทดสอบในพื้นที่ของฉัน)และรับภาพหน้าจอนี้ ดังนั้นหากมันไม่ทำงานคุณมีปลั๊กอินหรือรหัสอื่น ๆ ที่ทำให้มันไม่ทำงาน
MikeSchinkel

ขอบคุณสำหรับการตอบไมค์ ใช้งานได้สำหรับฉัน แต่ไม่ใช่ปัญหาที่ฉันพยายามแก้ไข ฉันกำลังพยายามหารายชื่อส่วนผสมหลักโดยไปที่ระดับสูงสุดของอนุกรมวิธาน กล่าวอีกนัยหนึ่งถ้าคุณกำจัด "chicken" ออกจาก URL ของคุณคุณควรได้รับหน้า 404 นั่นคือปัญหาที่ฉันพบ

@Josh - โอเคฉันเห็นแล้วตอนนี้ ขออภัยฉันตอบคำถามมากเกินไปในวันนี้ ปีงบประมาณ, ไม่มีอะไรในตัว "WordPress" ที่จะจัดการกับสิ่งที่คุณต้องการ มันจะทำให้รู้สึกว่ามันจะมีโดยอัตโนมัติ แต่ตอนนี้มันไม่ได้ ฉันจะเขียนการอัปเดตซึ่งเป็นวิธีแก้ปัญหา
MikeSchinkel

3
@ Josh - "แต่ฉันเกลียดการสูญเสียฟังก์ชันการทำงานที่ยอดเยี่ยมของการดูโพสต์และการนำทางผ่านคำศัพท์อนุกรมวิธาน":ฉันต้องหายไปบางอย่างเพราะฉันไม่เห็นว่าคุณทำอะไรกับสิ่งนี้หรือไม่?
MikeSchinkel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.