web-dev-qa-db-ja.com

すべてのカスタム投稿タイプのカスタム管理列

私のダッシュボードでカスタマイズされた列を表示するために私の「ビデオ」カスタム投稿タイプのために完全に働いている私は以下の機能を持っています。

カスタム投稿タイプを動的に作成することでプラグインの動作方法を決定しました。カスタム投稿タイプの正確な名前がわからなくなり、可能であればすべてのカスタム投稿タイプにこのフィルタを適用したいと思います。

    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' );

Get_post_typesのコーデックスページからこれら2つの例を調べてきましたが、post_types配列を自分の関数に実装する方法を理解することはできませんでした。

投稿タイプを取得するための呼び出しは、登録済みの投稿タイプを返します。

<?php $post_types=get_post_types(); ?>

登録されている全投稿タイプの一覧を出力する

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

すべてのカスタム投稿タイプと組み込み投稿タイプ(投稿とページ)をターゲットにしたい場合は、特定の投稿タイプ列をターゲットにするために使用されるmanage_posts_custom_columnフックの代わりにmanage_{post_type}_posts_custom_columnフックを使用する必要がありますしかし、それらがどのように機能するかに大きな違いがあります。

例:

add_action( 'manage_posts_custom_column', 'your_callback'); 

上記のフックを使用して、ロジックに適用されない場合は組み込みタイプのように、特定の投稿タイプを条件付きでチェックして除外することができますが、投稿がわからない場合はすべての投稿タイプをターゲットにする必要があります。型名は前もって。

1
userabuser