Création d'un type de message personnalisé axé sur l'image?

15

Quelqu'un a-t-il des conseils pour créer un type de message personnalisé axé sur l'image?

Pour élaborer, mon blog contient des images d'en-tête en rotation, comme indiqué ci-dessous:

Lesdeuximagesenhautàgauchesontrandomiséesetexistententantquepiècesjointesàunepagespécifiquequin'existequepourcontenircesimages.Jemedemandes'ilestpossibledelesstockerd'unemanièredifférenteenutilisantdestypesdepublicationpersonnalisés.J'aicrééunnouveautypedemessage,"header-image", et j'essaie de savoir où aller à partir de maintenant. Je voudrais que chaque en-tête-image "post" ait une image en pièce jointe. Au lieu de tirer des images aléatoires d'une page, je tirerais des publications aléatoires du type de publication header-image. Compte tenu de cela,

  1. Comment puis-je incorporer une interface simple au processus de pièce jointe disponible à partir de la page d'administration "Nouvelle image d'en-tête"?
  2. Puis-je supprimer les zones de saisie du titre et du contenu du message pour désencombrer cette page?
Les

objectifs sont de créer une meilleure interface avec le processus de téléchargement en cours et de pouvoir créer une taxonomie permettant de marquer les images comme étant de gauche à droite. (En regardant l'image ci-dessus, vous pouvez voir la photo de droite recouvre le visage de l'autre photo. Je pourrais éviter cela en marquant les photos pour qu'elles soient affichées à gauche et / ou à droite.) Ce dernier ne posera pas de problème si Je peux implémenter l'ancien.

Mise à jour: à partir d'une réponse, j'ai été en mesure de mettre en place cette configuration. Le code complet est publié ci-dessous .

    
posée Annika Backstrom 20.08.2010 - 15:23

2 réponses

17

La réponse initiale de goldenapple m'a donné le départ dont j'avais besoin pour terminer.

functions.php

Voici le code complet que j'utilise pour ajouter un nouveau type de message "header-image" et modifier les autres écrans d'administration en conséquence:

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

Captures d'écran de l'administrateur

Code du modèle

$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) ) );
}
    
réponse donnée 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' );

Cela devrait enregistrer votre type de message avec rien d'autre qu'un champ pour une image sélectionnée. Consultez le enlace du codex pour obtenir la liste des arguments à transmettre.

    
réponse donnée goldenapples 20.08.2010 - 15:42

Lire d'autres questions sur les étiquettes