如何在自定义帖子列表表格上显示自定义元字段值而不是标题?

时间:2014-05-05 07:42:28

标签: wordpress-plugin wordpress-theming wordpress custom-post-type

我创建了一个自定义帖子类型“cinfo”,并从编辑页面中删除了标题和编辑器。借助此代码。还显示了一些与我的插件相关的自定义元字段。

function remove_box(){
    remove_post_type_support('cinfo', 'title');
    remove_post_type_support('cinfo', 'editor');
}
add_action("admin_init", "remove_box");

它看起来像这样。

Custom post type edit page

现在当我看到列表页面时,我仍然看到标题下面有编辑,查看和删除按钮。我不想要,因为编辑页面中不存在标题字段因此它在列表页面中看起来有点不相关。而不是我试图显示自定义元字段“电子邮件”,但我只能更改列的标题。看起来像这样。

Cards info listing page

我刚做了一些研究,发现了一个动作和过滤器,但它们似乎对我没什么帮助。仍然是为了更好地看待问题。我也尝试使用插件Post List View Count,但它也没有实现我的目的。我希望你明白我基本上想做什么。感谢您抽出宝贵时间阅读我的问题。

add_filter('manage_cinfo_posts_columns', 'bs_cinfo_table_head');
function bs_cinfo_table_head( $defaults ) {
    $defaults['title']  = 'Email';
    return $defaults;
}


add_action( 'manage_cinfo_posts_custom_column', 'card_cinfo_table_content', 10, 2 );
function card_cinfo_table_content( $column_name, $post_id ) {
    if ($column_name == 'title') {
        echo "its working";
    }
}

1 个答案:

答案 0 :(得分:0)

行动manage_cinfo_posts_custom_column永远不会成真。最好删除manage_cinfo_posts_columns上的默认值,并在其他过滤器中执行常规自定义内容。

我尝试用快速课程在我的设置中一起测试:

class SO23467344
{
    private $cpt = 'portfolio';
    private $custom_field = 'video';

    public function __construct()
    {
        add_filter( "manage_edit-{$this->cpt}_columns", array( $this, 'column_register' ), 20, 1 );
        add_action( "manage_{$this->cpt}_posts_custom_column", array( $this, 'column_display' ), 20, 2 );
        add_action( "admin_init", array( $this, "remove_box" ) );
    }
    function column_register( $columns ) 
    {
        $columns['my-col'] = 'My column';
        # Remove default columns
        unset( $columns['title'], $columns['categories'], $columns['comments'], $columns['date'] );         
        return $columns;
    }

    function column_display( $column_name, $post_id ) 
    {
        if ( 'my-col' != $column_name )
            return;

        if ( $field = get_post_meta( $post_id, $this->custom_field, true ) )
            echo '<br/><strong style="color:#0f0;font-size:4em"> • </strong>';
    }

    function remove_box(){
        remove_post_type_support( $this->cpt, 'title' );
        remove_post_type_support( $this->cpt, 'editor' );
    }
}
new SO23467344;