@dotty Comme vous pouvez le voir sur ce ticket Trac: il devrait y avoir des pages d'index pour les types de publication personnalisés, de sorte que le besoin n'a pas encore été résolu dans WordPress Core.
@John P Bloch et @Chris_O vous offrent de bonnes alternatives; Je vais te donner un 3e.
A "Produits" page
Créez d'abord une page pour votre type de publication personnalisé et appelez-le "Produits" . Cela lui donnera l'URL suivante:
http: //example.php/products/
Un shortcode "Liste des produits"
Créez ensuite un Shortcode que vous pouvez intégrer à votre page "Produits" . Dans mon exemple, je l'ai appelé [product-list]
. Voici une capture d'écran de son utilisation:
(source: mikeschinkel.com )
Notez qu'un tel shortcode serait un excellent candidat pour ajouter de nombreuses fonctionnalités optionnelles et lui permettre de fonctionner pour de nombreux types de messages différents, mais dans un souci de clarté, j'ai à peu près tout codé en dur. Vous pouvez bien sûr l'utiliser comme point de départ pour votre propre shortcode:
<?php
add_shortcode('product-list', 'my_product_list');
function my_product_list($args) {
$save_post = $GLOBALS['post']; // Save state so you can restore later
$post_type = 'product';
$template_file = get_stylesheet_directory() . "/post-{$post_type}.php";
if (!file_exists($template_file)) {
return "<p>Missing template [$template_file].</p>";
} else {
global $post;
$q = new WP_Query("showposts=10&post_type={$post_type}&orderby=title&order=ASC");
$rows = array();
$rows[] = '<div class="post-list ' . $post_type . '-post-list">';
global $post_list_data;
$post_list_data = array();
$post_list_data['post_count'] = $post_count = count($q->posts);
foreach ($q->posts as $post) {
$q->the_post();
ob_start();
include($template_file);
$rows[] = ob_get_clean();
}
$rows[] = '</div>';
$GLOBALS['post'] = $save_post;
return implode("\n",$rows);
}
}
Un post-product.php
fichier de modèle de thème
Ensuite, vous devrez créer un fichier de modèle de thème qui n'affiche qu'un seul produit. La fonction qui implémente le shortcode nomme le fichier modèle post-product.php
et voici un bon point de départ:
<?php
/**
* post-product.php - File to display only one product within a list of products.
*/
?>
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<h2 class="entry-title"><?php the_title(); ?></h2>
<div class="entry-content">
<?php the_content(); ?>
</div>
</div>
Ajouter l'option de menu
Enfin, vous voudrez ajouter l'option de menu. C'est très simple comme vous pouvez le voir sur cette capture d'écran (ce qui suit suppose que vous n'avez rien fait avec les menus WordPress 3.0 auparavant et que vous utilisez un thème qui prend en charge les menus WordPress 3.0 tels que Twenty Ten):
- Sélectionnez l'option de menu dans le menu admin.
- Cliquez sur le " + " pour ajouter un nouveau menu.
- Tapez le nom de votre menu, comme vous le souhaitez.
- Cliquez sur le bouton "Créer un menu" (la capture d'écran montre "Enregistrer le menu" mais ce sera "Créer un menu" lors de l'ajout.)
- Sélectionnez votre nouveau menu comme «navigation principale» .
- Sélectionnez votre page "Produits ".
- Cliquez sur "Ajouter au menu"
- Cliquez sur "Enregistrer le menu"
(source: mikeschinkel.com )
Enfin, la sortie
Et voici à quoi pourrait ressembler une liste de produits de base:
(source: mikeschinkel.com )