¿Crear un tipo de mensaje personalizado centrado en la imagen?

17

¿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:

Encabezado del blog que muestra imágenes aleatorias

Las dos imágenes en la parte superior izquierda son aleatorias y existen como archivos adjuntos a una página específica que solo existe para contener estas imágenes. Me pregunto si es posible almacenarlos de una manera diferente utilizando tipos de publicaciones personalizadas. He creado un nuevo tipo de publicación, "imagen de encabezado", y estoy tratando de averiguar a dónde ir desde aquí. Me gustaría que cada "publicación" de la imagen de encabezado tenga un archivo adjunto de imagen. En lugar de extraer imágenes aleatorias de una página, extraería publicaciones aleatorias del tipo de publicación de imagen de encabezado. Dado este,

  1. ¿Cómo podría incorporar una interfaz simple al proceso de archivo adjunto que está disponible en la página de administración "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 en la otra foto. Podría evitar esto marcando las fotos para la pantalla lateral izquierda y / o derecha). Esta última no será un problema si Puedo implementar lo primero.

Actualización: en base a una respuesta aquí, pude implementar esta configuración. El código completo se publica a continuación .

Annika Backstrom
fuente
2
Te sugiero que le des a la persona la respuesta que te llevó a donde debes ir el crédito Aceptar Respuesta.
Ryan Gibbons

Respuestas:

18

La respuesta inicial de Goldenapple me dio el impulso que necesitaba para terminar esto.

funciones.php

Aquí está el código completo que estoy usando para agregar un nuevo tipo de mensaje "imagen de encabezado" y modificar otras pantallas de administrador 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

Lista de publicaciones de imágenes de encabezado

Edición de imágenes de encabezado

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) ) );
}
Annika Backstrom
fuente
¡Gran trabajo! ¡Quiéralo!
John P Bloch
¿Y cómo agregaría un enlace a la miniatura? ¿Tanto en administrador como en plantilla? ¡Bonita!
Florescu Adrian
¿Podría esto modificarse para asignar una imagen a una página?
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' );

Eso debería registrar su tipo de publicación con nada más que un campo para una imagen destacada. Ver el codex http://codex.wordpress.org/Function_Reference/register_post_type para obtener una lista de los argumentos a pasar.

goldenapples
fuente
1
Un valor compatible de "imagen destacada" me da una pantalla en blanco al crear una nueva imagen de encabezado, pero "miniatura" agrega un nuevo cuadro de meta llamado "Imagen destacada". ¡Gracias!
Annika Backstrom
Tienes razón. Mi error en eso.
goldenapples