การเปลี่ยนชื่อในตารางรายการผู้ดูแลระบบ


10

นี่คือสถานการณ์ของฉัน: ฉันกำลังพยายามกรองเนื้อหาของคอลัมน์ชื่อเรื่องในตารางแก้ไขประเภทโพสต์ที่กำหนดเองของฉัน แต่ฉันไม่สามารถทำงานได้

นี่คือสิ่งที่ฉันได้ลอง:

add_filter('manage_edit-mycpt_columns', 'replace_title_products');

function replace_title_products() {
    $oldtitle = get_the_title();
    $newtitle = str_replace(array("<span class='sub-title'>", "</span>"), array("", ""),$oldtitle);
    $title = esc_attr($newtitle);
    return $title;  
}

ฉันต้องการกรอง<span>แท็กในชื่อของฉัน ใครช่วยฉันหน่อยได้ไหม

คำตอบ:


19

1. เปลี่ยนชื่อโพสต์ในคอลัมน์รายการโพสต์

ฉันเข้าใจผิดในสิ่งที่คุณต้องการ - ชัดเจน คุณสามารถทำสิ่งนี้ได้:

add_action(
    'admin_head-edit.php',
    'wpse152971_edit_post_change_title_in_list'
);
function wpse152971_edit_post_change_title_in_list() {
    add_filter(
        'the_title',
        'wpse152971_construct_new_title',
        100,
        2
    );
}

function wpse152971_construct_new_title( $title, $id ) {
    //print_r( $title );
    //print_r( $id );
    return 'new';
}

การใช้ประโยชน์จากadmin_head-$hook_suffixเบ็ด


