การสร้างประเภทโพสต์ที่กำหนดเองซึ่งเป็นรูปภาพเป็นศูนย์กลาง?


17

ใครบ้างมีเคล็ดลับในการสร้างประเภทโพสต์ที่กำหนดเองภาพเป็นศูนย์กลาง?

ในการทำอย่างละเอียดบล็อกของฉันมีการหมุนภาพส่วนหัวดังแสดงด้านล่าง:

ส่วนหัวของบล็อกแสดงภาพแบบสุ่ม

รูปภาพสองรูปที่ด้านซ้ายบนจะถูกสุ่มและมีอยู่เป็นไฟล์แนบไปยังหน้าเฉพาะที่มีอยู่เพื่อเก็บภาพเหล่านี้เท่านั้น ฉันสงสัยว่าเป็นไปได้หรือไม่ที่จะจัดเก็บสิ่งเหล่านี้ในลักษณะที่แตกต่างกันโดยใช้ประเภทโพสต์ที่กำหนดเอง ฉันได้สร้างประเภทโพสต์ใหม่ "ส่วนหัวภาพ" และฉันพยายามคิดว่าจะไปจากที่นี่ ฉันต้องการให้แต่ละภาพส่วนหัว "โพสต์" มีภาพที่แนบมาหนึ่งภาพ แทนที่จะดึงภาพแบบสุ่มจากหน้าฉันจะดึงโพสต์แบบสุ่มจากประเภทโพสต์ภาพส่วนหัว รับสิ่งนี้

  1. ฉันจะรวมอินเทอร์เฟซอย่างง่ายเข้ากับกระบวนการสิ่งที่แนบที่มีอยู่ได้จากหน้าผู้ดูแลระบบ "ภาพหัวใหม่"
  2. ฉันสามารถลบชื่อโพสต์และช่องป้อนเนื้อหาเพื่อแยกออกจากหน้านั้นได้หรือไม่

เป้าหมายคือการสร้างอินเทอร์เฟซที่ดีกว่าให้กับกระบวนการอัปโหลดปัจจุบันและในที่สุดก็สามารถสร้างอนุกรมวิธานเพื่อตั้งค่าสถานะภาพเป็นภาพซ้าย / ขวา (ดูที่ภาพด้านบนคุณสามารถเห็นภาพด้านขวาครอบคลุมใบหน้าในรูปภาพอื่น ๆ ฉันสามารถหลีกเลี่ยงสิ่งนี้ได้โดยทำเครื่องหมายรูปภาพสำหรับการแสดงผลด้านซ้ายและ / หรือด้านขวา) หลังจะไม่เป็นปัญหาหาก ฉันสามารถใช้อดีต

อัปเดต:ตามคำตอบที่นี่ฉันสามารถใช้การตั้งค่านี้ได้ รหัสเต็มโพสต์ด้านล่าง


2
ฉันขอแนะนำให้คุณให้คำตอบที่มีให้คุณในที่ที่คุณต้องการเครดิตตอบรับ
Ryan Gibbons

คำตอบ:


18

คำตอบเริ่มต้นของ goldenapple ทำให้ฉันเริ่มต้นอย่างรวดเร็วฉันต้องทำให้เสร็จ

functions.php

นี่คือรหัสที่ฉันใช้เพื่อเพิ่มประเภทโพสต์ใหม่ "header-image" และแก้ไขหน้าจอผู้ดูแลระบบอื่น ๆ :

/**
 * 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' );

ภาพหน้าจอผู้ดูแลระบบ

รายการโพสต์รูปภาพส่วนหัว

รูปภาพส่วนหัวแก้ไขโพสต์

รหัสเทมเพลต

$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) ) );
}

เยี่ยมมาก! รักมัน!
John P Bloch

และฉันจะเพิ่มลิงค์ไปยังภาพย่อได้อย่างไร ทั้งในผู้ดูแลระบบและแม่แบบ? ดูดี!
Florescu Adrian

สิ่งนี้สามารถแก้ไขเพื่อกำหนดภาพให้กับหน้า?
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' );

ควรลงทะเบียนประเภทโพสต์ของคุณโดยไม่มีฟิลด์ใดนอกจากฟิลด์สำหรับรูปภาพเด่น ดู codex http://codex.wordpress.org/Function_Reference/register_post_typeเพื่อดูรายการอาร์กิวเมนต์ที่จะผ่าน


1
ค่าการสนับสนุนของ "ภาพเด่น" ให้ฉันหน้าจอว่างเปล่าเมื่อสร้างภาพส่วนหัวใหม่ แต่ "ภาพขนาดย่อ" เพิ่มกล่องเมตาใหม่ที่เรียกว่า "ภาพเด่น" ขอบคุณ!
Annika Backstrom

คุณถูก. ความผิดพลาดของฉันในเรื่องนั้น
goldenapples
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.