管理者リストテーブルのタイトルを置き換える


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"> number 1 </ span>」で、最初の行は「This my title <span class = "sub-title"> number 2 </ span>」です。 「2行目など。私が達成しようとしていることはより明確ですか?
Pipo 2014

驚くばかり!!それがまさに私がやりたかったことです。どうもありがとう!
Pipo 2014

i試したソリューション1の1. Change post title in post list column値は変更です。どうすればラベルの名前も変更できますか。?
開発者

@開発者テーブルの列のタイトルですか?2番目に説明したように。
Nicolai 2017年

1
私は同じことをしようとしましたが、カスタムのTAXONOMYテーブルヘッダー(10以上なので短縮する必要があります)を使用しました。'labels'配列で管理列 'menu_name'の省略形を指定できますが、奇妙なことに、それはテーブルヘッドに影響しません。私はたくさん検索しましたが、この記事は分類学には何もありませんでした... SO:メソッド2.1 = Aを使用すると、それを行うことができます( 'taxonomy- {my_tax_name}'という列)、メソッド2.2 = Bのみprint_rが示すように、「title」と「date」、および自己挿入列を取得します。
user3445853

1

私は数時間前に同様のことを行ったばかりなので、私のコードは最高ではないかもしれませんが、これを実現するには2つのフックを使用する必要があります。あなたがコードで見たものからカスタム投稿タイプを使用しているように見えるので、これらの2つのフックはそうなります。

manage_post_type_posts_columns()

manage_post_type_posts_custom_column()

私が使用しているmanage_post_type_posts_columns()新しいタイトル列を作成し、古いし、その後設定を解除するためにフィルターフックをmanage_post_type_posts_custom_column()このコラムのための新たなコンテンツ/タイトルを生成するための私自身の方法を使用するために、アクションフックを。

これが役立つことを願って、あなたのコードも追加しました...

// 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 2014

@エティエンヌ私は怖いです。たぶん、他の誰かがこれを行う方法についてのアイデアを私たちに与えることができ、また知りたいと思います:-)
マットロイヤル

新しいコラムを作成する必要はありません。@エティエンヌ
ニコライ

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.