(ข้อจำกัดความรับผิดชอบ: รักษาสิ่งนี้ไว้เพราะมันเกี่ยวข้องและเป็นข้อมูลที่ดี

2. แทนที่ชื่อคอลัมน์ตาราง

นอกจากนี้คุณไม่ได้ใช้และเขียนทับชื่อตารางคอลัมน์ ด้านล่างมีโค้ดที่เป็นแบบอย่างเกี่ยวกับวิธีการทำ:

  1. ขึ้นอยู่กับmanage_{$this->screen->id}_columnsตะขอ

    add_filter(
        'manage_edit-post_columns',
        'wpse152971_replace_column_title_method_a'
    );
    function wpse152971_replace_column_title_method_a( $columns ) {  
        //print_r($columns);  
        $columns[ 'title' ] = 'new title';  
        return $columns;  
    }  
  2. ขึ้นอยู่กับmanage_{$post_type}_posts_columnsตะขอ

    add_filter(
        'manage_post_posts_columns',
        'wpse152971_replace_column_title_method_b'
    );
    function wpse152971_replace_column_title_method_b( $posts_columns ) {
        //print_r($posts_columns);
        $posts_columns[ 'title' ] = 'new title';
        return $posts_columns;
    }

สุดท้าย แต่อย่างน้อยรหัสต่อไปนี้มีประโยชน์ในการรับข้อมูลที่คุณต้องการ:

add_action( 'admin_head', 'wpse152619_dbg_dev' );
function wpse152619_dbg_dev() {
    global $pagenow;
    print_r( $pagenow );
    echo '<br>';
    print_r( $_GET[ 'taxonomy' ] );
    echo '<br>';
    $current_screen = get_current_screen();
    print_r( $current_screen->id );
}

ขออภัยฉันลืมรหัสส่งคืนในโค้ดของฉัน ... ขอบคุณสำหรับคำตอบของคุณ แต่นี่ไม่ใช่สิ่งที่ฉันพยายามจะทำ ฉันไม่ต้องการเปลี่ยนชื่อคอลัมน์สำหรับชื่อเรื่องฉันต้องการเปลี่ยนเนื้อหาที่ส่งคืนในคอลัมน์นี้สำหรับแต่ละโพสต์ ตอนนี้ฉันมี: "นี่ชื่อของฉัน <span class =" sub-title "> หมายเลข 1 </span>" สำหรับแถวแรกแล้ว "นี่ชื่อของฉัน <span class =" sub-title "> หมายเลข 2 </span> "สำหรับแถวที่สอง ฯลฯ มันชัดเจนกว่าสิ่งที่ฉันพยายามที่จะบรรลุหรือไม่?
Pipo

น่ากลัว !! นั่นคือสิ่งที่ฉันต้องการจะทำ ขอบคุณมาก!
Pipo

i Tried Solution 1 1. Change post title in post list columnค่าคือการเปลี่ยนแปลงฉันจะเปลี่ยนชื่อฉลากได้อย่างไร ?
นักพัฒนา

@Developer คุณหมายถึงชื่อคอลัมน์ของตารางหรือไม่ ชอบอธิบายภายใต้ที่สอง
Nicolai

1
ฉันพยายามทำเช่นเดียวกัน แต่สำหรับส่วนหัวตาราง TAXONOMY ที่กำหนดเอง (ซึ่งต้องสั้นลงเนื่องจากฉันมี 10+) คุณสามารถกำหนดชวเลขสำหรับคอลัมน์ผู้ดูแลระบบ 'menu_name' ในอาร์เรย์ 'ป้ายกำกับ' แต่แปลกที่ไม่มีผลต่อส่วนหัวของตาราง ฉันค้นหาบทความจำนวนมากและบทความนี้ยังคงจัดขึ้นไม่มีอะไรสำหรับ taxonomies ... ดังนั้น: ด้วยวิธีการของคุณ 2.1 = A สามารถทำได้ (คอลัมน์ชื่อ 'taxonomy- {my_tax_name}') ด้วยวิธีการของคุณ 2.2 = B คุณเท่านั้น รับ 'ชื่อ' และ 'วันที่' และคอลัมน์ที่แทรกตัวเองเมื่อ print_r แสดง
user3445853

1

ฉันเพิ่งทำสิ่งที่คล้ายกันไม่กี่ชั่วโมงที่ผ่านมาดังนั้นรหัสของฉันอาจไม่ดีที่สุด แต่คุณต้องใช้ 2 hooks เพื่อให้ได้สิ่งนี้ ในขณะที่คุณใช้ประเภทโพสต์ที่กำหนดเองจากสิ่งที่ฉันเห็นในรหัสของคุณตะขอทั้งสองนี้จะเป็น

manage_post_type_posts_columns ()

manage_post_type_posts_custom_column ()

ฉันใช้manage_post_type_posts_columns()ตัวกรอง hook เพื่อสร้างคอลัมน์ชื่อเรื่องใหม่และยกเลิกการตั้งค่าคอลัมน์เก่าและจากนั้นmanage_post_type_posts_custom_column()hook การดำเนินการเพื่อใช้วิธีการของตัวเองในการสร้างเนื้อหา / ชื่อเรื่องใหม่สำหรับคอลัมน์นี้

หวังว่าจะช่วยได้เพิ่มรหัสของคุณในเช่นกัน ...

// Replace your Title Column with the Existing one //
function replace_title_column($columns) {

    $new = array();

    foreach($columns as $key => $title) {
        if ($key=='title') 
        $new['new-title'] = 'New Title'; // Our New Colomn Name
        $new[$key] = $title;
    }

    unset($new['title']); 
    return $new;
}

// Replace the title with your custom title
function replace_title_products($column_name, $post_ID) {
    if ($column_name == 'new-title') {
        $oldtitle = get_the_title();
        $newtitle = str_replace(array("<span class='sub-title'>", "</span>"), array("", ""),$oldtitle);
        $title = esc_attr($newtitle); 
        echo $title; 
    }
}

add_filter('manage_mycpt_columns', 'replace_title_column');
add_action('manage_mycpt_custom_column', 'replace_title_products', 10, 2);

ขอบคุณแมตต์ คุณรู้หรือไม่ว่ามีวิธีการเพียงแค่กรองคอลัมน์ "ชื่อ" ต้นฉบับก่อนที่เนื้อหาจะได้รับคืน? ฉันไม่ต้องการสร้างคอลัมน์ชื่อเรื่องใหม่เนื่องจากต้นฉบับมีฟังก์ชั่นมากมาย (แก้ไข, แก้ไขอย่างรวดเร็ว, ถังขยะ ฯลฯ )
Pipo

@ เทียนน์ฉันไม่กลัว บางทีคนอื่นอาจให้ความคิดกับเราเกี่ยวกับวิธีการทำสิ่งนี้และต้องการทราบ :-)
Matt Royal

ดูคำตอบที่แก้ไขแล้วของฉันไม่จำเป็นต้องสร้างคอลัมน์ใหม่ @Etienne
Nicolai

0

แทนที่คอลัมน์

นี่คือตัวอย่างที่แทนที่คอลัมน์อย่างสมบูรณ์แทนที่จะเพิ่มและลบคอลัมน์ที่ระบุ

function set_book_columns($columns) {
    return array(
        'cb' => '<input type="checkbox" />',
        'title' => __('Title'),
        'comments' => '<span class="vers comment-grey-bubble" title="' . esc_attr__( 'Comments' ) . '"><span class="screen-reader-text">' . __( 'Comments' ) . '</span></span>',
        'date' => __('Date'),
        'publisher' => __('Publisher'),
        'book_author' =>__( 'Book Author')
    );
}
add_filter('manage_book_posts_columns' , 'set_book_columns');

ดูเพิ่มเติม:manage_$post_type_posts_columns

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