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


9

ฉันกำลังสร้างเว็บไซต์ที่มีโพสต์ที่กำหนดเอง 4 ประเภท เพื่อให้ง่ายขึ้นสำหรับลูกค้า / ผู้ดูแลระบบของเราฉันสงสัยว่ามีวิธีการรวมประเภทโพสต์ที่กำหนดเองเหล่านั้นไว้ในรายการเดียวในแบ็กเอนด์หรือไม่ เช่นถ้าคุณดูหน้าผู้ดูแลระบบแบ็กเอนด์ปกติที่มีรายการและคอลัมน์ของโพสต์หน้าดังกล่าวสามารถดึงโพสต์ประเภทอื่น ๆ 3 ประเภทเพื่อให้ง่ายต่อการเรียงลำดับ / ค้นหา

ฉันไม่สามารถรวม CPT เข้ากับหนึ่งพวกเขาจะต้องแยกออกจากหน้า 'ดู' หนึ่งหน้าในพื้นที่ผู้ดูแลระบบถ้าเป็นไปได้

มีความคิดเกี่ยวกับวิธีการทำเช่นนี้หรือไม่? หรือแม้กระทั่งที่จะเริ่มมอง / คิดวิธีการพัฒนานี้


1
คุณอาจลองใช้ 1 CPT จากนั้นสร้าง taxonomy แบบกำหนดเองโดยมี 2 คำแยกโพสต์ใน CPT เดียว จากนั้นคุณสามารถทำตรรกะบางอย่างที่ด้านบนของไฟล์เทมเพลตส่วนหน้าเพื่อส่งผู้เข้าชมไปยังเทมเพลตอื่นโดยยึดตามเงื่อนไข / ภาษี
Sy Holloway

คำตอบ:


2

เป็นเพียงจุดเริ่มต้นแน่นอนว่าปัญหาจะปรากฏขึ้นในระหว่างการพัฒนาต่อไป ตัวอย่างเช่นตอนนี้ฟังก์ชั่นการค้นหาจะหยุดลงตามที่คาดว่าจะเป็นสตริง (post_type) และได้รับอาร์เรย์

ในการแสดงประเภทโพสต์มากกว่าหนึ่งประเภทในหน้าจอโพสต์เราขอpre_get_postsและแก้ไขแบบสอบถาม ในการทดสอบนี้โพสต์หน้าและผลิตภัณฑ์จะปรากฏขึ้นพร้อมกันในหน้าจอโพสต์ ( http://example.com/wp-admin/edit.php)

add_action( 'pre_get_posts', 'join_cpt_list_wspe_113808' );

function join_cpt_list_wspe_113808( $query ) 
{
    // If not backend, bail out
    if( !is_admin() )
        return $query;

    // Detect current page and list of CPTs to be shown in Dashboard > Posts > Edit screen
    global $pagenow;
    $cpts = array( 'post', 'page', 'product' );

    if( 'edit.php' == $pagenow && ( get_query_var('post_type') && 'post' == get_query_var('post_type') ) )
        $query->set( 'post_type', $cpts );

    return $query;
}

รหัสผู้ช่วยที่จะแสดงคอลัมน์ที่มีโพสต์แต่ละประเภทโพสต์:

add_filter( 'manage_edit-post_columns', 'add_cpt_column_wspe_113808' );
foreach( array( 'post', 'page', 'product' ) as $cpt )
    add_action( "manage_{$cpt}_posts_custom_column", 'show_cpt_column_wspe_113808', 10, 2 );

function add_cpt_column_wspe_113808( $columns ) 
{
    $columns[ 'cpt' ] = 'Post Type';
    return $columns;
}

function show_cpt_column_wspe_113808( $column_name, $post_id ) 
{
    if ( 'cpt' != $column_name )
        return;
    echo get_post_type( $post_id );
}

0

ฉันจะแนะนำ Admin Menu Editor pro สำหรับสิ่งนี้ ฉันจะลิงค์ไปที่ด้านล่าง

น่าสนใจ ในโครงการหนึ่งฉันกำลังทำงานฉันมี CPT หลายชนิด (โพสต์แบบกำหนดเอง) ที่เกี่ยวข้องกัน ส่วนคือ 'ศูนย์ข้อมูล' และพวกเขาต้องการให้ข่าวประชาสัมพันธ์เอกสารสีขาวข้อความรับรอง ฯลฯ เพื่อให้อยู่ในศูนย์ข้อมูล ส่วนหน้าการสร้างสิ่งนี้เป็นเรื่องง่าย ในส่วนหลังเราต้องการให้มันเข้ากันอย่างมีเหตุผลเช่นกัน ประเภทโพสต์ที่กำหนดเองส่วนใหญ่ถูกตั้งค่าเป็น CPT เนื่องจากเนื้อหาเฉพาะ (ไฟล์เมตา) และความต้องการของรูปแบบ เรามีเหมือนกันเกือบ 20 CPT

ที่กล่าวว่าเราใช้ปลั๊กอินตัวแก้ไขผู้ดูแลระบบเพื่อลบศูนย์ข้อมูลที่เกี่ยวข้อง CPTs จากเมนูด้านหลังและจากนั้นสร้างเมนู 'ศูนย์ข้อมูล' ที่มีลิงก์ CPT ที่เกี่ยวข้องภายใน ในขณะที่พวกเขาดูเหมือนจะรวมกันพวกเขาไม่ได้

นี่คือลิงก์ปลั๊กอิน: http://adminmenueditor.com/ลองสาธิตด้วย


คุณสร้างลิงก์ "ศูนย์ข้อมูล" ได้อย่างไร
frnhr
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.