Quelqu'un at-il des conseils pour créer un type de message personnalisé centré sur l'image?
Pour élaborer, mon blog contient des images d’en-tête en rotation, présentées ci-dessous:
Les deux images en haut à gauche sont randomisées et existent en tant que pièces jointes à une page spécifique qui n'existe que pour contenir ces images. Je me demande s'il est possible de les stocker d'une manière différente en utilisant des types de publication personnalisés. J'ai créé un nouveau type de message, "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,
Les objectifs sont: créer une meilleure interface pour le processus de téléchargement en cours, et éventuellement être capable de créer une taxonomie pour marquer les images comme image de gauche/image de 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 mettre en œuvre l'ancien.
Mise à jour: Sur la base d’une réponse donnée ici, j’ai pu implémenter cette configuration. Le code complet est affiché ci-dessous .
la réponse initiale de goldenapple m'a donné le départ dont j'avais besoin pour terminer.
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' );
$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) ) );
}
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, mais un champ pour une image sélectionnée. Voir le codex http://codex.wordpress.org/Function_Reference/register_post_type pour une liste des arguments à transmettre.