เพิ่มหมวดหมู่ในคอลัมน์ผู้ดูแลระบบสำหรับประเภทโพสต์ที่กำหนดเองหรือไม่


13

ฉันได้สร้างประเภทโพสต์ที่กำหนดเองที่เรียกว่าบทความและข้อมูลที่กำหนดในหน้าจอสรุปผู้ดูแลระบบนั้นกระจัดกระจาย ฉันสามารถเพิ่มภาพโพสต์ภาพเด่นที่แนะนำโดยใช้http://codex.wordpress.org/Plugin_API/Action_Reference/manage_posts_custom_columnจากบทช่วยสอน

อย่างไรก็ตามฉันต้องการรับภาพรวมของหมวดหมู่และหมวดหมู่ย่อยที่โพสต์เหล่านี้ได้กำหนดไว้ในหน้าผู้ดูแลระบบ คือการเพิ่มคอลัมน์สำหรับส่วนนั้น?

นี่คือรหัสที่ฉันใช้ลงทะเบียน taxonomy ในรหัสประเภทโพสต์ที่กำหนดเอง


คุณสามารถใช้ปลั๊กอินเช่นคอลัมน์ผู้ดูแลระบบของ
Codepress

คำตอบ:


18

register_taxonomyฟังก์ชั่นที่มีพารามิเตอร์ที่เรียกว่าshow_admin_columnที่จะจัดการกับการเพิ่มคอลัมน์ คุณเคยลองไหม

เช่น:

register_taxonomy(
    'my_tax, 
    'post_type', 
    array(
        'label'             => 'My Taxonomy',
        'show_admin_column' => true,
        )
);

1
กรุณาเพิ่มรหัสและอธิบายวิธีการใช้ตอบคำถาม หากคุณต้องการถามอะไรบางอย่างกับ OP ให้ใช้ความคิดเห็น
cybmeta

6

หลังจากการค้นหาบางฉันพบวิธีใช้manage_edit-${post_type}_columnsตัวกรองและการmanage_${post_type}_posts_custom_columnกระทำ

คอลัมน์ถูกสร้างด้วยตัวกรองจากนั้นคอลัมน์จะถูกเติมด้วยแอ็คชัน ฉันคิดว่าสามารถเพิ่มคอลัมน์และเติมประชากรได้อย่างง่ายดายโดยใช้แนวคิดในลิงก์นี้http://justintadlock.com/archives/2011/06/27/custom-columns-for-custom-post-types

add_filter('manage_edit-article_columns', 'my_columns');
function my_columns($columns) {
    $columns['article_category'] = 'Category';
return $columns;
}

add_action( 'manage_article_posts_custom_column', 'my_manage_article_columns', 10, 2 );

function my_manage_article_columns( $column, $post_id ) {
global $post;

switch( $column ) {

    /* If displaying the 'article_category' column. */
    case 'article_category' :

        /* Get the genres for the post. */
        $terms = get_the_terms( $post_id, 'article_category' );

        /* If terms were found. */
        if ( !empty( $terms ) ) {

            $out = array();

            /* Loop through each term, linking to the 'edit posts' page for the specific term. */
            foreach ( $terms as $term ) {
                $out[] = sprintf( '<a href="%s">%s</a>',
                    esc_url( add_query_arg( array( 'post_type' => $post->post_type, 'article_category' => $term->slug ), 'edit.php' ) ),
                    esc_html( sanitize_term_field( 'name', $term->name, $term->term_id, 'article_category', 'display' ) )
                );
            }

            /* Join the terms, separating them with a comma. */
            echo join( ', ', $out );
        }

        /* If no terms were found, output a default message. */
        else {
            _e( 'No Articles' );
        }

        break;

    /* Just break out of the switch statement for everything else. */
    default :
        break;
}
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.