it-swarm-es.com

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

¿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 rotativo, como se muestra a continuación:

Blog header showing random images

Las dos imágenes en la parte superior izquierda están aleatorizadas 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 personalizados. He creado un nuevo tipo de publicació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 este,

  1. ¿Cómo puedo incorporar una interfaz simple al proceso de adjuntos 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 ser capaz de crear una taxonomía marcar las imágenes como imagen izquierda/imagen derecha. (Al mirar 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 para 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 abajo .

16
Annika Backstrom

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

Header Images post list

Header Images post editing

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) ) );
}
17
Annika Backstrom
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 http://codex.wordpress.org/Function_Reference/register_post_type para obtener una lista de los argumentos a aprobar.

13
goldenapples