เปลี่ยนลำดับของรายการอนุกรมวิธานที่กำหนดเอง


15

ตามค่าเริ่มต้น WordPress สั่งซื้อ taxonomies ที่กำหนดเอง (เป็นแท็กในกรณีนี้) ตามลำดับตัวอักษรไม่ใช่ตามลำดับที่ป้อนในกล่องแท็ก

มีใครทราบวิธีแสดง taxonomies ที่กำหนดเองตามลำดับที่ป้อนในหน้าจอแก้ไขการโพสต์หรือไม่

URL ที่เป็นปัญหาคือ: http://granadatheater.com/

ขณะนี้ศิลปิน GGW (ดำเนินไปได้ด้วยดี) ตามลำดับตัวอักษรและพวกเขาต้องการให้มีการเปลี่ยนแปลงเพื่อให้พวกเขาได้รับคำสั่งแบบเดียวกับที่พวกเขาเข้า

ดังนั้นถ้าใส่มันศิลปิน 1, ศิลปิน 3, ศิลปิน 2 นั่นคือวิธีที่มันควรจะปรากฏบนส่วนหน้าของเว็บไซต์


คุณหมายถึงการป้อนคำสั่งซื้อต่อโพสต์ฐาน?
hakre

อาจจะสั่งโดย id?
Bainternet

ดีที่สุดที่ฉันสามารถบอกได้ว่าพวกเขาจะแสดงตามลำดับตัวอักษรดังนั้นฉันอาจไม่เข้าใจคำถาม คุณต้องการสิ่งนี้ที่ไหน คุณสามารถให้ภาพหน้าจอและ URL ตัวอย่างซึ่งคุณจะพบสิ่งที่คุณต้องการเปลี่ยนแปลงหรือไม่?
MikeSchinkel

คำตอบ:


0

นี่เป็นไปไม่ได้ "ออกจากกล่อง" ...

ตัวเลือก 'orderby' เริ่มต้นคือ (ขึ้นหรือลง)

  • ชื่อ ID
  • ค่าเริ่มต้น
  • กระสุน
  • นับ
  • term_group

ทั้งหมดนี้มีรายละเอียดอยู่ใน codex

-

ที่กล่าวว่ามีผู้หญิงที่ฉลาด & บางคนที่นี่ หากใครสามารถแก้ไขได้หนึ่งในคนเหล่านี้ฉันแน่ใจ!


8

หลังจากค้นหาและทดสอบอย่างครอบคลุมแล้วฉันพบคำตอบ

เพิ่มรหัสนี้ในฟังก์ชั่นของธีมของคุณ php:

function set_the_terms_in_order ( $terms, $id, $taxonomy ) {
    $terms = wp_cache_get( $id, "{$taxonomy}_relationships_sorted" );
    if ( false === $terms ) {
        $terms = wp_get_object_terms( $id, $taxonomy, array( 'orderby' => 'term_order' ) );
        wp_cache_add($id, $terms, $taxonomy . '_relationships_sorted');
    }
    return $terms;
}
add_filter( 'get_the_terms', 'set_the_terms_in_order' , 10, 4 );

function do_the_terms_in_order () {
    global $wp_taxonomies;  //fixed missing semicolon
    // the following relates to tags, but you can add more lines like this for any taxonomy
    $wp_taxonomies['post_tag']->sort = true;
    $wp_taxonomies['post_tag']->args = array( 'orderby' => 'term_order' );    
}
add_action( 'init', 'do_the_terms_in_order');

