所有自定义帖子类型的自定义管理员栏

时间:2013-06-18 作者:Sean

我有以下功能,它非常适合我的“视频”自定义帖子类型,可以在仪表板中显示自定义列。

我已经决定我的插件的工作方式是动态创建自定义帖子类型,这样我就不再知道自定义帖子类型的确切名称,如果可能的话,我想将此过滤器应用于所有自定义帖子类型。

    function populate_columns( $column ) {  // populate the custom columns
    if ( \'thumbnail\' == $column ) {
        $thumb_array = array(\'post_type\' => \'video\');
    $thumbnails = get_posts($thumb_array);
            if ( has_post_thumbnail($thumbnail->ID)) {
              echo \'<a href="\' . get_edit_post_link( $thumbnail->ID ) . \'" title="\' . esc_attr( $thumbnail->post_title ) . \'">\';  // link thumbnail to edit page
              echo get_the_post_thumbnail($thumbnail->ID, array(100,100));
              echo \'</a>\';
              }
    }
    elseif ( \'duration\' == $column ) {
        $duration_array = array (\'post_type\'=> \'video\');
        $duration = get_post_meta( get_the_ID(), \'_my_meta_duration\', true );
        if ($duration != \'\') {
            echo $duration . \' mins\';
    }

    }
}

add_action( \'manage_video_posts_custom_column\', \'populate_columns\' );
我已经在codex页面上查看了这两个get\\u post\\u类型的示例,但我还没有弄清楚如何将post\\u类型数组实现到我的函数中。

调用get post type返回注册的post类型。

<?php $post_types=get_post_types(); ?>
输出所有注册帖子类型的列表

<?php 
$post_types=get_post_types(\'\',\'names\'); 
foreach ($post_types as $post_type ) {
  echo \'<p>\'. $post_type. \'</p>\';
}
?>

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

如果要针对所有自定义帖子类型以及内置帖子类型(帖子和页面),则需要使用manage_posts_custom_column 钩子而不是manage_{post_type}_posts_custom_column 钩子,用于针对特定的post类型列,命名惯例上有细微的差别,但操作方式上有很大的差别。

示例:

add_action( \'manage_posts_custom_column\', \'your_callback\'); 
使用上述挂钩,您仍然可以有条件地检查和排除某些post类型,如内置类型(如果它们不适用于您的逻辑),但如果您事先不知道post类型名称,则需要针对所有post类型。

结束

相关推荐

Unable to access WP admin

我无法通过以下方式访问管理员:http://example.com/admin 或http://example.com/wp-admin Fatal error: Class \'ObjectModel\' not found in /home3/xxxxxx/public_html/example.com/wp-includes/class.wp-dependencies.php on line 28 我的网站上有一个特洛伊木马,它将.htaccess 重定向内容。更糟糕的是