@dotty Como puede ver en este ticket de seguimiento: debe haber páginas de índice para los tipos de publicaciones personalizadas, por lo que obviamente la necesidad aún no se ha abordado en el núcleo de WordPress.
Tanto @John P Bloch como @Chris_O te dan buenas alternativas; Te voy a dar un 3er.
Un "productos" Página
Primero cree una página para su tipo de publicación personalizada y llámela "Productos" . Eso le dará la siguiente URL:
http: //example.php/products/
Un shortcode "Lista de productos"
Luego cree un Shortcode que pueda incrustar en su página de "Productos" . En mi ejemplo lo llamé [product-list]
. Aquí hay una captura de pantalla de cómo se vería su uso:
(fuente: mikeschinkel.com )
Tenga en cuenta que un código tan corto sería un gran candidato para agregar muchas funciones opcionales y permitir que funcione para muchos tipos de publicaciones diferentes, pero en aras de la claridad, prácticamente codifiqué todo. Por supuesto, puede usarlo como punto de partida para su propio 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
archivo de plantilla de tema
A continuación, deberá crear un archivo de plantilla de tema que solo muestre un producto. La función que implementa el shortcode nombra el archivo de plantilla post-product.php
y aquí hay un buen punto de partida:
<?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>
Agregar la opción de menú
Por último, querrás agregar la opción de menú. Esto es muy sencillo, como puede ver en esta captura de pantalla (lo siguiente supone que no ha hecho nada antes con los menús de WordPress 3.0 y que está utilizando un tema que admite menús de WordPress 3.0 como Twenty Ten):
- Seleccione la opción de menú en el menú de administración.
- Haga clic en " + " para agregar un nuevo menú.
- Escriba el nombre de su menú, lo que quiera.
- Haga clic en el botón "Crear menú" (la captura de pantalla muestra "Guardar menú" pero será "Crear menú" al agregar).
- Seleccione su nuevo menú como su "Navegación principal" .
- Seleccione su página de "Productos ".
- Haga clic en "Agregar al menú"
- Haga clic en "Guardar menú"
(fuente: mikeschinkel.com )
Finalmente, la salida
Y así es como se vería una lista básica de productos:
(fuente: mikeschinkel.com )