将元字段添加到自定义帖子类型的结果列表

时间:2012-11-01 作者:dcolumbus

我已经为“Books”创建了一个自定义帖子类型。。。我还为每本书添加了几个元字段(自定义字段),我希望能够在结果表中显示其中的一些字段。

有没有办法钩住数据表并添加自定义字段?

enter image description here

1 个回复
最合适的回答,由SO网友:chrisguitarguy 整理而成

有几个过滤器。我写了一个tutorial about adding custom columns, 这就是下面代码的来源。示例是在显示页面模板的“页面”帖子类型中添加一列。

你可以加入load-edit.php 和使用get_current_screen 获取正确的屏幕ID/过滤器。从那里你可以manage_{$screen->id}_columnsmanage_{$screen->post_type}_posts_custom_column

<?php
add_action(\'load-edit.php\', \'pmg_ltt_load\');
function pmg_ltt_load()
{
    $screen = get_current_screen();

    if(!isset($screen->post_type) || \'page\' != $screen->post_type)
        return;

    add_filter(
        "manage_{$screen->id}_columns",
        \'pmg_ltt_add_columns\'
    );

    add_action(
        "manage_{$screen->post_type}_posts_custom_column",
        \'pmg_ltt_column_cb\',
        10,
        2
    );
}
manage_{$screen->id}_columns 是实际添加列和manage_{$screen->post_type}_posts_custom_column 是您的回拨。

添加列:

<?php
function pmg_ltt_add_columns($cols)
{
    // pay attention to the key, you\'ll use it later.
    $cols[\'template\'] = __(\'Page Template\', \'pmg-list-table\');
    return $cols;
}
回调函数将得到两个参数:列键(上面使用的!)和帖子ID。检查以确保它是您想要的列,然后使用get_post_meta (或其他适合情况的东西)获取要显示的内容。

<?php
function pmg_ltt_column_cb($col, $post_id)
{
    static $templates;

    if(\'template\' == $col)
    {
        if(empty($templates))
            $templates = array_flip(get_page_templates());

        $tmp = get_post_meta($post_id, \'_wp_page_template\', true);
        if($tmp && isset($templates[$tmp]))
        {
            echo esc_html($templates[$tmp]);
        }
        else
        {
            esc_html_e(\'Default Template\', \'pmg-list-table\');
        }
    }
}

结束

相关推荐

删除Yoast SEO帖子Metabox

Yoasts SEO插件在后期编辑屏幕中添加了一个元框。我正在尝试为非编辑或更高级别的用户删除此项。我试着把remove_meta_box 在admin\\u init上调用,尝试删除$wpseo\\u metabox上的操作,但没有效果。如何在不需要用户干预的情况下删除此元数据库(用户永远不会知道该元数据库存在,因此单击屏幕选项不是一个选项)