1

我在自定义帖子类型中添加了一个新列以显示帖子的 ID。这适用于 WordPress 核心帖子类型,但不适用于我的自定义帖子类型。我尝试使用 manage_{post_type}_custom_column 钩子并将其应用于所有帖子,但都不起作用。

它确实添加了自定义列标题,但是在查看自定义帖子类型时我根本无法用任何东西填充它们。

这是查看自定义帖子类型的样子,也是查看常规核心帖子时的样子。

//  Add post ID column to use an order ID in all posts view.

add_filter('manage_posts_columns', 'oms_order_id_header');
add_action('manage_posts_custom_column', 'oms_order_id_column', 10, 2);

function oms_order_id_header($columns) {
    //Remove title column
    //unset($columns['title']);
    //Add new columns
    $columns['order_id_header'] = 'Order ID';
    $columns['customer_header'] = 'Customer';
    $columns['author']          = 'Owner';    

    return $columns;
}

function oms_order_id_column( $column, $post_id ) {
        if ($column == 'order_id_header') {
            echo $post_id;
        }
}
4

2 回答 2

3

事实证明,将帖子类型设置为分层是一个问题。分层帖子类型需要通过与此处使用的不同的操作挂钩来定位。

而不是manage_posts_custom_column,分层帖子类型需要使用manage_pages_custom_column

于 2017-08-28T15:55:13.347 回答
0

我刚刚尝试了你的代码,它在我的 WordPress 安装中似乎在两种情况下都能完美运行:自定义帖子和帖子。

也许您的错误正在发生,因为您的帖子是草稿?我不这么认为,但也许。(我也在我的安装草稿中尝试了您的代码,并且它有效)。这是屏幕截图:截屏

尝试打印“hello world”而不是 $post_id 以检查它是否在所有情况下都打印。

于 2017-08-27T01:24:25.033 回答