3

こんにちはstackoverflowの友達!

うまくいけば、ここの誰かがこれで私を助けることができます!私は運が悪かったのでインターネット中を見てきました:(

私がやりたいのは、どういうわけか、WP管理者内の投稿に添付された画像を表示することです。たとえば、投稿の注目画像が示すのと同じ方法です。私が見つけたのは、管理列に投稿の添付ファイルの数を表示する方法だけでしたが、私が見たいのは、投稿管理ページの各投稿内のすべての添付画像のサムネイルです。今のところ、どの投稿に添付ファイルがあるのか​​さえわからないので、これは非常に役立つと思います。

プラグインを使わずにこれを実現したいと思います。

私は運がないオンラインで何日も探しました。どんな助けでも大歓迎です。

よろしくお願いします!

4

2 に答える 2

5

解決策は、メタボックスを作成し、そこにサムネイルを配置することです。これには、add_meta_box()関数とwp_get_thumb_attachment_url()が必要です。また、特定の投稿の添付画像をすべて見つける必要があります。これは、ここでの回答を使用して行います。

これらすべてをまとめて、匿名関数を使用できるようにPHPバージョン> = 5.3と仮定すると、次のようになります。

add_action( 'add_meta_boxes', function() {
add_meta_box( 'att_thumb_display', 'Attachmed images', function( $post ) {
    $args = array(
        'post_type' => 'attachment',
        'post_mime_type' => 'image',
        'post_parent' => $post->ID
    );

    echo '<ul>';
    foreach( get_posts( $args ) as $image) {
        echo '<li><img src="' . wp_get_attachment_thumb_url( $image->ID ) . '" /></li>';
    }
    echo '</ul>';
}, 'post' );
});

add_meta_box私が「投稿」に設定したという議論は、このメタボックスがどの投稿タイプで利用可能になるかを示しています。ページで利用できるようにする場合は、ページに設定する必要があります。または、カスタム投稿タイプで使用できるようにする場合は、それに応じて変更する必要もあります。

これがうまくいくことを願っています。私はそれを試していません。

于 2013-01-04T17:46:28.710 に答える
2

これを試して :

   /* === Add Thumbnails to Posts/Pages List === */
if ( !function_exists('o99_add_thumbs_column_2_list') && function_exists('add_theme_support') ) {

    //  // set your post types , here it is post and page...
    add_theme_support('post-thumbnails', array( 'post', 'page' ) );

    function o99_add_thumbs_column_2_list($cols) {

        $cols['thumbnail'] = __('Thumbnail');

        return $cols;
    }

    function o99_add_thumbs_2_column($column_name, $post_id) {

            $w = (int) 60;
            $h = (int) 60;

            if ( 'thumbnail' == $column_name ) {
                // back comp x WP 2.9
                $thumbnail_id = get_post_meta( $post_id, '_thumbnail_id', true );
                // from gal
                $attachments = get_children( array('post_parent' => $post_id, 'post_type' => 'attachment', 'post_mime_type' => 'image') );
                if ($thumbnail_id)
                    $thumb = wp_get_attachment_image( $thumbnail_id, array($w, $h), true );
                elseif ($attachments) {
                    foreach ( $attachments as $attachment_id => $attachment ) {
                        $thumb = wp_get_attachment_image( $attachment_id, array($w, $h), true );
                    }
                }
                    if ( isset($thumb) && $thumb ) {
                        echo $thumb;
                    } else {
                        echo __('None');
                    }
            }
    }

    // for posts
    add_filter( 'manage_posts_columns', 'o99_add_thumbs_column_2_list' );
    add_action( 'manage_posts_custom_column', 'o99_add_thumbs_2_column', 10, 2 );

    // for pages
    add_filter( 'manage_pages_columns', 'o99_add_thumbs_column_2_list' );
    add_action( 'manage_pages_custom_column', 'o99_add_thumbs_2_column', 10, 2 );
}

投稿の管理/ページリストにプレビューとして注目の画像が表示されます。投稿自体の中に表示したい場合は、@ Calleの提案を使用してください:(ここで機能するように変更)

add_action( 'add_meta_boxes', 'o99_add_attach_thumbs_meta_b' );

function o99_add_attach_thumbs_meta_b (){

add_meta_box ('att_thumb_display', 'Attached images','o99_render_attach_meta_b','post');

}

function o99_render_attach_meta_b( $post ) {
$output = '';
$args = array(
        'post_type' => 'attachment',
        'post_mime_type' => 'image',
        'post_parent' => $post->ID
    );
    //
    // uncomment if you want ordered list
    //
    // $output .= '<ul>';
     $images = get_posts( $args );
    foreach(  $images as $image) {
    //$output .= '<li>';
        $output .= '<img src="' . wp_get_attachment_thumb_url( $image->ID ) . '" />';
        //$output .= '</li>';
    }
   // $output .= '</ul>';
  echo $output;
}
于 2013-01-04T19:42:12.160 に答える