@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 )
current-menu-item
classe n'est pas appliquée sur les produits »li
Ce n'est pas pris en charge nativement par WordPress. Cependant, vous pouvez l'ajouter à votre fichier functions.php et cela fonctionnerait:
Cela vous donnera example.com/products/ comme une liste de produits. De là, il vous suffit d'ajouter un lien personnalisé à votre menu.
Cependant, si vous voulez un véritable archivage (par mois, année, etc.) avec des flux, vous avez besoin d'un code plus détaillé. Si vos «produits» sont un type de publication non hiérarchique (il semble qu'ils devraient l'être), vous pouvez utiliser mon plugin:
http://www.wordpress.org/extend/plugins/custom-post-permalinks/
Cela vous donne des champs supplémentaires pour personnaliser vos permaliens (comme vous pouvez le faire avec les articles de blog), et vous donnera la possibilité de personnaliser les permaliens en fonction de la catégorie, de l'auteur, du mois, de l'année, du type de publication, etc.
la source
Vous devez attribuer une taxonomie au type de publication "produits" puis ajouter le terme de taxonomie à l'un de vos menus personnalisés, ce qui amènera l'utilisateur à une page d'archive de tous les produits sous la taxonomie utilisée.
Exemple J'ai un type de publication personnalisé appelé "Jobs" avec une taxonomie intitulée "positions"
Si je voulais tous les emplois avec le terme de taxonomie "Current Openings" je le sélectionnerais et l'ajouterais au menu.
Si vous avez besoin d'avoir tous vos types de publication "produits" sur la page d'archive, vous pouvez attribuer une taxonomie parent à chacun d'eux afin qu'ils puissent tous être répertoriés sur la page d'archive.
la source
Je pense que c'est une meilleure solution pour créer via un type de publication personnalisé une archive de type de publication et déplacer les messages archivés dans cette archive. Ajoutez également le post_type actuel au postmeta de ce nouveau post_type pour annuler cela. J'ai écrit un plugin pour cela et actuel, vous pouvez le voir, sans feuilles de style, images et fichier de langue, sur gist.github / 978690 .
la source