¿Creando un tipo de publicación personalizada centrada en la imagen?

15

¿Alguien tiene algún consejo para crear un tipo de publicación personalizada centrada en la imagen?

Para elaborar, mi blog tiene imágenes de encabezado giratorio, que se muestran a continuación:

Lasdosimágenesenlapartesuperiorizquierdaestánaleatorizadasyexistencomoarchivosadjuntosaunapáginaespecíficaquesoloexisteparacontenerestasimágenes.Mepreguntosiesposiblealmacenarlosdeunamaneradiferenteutilizandotiposdepublicacionespersonalizados.Hecreadounnuevotipodepublicación,"header-image", y estoy tratando de averiguar a dónde ir desde aquí. Me gustaría que cada "publicación" de encabezado-imagen tenga un archivo adjunto de imagen. En lugar de extraer imágenes aleatorias de una página, obtendría publicaciones aleatorias del tipo de publicación encabezado-imagen. Dado esto,

  1. ¿Cómo puedo incorporar una interfaz simple al proceso de adjunto que está disponible en la página de administración de "Nueva imagen de encabezado"?
  2. ¿Puedo eliminar el título de la publicación y los cuadros de entrada de contenido para despejar esa página?

Los objetivos son crear una mejor interfaz para el proceso de carga actual y, finalmente, poder crear una taxonomía para marcar las imágenes como imagen izquierda / imagen derecha. (Mirando la imagen de arriba, puede ver que la foto de la derecha cubre la cara de la otra foto. Podría evitar esto marcando las fotos en la pantalla lateral izquierda y / o derecha). Esta última no será un problema si Puedo implementar el primero.

Actualización: basado en una respuesta aquí, pude implementar esta configuración. El código completo es publicado a continuación .

    
pregunta Annika Backstrom 20.08.2010 - 15:23

2 respuestas

17
La respuesta inicial de

goldenapple me dio el impulso que necesitaba para terminar esto.

functions.php

Aquí está el código completo que estoy usando para agregar un nuevo tipo de publicación "header-image" y modificar otras pantallas de administración en consecuencia:

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

Capturas de pantalla del administrador

código de plantilla

$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) ) );
}
    
respondido por el Annika Backstrom 20.08.2010 - 18:09
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' );

Eso debería registrar su tipo de publicación con nada más que un campo para una imagen destacada. Consulte el códice enlace para obtener una lista de los argumentos que deben aprobarse.

    
respondido por el goldenapples 20.08.2010 - 15:42

Lea otras preguntas en las etiquetas