Creazione di un tipo di post personalizzato incentrato sull'immagine?


17

Qualcuno ha qualche suggerimento per la creazione di un tipo di post personalizzato incentrato sull'immagine?

Per elaborare, il mio blog ha immagini di intestazione rotanti, mostrate di seguito:

Intestazione del blog che mostra immagini casuali

Le due immagini in alto a sinistra sono casuali ed esistono come allegati a una pagina specifica che esiste solo per contenere queste immagini. Mi chiedo se sia possibile archiviarli in modo diverso utilizzando tipi di post personalizzati. Ho creato un nuovo tipo di post, "header-image", e sto cercando di capire dove andare da qui. Vorrei che ogni "post" di immagine di intestazione avesse un allegato di immagine. Invece di estrarre immagini casuali da una pagina, estrarrei post casuali dal tipo di post immagine-intestazione. Dato ciò,

  1. Come potrei incorporare una semplice interfaccia al processo di allegato disponibile nella pagina di amministrazione "Nuova immagine di intestazione"?
  2. Posso rimuovere il titolo del post e le caselle di input del contenuto per disordinare quella pagina?

Gli obiettivi sono quello di creare una migliore interfaccia per l'attuale processo di caricamento e, infine, essere in grado di creare una tassonomia per contrassegnare le immagini come immagine sinistra / immagine destra. (Guardando l'immagine sopra, puoi vedere la foto a destra che copre il viso nell'altra foto. Potrei evitarlo contrassegnando le foto per il display a sinistra e / o a destra.) Quest'ultimo non sarà un problema se Posso implementare il primo.

Aggiornamento: sulla base di una risposta qui, sono stato in grado di implementare questa configurazione. Il codice completo è pubblicato di seguito .


2
Ti suggerirei di dare alla persona la risposta che ti ha portato dove hai bisogno di andare al credito Accetta risposta.
Ryan Gibbons,

Risposte:


18

La risposta iniziale di goldenapple mi ha dato il punto di partenza di cui avevo bisogno per finire.

functions.php

Ecco il codice completo che sto usando per aggiungere un nuovo tipo di post "header-image" e modificare di conseguenza altre schermate di amministrazione:

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

Schermate di amministrazione

Elenco dei post delle immagini delle intestazioni

Modifica delle immagini delle intestazioni

Codice modello

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

Ottimo lavoro! Lo adoro!
John P Bloch,

E come aggiungerei un collegamento alla miniatura? Sia in admin che in template? Bell'aspetto!
Florescu Adrian,

Potrebbe essere modificato per assegnare un'immagine a una pagina?
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' );

Questo dovrebbe registrare il tuo tipo di post con nient'altro che un campo per un'immagine in primo piano. Vedi il codice http://codex.wordpress.org/Function_Reference/register_post_type per un elenco degli argomenti da passare.


1
Un valore di supporto di "immagine in primo piano" mi dà uno schermo vuoto quando si crea una nuova immagine di intestazione, ma "anteprima" aggiunge una nuova meta-casella chiamata "Immagine in primo piano". Grazie!
Annika Backstrom,

Hai ragione. Il mio errore è quello.
goldenapples
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.