it-swarm-id.com

Membuat Jenis Pos Kustom Gambar-Sentris?

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

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

Blog header showing random images

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 memasukkan 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 ke 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 mengimplementasikan pengaturan ini. Kode lengkap adalah diposting di bawah ini .

16
Annika Backstrom

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

Header Images post list

Header Images post editing

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) ) );
}
17
Annika Backstrom
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 jenis posting Anda dengan bidang untuk gambar unggulan. Lihat codex http://codex.wordpress.org/Function_Reference/register_post_type untuk daftar argumen yang harus dilewati.

13
goldenapples