Erstellen eines Image-zentrierten benutzerdefinierten Beitragstyps?

17

Hat jemand Tipps zum Erstellen eines bildzentrierten benutzerdefinierten Beitragstyps?

Mein Blog enthält folgende rotierende Header-Bilder:

Blog-Header mit zufälligen Bildern

Die beiden Bilder oben links sind zufällig angeordnet und existieren als Anhänge zu einer bestimmten Seite, die nur zur Aufnahme dieser Bilder existiert. Ich frage mich, ob es möglich ist, diese mit benutzerdefinierten Beitragstypen auf andere Weise zu speichern. Ich habe einen neuen Beitragstyp erstellt, "Header-Image", und ich versuche herauszufinden, wohin ich von hier aus gehen soll. Ich möchte, dass jedes Header-Bild "post" einen Bildanhang hat. Anstatt zufällige Bilder von einer Seite zu ziehen, würde ich zufällige Posts vom Typ "Header-Image-Post" ziehen. Vor diesem Hintergrund

  1. Wie kann ich eine einfache Schnittstelle zum Anhängeprozess integrieren, die auf der Administrationsseite "New Header Image" verfügbar ist?
  2. Kann ich die Eingabefelder für den Posttitel und den Inhalt entfernen, um die Seite übersichtlicher zu gestalten?

Ziel ist es , eine bessere Schnittstelle zum aktuellen Upload-Prozess zu schaffen und schließlich eine Taxonomie zu erstellen , um Bilder als linkes Bild / rechtes Bild zu kennzeichnen. (Wenn Sie sich das Bild oben ansehen, sehen Sie, dass das Foto rechts das Gesicht des anderen Fotos verdeckt. Dies könnte ich vermeiden, indem Sie Fotos für die linke und / oder rechte Seite markieren.) Letzteres ist kein Problem, wenn Ersteres kann ich umsetzen.

Update: Aufgrund einer Antwort hier konnte ich dieses Setup implementieren. Der vollständige Code ist unten angegeben .

Annika Backström
quelle
2
Ich würde vorschlagen, dass Sie der Person die Antwort geben, mit der Sie die Antwort akzeptieren-Gutschrift erhalten haben.
Ryan Gibbons

Antworten:

18

Die erste Antwort von goldenapple gab mir die Starthilfe, die ich brauchte, um dies zu beenden.

functions.php

Hier ist der vollständige Code, den ich verwende, um einen neuen Beitragstyp "Header-Image" hinzuzufügen und andere Admin-Bildschirme entsprechend zu ändern:

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

Admin-Screenshots

Header Images Beitragsliste

Header Bilder nachträglich bearbeiten

Vorlagencode

$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) ) );
}
Annika Backström
quelle
Gut gemacht! Liebe es!
John P Bloch
Und wie würde ich dem Thumbnail einen Link hinzufügen? Sowohl in admin als auch in template? Gut aussehend!
Florescu Adrian
Könnte dies geändert werden, um einer Seite ein Bild zuzuweisen?
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' );

Damit sollte Ihr Beitragstyp nur mit einem Feld für ein ausgewähltes Bild registriert werden. Eine Liste der zu übergebenden Argumente finden Sie im Codex http://codex.wordpress.org/Function_Reference/register_post_type .

goldenapples
quelle
1
Ein unterstützender Wert von "Featured-Image" gibt mir einen leeren Bildschirm, wenn ich ein neues Header-Bild erstelle, aber "Thumbnail" fügt ein neues Meta-Feld mit dem Namen "Featured Image" hinzu. Vielen Dank!
Annika Backstrom
Du hast recht. Mein Fehler dabei.
Goldenapples