web-dev-qa-db-fra.com

Remplacement du titre dans la liste d'administration

Voici ma situation: j'essaie de filtrer le contenu de la colonne de titre dans mon tableau d'édition de type d'article personnalisé mais je ne parviens pas à le faire fonctionner.

Voici ce que j'ai essayé:

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

Je veux juste filtrer les tags <span> dans mon titre. Quelqu'un peut-il m'aider, s'il vous plaît?

8
Pipo

1. Modifier le titre du message dans la colonne de la liste de messages

J'ai mal compris ce que tu voulais - évidemment. Vous pouvez faire ça comme ça:

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

Utilisation du admin_head-$hook_suffix hook.


(Avertissement: garder ceci, parce que c'est lié et une bonne information)

2. Remplacez le titre de la colonne de la table

En outre, vous n'utilisez ni ne remplacez le titre de la table des colonnes. Ci-dessous quelques exemples de code sur la façon de le faire:

  1. Basé sur le manage_{$this->screen->id}_columns hook

    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. Basé sur le manage_{$post_type}_posts_columns hook

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

Enfin, le code suivant est pratique pour obtenir les informations dont vous avez besoin:

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 );
}
18
Nicolai

Je viens de faire quelque chose de similaire il y a quelques heures. Mon code n'est peut-être pas le meilleur, mais vous devez utiliser deux crochets pour y parvenir. Comme vous semblez utiliser un type de message personnalisé d'après ce que j'ai vu dans votre code, ces deux crochets seraient.

manage_post_type_posts_columns ()

manage_post_type_posts_custom_column ()

J'ai utilisé le point d'ancrage du filtre manage_post_type_posts_columns() pour créer une nouvelle colonne de titre. J'ai également supprimé le point d'ancrage de l'action, puis le point d'ancrage de l'action manage_post_type_posts_custom_column(), pour utiliser ma propre méthode afin de générer le nouveau contenu/titre de cette colonne.

J'espère que cela vous aidera, avez également ajouté votre code ...

// 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);
1
Matt Royal

Remplacer les colonnes

Voici un exemple qui remplace complètement les colonnes, plutôt que d’ajouter et de supprimer des colonnes spécifiques

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

Voir plus: entrez la description du lien ici

0
Super Model