替换管理员列表中的标题


10

这是我的情况:我正在尝试过滤自​​定义帖子类型编辑表中title列的内容,但无法正常工作。

这是我尝试过的:

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>标题中的标签。有人可以帮我吗?

Answers:


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

我尝试了解决方案1:1. Change post title in post list column值是变化的,我也该如何重命名标签。?
开发人员

@Developer您的意思是表列标题?如第二节所述。
Nicolai

1
我试图做同样的事情,但是对于一个自定义的TAXONOMY表头(需要缩短,因为我有10个以上)。您可以在“标签”数组中为管理列“ menu_name”提供简写,但奇怪的是,这并不影响表头。我搜索了很多内容,但本文却不断出现,没有关于分类法的信息...因此:使用方法2.1 = A,可以完成操作(列名为“ taxonomy- {my_tax_name}”的列),使用方法2.2 = B,仅如print_r所示,获取“ title”和“ date”以及自动插入的列。
user3445853

1

几个小时前我刚刚做过类似的事情,所以我的代码可能不是最好的,但是您需要使用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

@艾蒂安,恐怕不是。也许其他人可以给我们一个有关如何执行此操作的想法,也想知道:-)
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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.