(เครดิต: ขึ้นอยู่กับ - แต่ปรับปรุง - http://wordpress.kdari.net/2011/07/listing-tags-in-custom-order.html )


มันใช้งานได้แม้ว่าผู้ดูแลระบบจะล้างแคชของพวกเขา? ดูเหมือนจะไม่แน่นอนที่จะขึ้นอยู่กับแคชสำหรับคำสั่งซื้อ
PBwebD

1
หากผู้ดูแลระบบล้างแคชแล้วข้อกำหนดใหม่จะหายไปเพราะยังไม่ได้บันทึก เราใช้โค้ดข้างต้นในเว็บไซต์ Wordpress หลายแห่งตั้งแต่ฉันโพสต์สิ่งนี้และฉันไม่เคยเจอปัญหาใด ๆ
Biranit Goren

1
@BiranitGoren ยกโทษให้ฉันเพื่อดำเนินการต่อในหัวข้อนี้ต่อไป แต่ความกังวลที่อยู่ตรงกลางของคำตอบทั้งหมดterm_orderคือไม่ได้รับการสนับสนุน ดังนั้นฉันสงสัยในตัวอย่างรหัสของคุณที่term_orderกำหนดไว้เพื่อให้คุณสามารถเรียงลำดับได้หรือไม่
GigiSan

2
@GigiSan รองรับการใช้งานจริง ๆ แล้ว แต่ยังไม่ได้ใช้ Wordpress มี term_order อยู่ในแกนกลาง - แต่ไม่ได้ใช้เป็นค่าเริ่มต้น ดังนั้นคุณไม่จำเป็นต้องกำหนดมันมีการกำหนดไว้แล้ว (ดูสิ่งนี้ได้ที่ trac: core.trac.wordpress.org/ticket/9547 )
Biranit Goren

2

ฉันดิ้นรนเพื่อค้นหาคำตอบสำหรับเงื่อนไขการเรียงลำดับแบบกำหนดเองของเด็กตามตัวอักษร ... ฉันไม่แนะนำให้แก้ไขไฟล์ WP หลักดังนั้นนี่คือสิ่งที่ฉันเพิ่มลงในไฟล์ taxonomy.php ของฉันเพื่อแสดงรายการคำอธิบายอนุกรมวิธานที่กำหนดเองพร้อมลิงก์ ตามข้อกำหนดของเด็กตามลำดับตัวอักษร ปรับเปลี่ยนให้เหมาะสมกับความต้องการของคุณฉันหวังว่านี่จะช่วยให้ใครบางคนที่นั่น

// Get Main Taxonomy for use in template file
$term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );
$termTaxonomy = $term->taxonomy;

<h1><?php echo apply_filters( 'the_title', $term->name ); ?></h1>

<?php // test for description before unleashing a div 
if ( !empty( $term->description ) ): 
  echo '<div class="description">';
  echo $term->description;
  echo '</div>;
endif; ?>

// Now get children terms, using get_term & 'child_of' get's us alphabetical order
$termchildren = get_terms( $termTaxonomy, array(
  'child_of'     => $term->term_id,
  'hierarchical' => 0,
  'fields'       => 'ids',
  'hide_empty'   => 0
) );

// Make an alphabetical linked list
echo '<ul>';
foreach ($termchildren as $child) {
  $term = get_term_by( 'id', $child, $termTaxonomy );

  // Modify this echo to customize the output for each child term
  echo '<li><a href="' . get_term_link( $term->name, $termTaxonomy ) . '" alt="' .$term->description. '">' . $term->name . '</a></li>';
}
echo '</ul>';

2

ฉันรู้ว่านี่เป็นการโกง แต่คุณสามารถใช้ปลั๊กอินSimple Custom Post Orderได้ ฟรีและช่วยให้คุณสามารถจัดเรียง Taxonomies นอกเหนือจากประเภทโพสต์


0

และหลังจากที่จะแสดงในหน้าเว็บลำดับที่ดีมันอาจจะเป็น:

เพื่อใส่ "orderby" => "term_group" ใน wp_get_post_terms ของคุณ

ตัวอย่าง:

"poste" เป็นชื่ออนุกรมวิธานของฉันเอง

$poste =  wp_get_post_terms($post->ID, 'poste', array("fields" => "names", "orderby" => "term_group"));
        if(!empty($poste[0])){ echo $poste[0];}
        if(!empty($poste[1])){
          echo " - ", $poste[1]; }
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.