web-dev-qa-db-fra.com

Colonnes d'administration personnalisées pour TOUS les types de publication personnalisés

J'ai la fonction suivante qui fonctionne parfaitement pour mon type d'article personnalisé "vidéo" pour afficher des colonnes personnalisées dans le tableau de bord.

J'ai décidé que le fonctionnement de mon plug-in consistait à créer des types de publication personnalisés de manière dynamique. Je ne connais donc plus le nom exact du type de publication personnalisé. J'aimerais appliquer ce filtre à tous les types de publication personnalisés, si possible.

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

J'ai examiné ces deux exemples de la page de codex pour get_post_types mais je n'ai pas été en mesure de comprendre comment implémenter le tableau post_types dans ma fonction.

L'appel à obtenir des types de publication renvoie les types de publication enregistrés.

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

Produire une liste de tous les types de publication enregistrés

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

Si vous souhaitez cibler tous les types de publication personnalisés ainsi que les types de publication intégrés (publications et pages), vous devez utiliser le crochet manage_posts_custom_column au lieu du crochet manage_{post_type}_posts_custom_column utilisé pour cibler des colonnes de type de publication spécifiques, différence subtile dans la convention de dénomination. mais grande différence dans la façon dont ils fonctionnent.

Exemple:

add_action( 'manage_posts_custom_column', 'your_callback'); 

Avec le hook ci-dessus, vous pouvez toujours vérifier et exclure de manière conditionnelle certains types d'article, comme les types intégrés s'ils ne s'appliquent pas à votre logique, mais vous devez cibler tous les types d'article si vous ne connaissez pas l'article. tapez le nom à l'avance.

1
userabuser