Membuat Jenis Pos Kustom Gambar-Sentris?


17

Adakah yang punya tips untuk membuat jenis posting khusus sentris-gambar?

Untuk menjelaskannya, blog saya memiliki gambar tajuk yang diputar, seperti di bawah ini:

Header blog yang menampilkan gambar acak

Dua gambar di kiri atas diacak, dan ada sebagai lampiran ke halaman tertentu yang hanya ada untuk memuat gambar-gambar ini. Saya bertanya-tanya apakah layak untuk menyimpan ini dengan cara yang berbeda menggunakan jenis posting khusus. Saya telah membuat jenis posting baru, "header-image", dan saya mencoba mencari tahu ke mana harus pergi dari sini. Saya ingin setiap "header" gambar header memiliki satu lampiran gambar. Alih-alih menarik gambar acak dari suatu halaman, saya akan menarik posting acak dari jenis posting gambar header. Mengingat ini,

  1. Bagaimana saya bisa menggabungkan antarmuka sederhana ke proses lampiran yang tersedia dari halaman admin "Gambar Header Baru"?
  2. Dapatkah saya menghapus judul tulisan dan kotak input konten untuk mengacaukan halaman itu?

Tujuannya adalah untuk membuat antarmuka yang lebih baik untuk proses unggahan saat ini, dan akhirnya dapat membuat taksonomi untuk menandai gambar sebagai gambar kiri / gambar kanan. (Melihat gambar di atas, Anda dapat melihat foto di sebelah kanan menutupi wajah di foto lain. Saya bisa menghindari ini dengan menandai foto untuk tampilan sisi kiri dan / atau kanan.) Yang terakhir tidak akan menjadi masalah jika Saya bisa menerapkan yang pertama.

Pembaruan: berdasarkan jawaban di sini, saya dapat menerapkan pengaturan ini. Kode lengkap diposting di bawah ini .


2
Saya sarankan Anda memberi orang itu jawaban yang membuat Anda pergi ke tempat Anda harus menerima kredit Terima Jawab.
Ryan Gibbons

Jawaban:


18

Jawaban awal goldenapple memberi saya lompatan awal yang saya butuhkan untuk menyelesaikan ini.

functions.php

Berikut adalah kode lengkap yang saya gunakan untuk menambahkan jenis posting baru "gambar-header" dan memodifikasi layar admin lainnya sesuai:

/**
 * Register the Header Image custom post type.
 */
function sixohthree_init() {
    $labels = array(
        'name' => 'Header Images',
        'singular_name' => 'Header Image',
        'add_new_item' => 'Add Header Image',
        'edit_item' => 'Edit Header Image',
        'new_item' => 'New Header Image',
        'view_item' => 'View Header Image',
        'search_items' => 'Search Header Images',
        'not_found' => 'No Header Images found',
        'not_found_in_trash' => 'No Header Images found in Trash'
    );

    $args = array(
        'labels' => $labels,
        'public' => false,
        'show_ui' => true,
        'supports' => array('thumbnail')
    );

    register_post_type( 'header-image', $args );
}
add_action( 'init', 'sixohthree_init' );

/**
 * Modify which columns display when the admin views a list of header-image posts.
 */
function sixohthree_headerimage_posts_columns( $posts_columns ) {
    $tmp = array();

    foreach( $posts_columns as $key => $value ) {
        if( $key == 'title' ) {
            $tmp['header-image'] = 'Header Image';
        } else {
            $tmp[$key] = $value;
        }
    }

    return $tmp;
}
add_filter( 'manage_header-image_posts_columns', 'sixohthree_headerimage_posts_columns' );

/**
 * Custom column output when admin is view the header-image post list.
 */
function sixohthree_headerimage_custom_column( $column_name ) {
    global $post;

    if( $column_name == 'header-image' ) {
        echo "<a href='", get_edit_post_link( $post->ID ), "'>", get_the_post_thumbnail( $post->ID ), "</a>";
    }
}
add_action( 'manage_posts_custom_column', 'sixohthree_headerimage_custom_column' );

/**
 * Make the "Featured Image" metabox front and center when editing a header-image post.
 */
function sixohthree_headerimage_metaboxes( $post ) {
    global $wp_meta_boxes;

    remove_meta_box('postimagediv', 'header-image', 'side');
    add_meta_box('postimagediv', __('Featured Image'), 'post_thumbnail_meta_box', 'header-image', 'normal', 'high');
}
add_action( 'add_meta_boxes_header-image', 'sixohthree_headerimage_metaboxes' );

/**
 * Enable thumbnail support in the theme, and set the thumbnail size.
 */
function sixohthree_after_setup() {
    add_theme_support( 'post-thumbnails' );
    set_post_thumbnail_size(150, 100, true);
}
add_action( 'after_setup_theme', 'sixohthree_after_setup' );

Tangkapan layar admin

Daftar posting Gambar Header

Pengeditan Posting gambar

Kode templat

$header_images = get_posts('post_type=header-image&orderby=rand&numberposts=2');

foreach( $header_images as $idx => $post ) {
    setup_postdata($post);
    the_post_thumbnail('post-thumbnail', array('class' => 'snapshot snapshot' . ($idx+1) ) );
}

Kerja bagus! Suka!
John P Bloch

Dan bagaimana cara saya menambahkan tautan ke thumbnail? Baik di admin dan template? Terlihat bagus!
Florescu Adrian

Mungkinkah ini diubah untuk menetapkan gambar ke halaman?
Doidgey

13
function register_header_image() {
     register_post_type( 'header-image', 
                         array( 
                             'label'=>'Header Images',
                             'name'=>'Header Images',
                             'singular_name'=>'Header Image',
                             'public'=>true,
                             'show_ui'=>true,
                             'hierarchical'=>true,
                             'supports'=>array('thumbnail') ) );
}

add_action ('init','register_header_image');
add_theme_support( 'post-thumbnails' );

Itu seharusnya mendaftarkan tipe posting Anda dengan bidang untuk gambar unggulan. Lihat codex http://codex.wordpress.org/Function_Reference/register_post_type untuk daftar argumen yang harus dilewati.


1
Nilai pendukung "gambar unggulan" memberi saya layar kosong saat membuat gambar header baru, tetapi "thumbnail" menambahkan kotak meta baru yang disebut "Gambar Unggulan." Terima kasih!
Annika Backstrom

Kamu benar. Kesalahan saya dalam hal itu.
goldapples
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.