Zastąpienie tytułu w tabeli listy administratorów

10

Oto moja sytuacja: staram się filtrować zawartość kolumny tytułowej w mojej tabeli edycji niestandardowego typu postu, ale nie mogę jej uruchomić.

Oto, co próbowałem:

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;  
}

Chcę tylko odfiltrować <span>tagi w moim tytule. Czy ktoś mógłby mi pomóc proszę?

Pipo
źródło

Odpowiedzi:

19

1. Zmień tytuł wpisu w kolumnie listy wpisów

Nie zrozumiałem, czego chciałeś - oczywiście. Możesz to zrobić w następujący sposób:

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';
}

Korzystanie z admin_head-$hook_suffixhaka.


(Oświadczenie: Zachowanie tego, ponieważ jest to powiązane i dobre informacje)

2. Zastąp tytuł kolumny tabeli

Poza tym nie używasz i nie zastępujesz tytułu tabeli kolumn. Poniżej przykładowy kod, jak to zrobić:

  1. Na podstawie manage_{$this->screen->id}_columnshaka

    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. Na podstawie manage_{$post_type}_posts_columnshaka

    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;
    }

Wreszcie przydatny jest następujący kod, aby uzyskać potrzebne informacje:

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 );
}
Nicolai
źródło
Przepraszam, zapomniałem wiersza zwrotnego w moim kodzie ... Dziękuję za odpowiedź, ale nie tego próbuję osiągnąć. Nie chcę zmieniać nazwy kolumny dla tytułu, chcę zmienić treść zwracaną w tej kolumnie dla każdego postu. W tej chwili mam: „To mój tytuł <span class =" sub-title "> numer 1 </span>” dla pierwszego wiersza, a następnie „To mój tytuł <span class =" sub-title "> numer 2 </span> „w drugim rzędzie itp. Czy jest bardziej jasne, co próbuję osiągnąć?
Pipo
Niesamowite!! Właśnie to chciałem zrobić. Wielkie dzięki!
Pipo
i Wypróbowane rozwiązanie 1 1. Change post title in post list columnWartości to zmiany, jak mogę również zmienić nazwę etykiety. ?
Deweloper
@Developer Masz na myśli tytuł kolumny tabeli? Jak opisano w części drugiej.
Nicolai
1
Próbowałem zrobić to samo, ale dla niestandardowego nagłówka tabeli TAXONOMY (który trzeba skrócić, ponieważ mam 10+). Możesz podać skrót dla kolumny administratora „nazwa_menu” w tablicy „etykiet”, ale, co dziwne, nie wpływa to na nagłówek tabeli. Dużo szukałem i ten artykuł ciągle się pojawiał, nic nie zawierało taksonomii ... SO: Z Twoją Metodą 2.1 = A można to zrobić (kolumny o nazwie „taksonomia- {moja_nazwa_nazwa}”), z Metodą 2.2 = B tylko ty pobierz „tytuł” ​​i „datę” oraz wstawione kolumny, jak ujawnia print_r.
user3445853,
1

Właśnie zrobiłem coś podobnego kilka godzin temu, więc mój kod może nie być najlepszy, ale musisz użyć 2 haczyków, aby to osiągnąć. Ponieważ wydaje się, że używasz niestandardowego typu posta z tego, co widziałem w twoim kodzie, te dwa zaczepy byłyby.

manage_post_type_posts_columns ()

manage_post_type_posts_custom_column ()

Użyłem manage_post_type_posts_columns()haka do filtrowania, aby utworzyć nową kolumnę Tytuł, a następnie rozbroiłem starą, a następnie manage_post_type_posts_custom_column()hak akcji, aby użyć własnej metody do generowania nowej zawartości / tytułu dla tej kolumny.

Mam nadzieję, że to pomoże, dodałem również swój kod ...

// 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);
Matt Royal
źródło
Dzięki Matt. Czy wiesz, czy istnieje sposób na odfiltrowanie oryginalnej kolumny „tytuł” ​​przed zwróceniem treści? Naprawdę nie chcę tworzyć nowej kolumny tytułowej, ponieważ oryginalna ma wiele funkcji (edycja, szybka edycja, kosz itp.).
Pipo
@Etienne Obawiam się, że nie. Może ktoś inny może dać nam pomysł, jak to zrobić, chciałby również wiedzieć :-)
Matt Royal
Zobacz moją poprawioną odpowiedź, nie trzeba tworzyć nowej kolumny. @Etienne
Nicolai
0

Zamień kolumny

Oto przykład, który całkowicie zastępuje kolumny, zamiast dodawać i usuwać określone

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');

Zobacz więcej:manage_$post_type_posts_columns

Super Model
źródło