私は現在@ kovsheninのチュートリアル をここ で私の投稿タイプのadminカラムにサムネイル(注目の画像)を追加するのに使っています。
おすすめの画像がない場合、最初に投稿に添付された最初の画像を取得することが(そしてどうやって:))可能でしょうか? (注目の画像がない場合は、おそらくローカルホストの画像を返す)
これは私が現在持っているコードです:
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;
}
}
編集:
次のコメントで述べるように、物事を把握するのにはしばらく時間がかかりました:)。最後に、そして@ ifdionの提案で、私は次の結果を思いつきました:
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__ ) . '">';
}
}
もう一つの編集
これが投稿に添付された最後の画像を取得するかどうかは完全にはわかりませんが、とにかく、このコードはそれを取得します:
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__ ) . '">';
}
}