Reemplazar el título en la tabla de la lista de administradores

10

Aquí está mi situación: estoy tratando de filtrar el contenido de la columna de título en mi tabla de edición de tipo de publicación personalizada, pero no puedo hacer que funcione.

Esto es lo que he intentado:

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

Solo quiero filtrar las <span>etiquetas en mi título. ¿Podría alguien ayudarme por favor?

Pipo
fuente

Respuestas:

19

1. Cambiar el título de la publicación en la columna de la lista de publicaciones

No entendí lo que querías, obviamente. Puedes hacer eso así:

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

Haciendo uso del admin_head-$hook_suffixgancho.


(Descargo de responsabilidad: mantener esto, porque está relacionado y es buena información)

2. Reemplace el título de la columna de la tabla

Además, no está utilizando ni sobrescribiendo el título de la tabla de columnas. Debajo de un código ejemplar sobre cómo hacerlo:

  1. Basado en el manage_{$this->screen->id}_columnsgancho

    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. Basado en el manage_{$post_type}_posts_columnsgancho

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

Por último, pero no menos importante, el siguiente código es útil para obtener la información que necesita:

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
fuente
Lo siento, olvidé la línea de retorno en mi código ... Gracias por su respuesta, pero esto no es lo que estoy tratando de lograr. No quiero cambiar el nombre de la columna para el título, quiero cambiar el contenido que se devuelve en esta columna para cada publicación. En este momento tengo: "Este es mi título <span class =" sub-title "> number 1 </span>" para la primera fila y luego "This my title <span class =" sub-title "> number 2 </span> "para la segunda fila, etc. ¿Está más claro lo que estoy tratando de lograr?
Pipo
¡¡Increíble!! Eso es exactamente lo que quería hacer. ¡Muchas gracias!
Pipo
Intenté la Solución 1 Los 1. Change post title in post list columnvalores son cambios. ¿Cómo puedo cambiar el nombre de la etiqueta también? ?
Desarrollador
@ Desarrollador ¿Te refieres al título de la columna de la tabla? Como se describe en el segundo.
Nicolai
1
Estaba tratando de hacer lo mismo pero para un encabezado de tabla TAXONOMÍA personalizado (que necesito acortar, ya que tengo 10+). Puede dar una abreviatura para la columna de administrador 'menu_name' en su matriz 'etiquetas', pero extrañamente eso no afecta el encabezado de la tabla. Busqué mucho y este artículo seguía apareciendo, nada de taxonomías ... SO: Con su Método 2.1 = A, se puede hacer (columnas llamadas 'taxonomía- {my_tax_name}'), con su Método 2.2 = B usted solo obtener 'título' y 'fecha' y columnas auto-insertadas como revela print_r.
user3445853
1

Acabo de hacer algo similar hace unas horas, por lo que mi código podría no ser el mejor, pero debes usar 2 ganchos para lograrlo. Como parece que está utilizando un tipo de publicación personalizado de lo que vi en su código, estos dos ganchos serían.

manage_post_type_posts_columns ()

manage_post_type_posts_custom_column ()

He usado el manage_post_type_posts_columns()gancho de filtro para crear una nueva columna de Título y desarmar la anterior y luego el manage_post_type_posts_custom_column()gancho de acción para usar mi propio método para generar el nuevo contenido / título para esta columna.

Espero que esto ayude, también he agregado su código ...

// 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
fuente
Gracias Matt ¿Sabes si hay una manera de filtrar la columna original de "título" antes de que se devuelva el contenido? Realmente no quiero crear una nueva columna de título ya que la original viene con muchas funciones (edición, edición rápida, papelera, etc.).
Pipo
@ Etienne, me temo que no. Quizás alguien más pueda darnos una idea sobre cómo hacer esto, también quisiera saber :-)
Matt Royal
Vea mi respuesta revisada, no es necesario crear una nueva columna. @Etienne
Nicolai
0

Reemplazar columnas

Aquí hay un ejemplo que reemplaza completamente las columnas, en lugar de agregar y eliminar las específicas.

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

Ver más:manage_$post_type_posts_columns

Súper modelo
fuente