J'utilise actuellement le tutoriel de @ kovshenin ici pour ajouter une vignette (une image sélectionnée) à mes colonnes admin de type publication.
Serait-il possible (et comment :)) de récupérer d'abord la première image jointe à un message, si aucune image sélectionnée n'est disponible? (et peut-être retourner une image hébergée locale si aucune image sélectionnée n'est également disponible)
C'est le code que j'ai actuellement:
add_action( 'after_setup_theme', 'cor_after_setup_theme' );
function cor_after_setup_theme() {
add_image_size( 'edit-screen-thumbnail', 48, 48, true );
}
add_filter( 'manage_edit-product_columns', 'cor_add_product_column', 10, 1 );
function cor_add_product_column( $column ) {
$column_thumbnail = array(
'thumbnail' => ''
);
$column = array_slice( $column, 0, 1, true ) + $column_thumbnail + array_slice( $column, 1, NULL, true );
return $column;
}
add_action( 'manage_posts_custom_column', 'cor_manage_product_column', 10, 1 );
function cor_manage_product_column( $column ) {
global $post;
switch ( $column ) {
case 'thumbnail':
echo get_the_post_thumbnail( $post->ID, 'edit-screen-thumbnail' );
break;
}
}
Modifier:
Comme mentionné dans les prochains commentaires, il a fallu un certain temps pour comprendre :). À la fin, et avec les suggestions de @ifdion, je suis arrivé au résultat suivant:
add_action( 'after_setup_theme', 'cor_after_setup_theme' );
function cor_after_setup_theme() {
add_image_size( 'edit-screen-thumbnail', 48, 48, true );
}
add_filter( 'manage_edit-product_columns', 'cor_add_product_column', 10, 1 );
function cor_add_product_column( $column ) {
$column_thumbnail = array(
'thumbnail' => ''
);
$column = array_slice( $column, 0, 1, true ) + $column_thumbnail + array_slice( $column, 1, NULL, true );
return $column;
}
add_action( 'manage_posts_custom_column', 'cor_manage_product_column', 10, 1 );
function cor_manage_product_column( $column ) {
global $post;
$args = array(
'numberposts' => 1,
'post_mime_type' => 'image',
'post_parent' => $post->ID,
'post_type' => 'attachment',
);
$attachments = get_children( $args );
if ( has_post_thumbnail() ) {
echo get_the_post_thumbnail( $post->ID, 'edit-screen-thumbnail' );
} elseif ( $attachments ) {
foreach ( $attachments as $attachment ) {
$image_attributes = wp_get_attachment_image_src( $attachment->ID, 'edit-screen-thumbnail' );
echo '<img src="' . $image_attributes[0] . '">';
}
} else {
echo '<img src="' . plugins_url( '/img/edit-screen-thumbnail.png', __FILE__ ) . '">';
}
}
Une autre édition
Pas tout à fait sûr que cela saisisse la dernière image attachée à un message, mais de toute façon, ce code l'obtiendra:
add_action( 'after_setup_theme', 'cor_after_setup_theme' );
function cor_after_setup_theme() {
add_image_size( 'edit-screen-thumbnail', 48, 48, true );
}
add_filter( 'manage_edit-product_columns', 'cor_add_product_column', 10, 1 );
function cor_add_product_column( $column ) {
$column_thumbnail = array(
'thumbnail' => ''
);
$column = array_slice( $column, 0, 1, true ) + $column_thumbnail + array_slice( $column, 1, NULL, true );
return $column;
}
add_action( 'manage_posts_custom_column', 'cor_manage_product_column', 10, 1 );
function cor_manage_product_column( $column ) {
global $post;
$args = array(
'numberposts' => 1,
'post_mime_type' => 'image',
'post_parent' => $post->ID,
'post_type' => 'attachment',
'post_status' => null,
);
$attachments = get_posts( $args );
if ( has_post_thumbnail() ) {
echo get_the_post_thumbnail( $post->ID, 'edit-screen-thumbnail' );
} elseif ( $attachments ) {
foreach ( $attachments as $attachment ) {
echo wp_get_attachment_image( $attachment->ID, 'edit-screen-thumbnail' );
}
} else {
echo '<img src="' . plugins_url( '/img/edit-screen-thumbnail.png', __FILE__ ) . '">';
}
}
Oui c'est possible. Je crois que c'est mieux si vous le mettez dans une déclaration conditionnelle
<img>
dans le contenu de la publication ( detail );J'espère que cette aide