@dotty Como você pode ver por este tíquete do trac: Deve haver páginas de índice para tipos de post personalizados, portanto, obviamente, a necessidade ainda não foi abordada no núcleo do WordPress.
@John P Bloch e @Chris_O oferecem boas alternativas; Eu vou te dar uma terceira.
A "Produtos" Página
Primeiro, crie uma página para o seu tipo de postagem personalizada e chame-a de "Produtos" . Isso fornecerá o seguinte URL:
http: //example.php/products/
Um código de acesso "Lista de produtos"
Em seguida, crie um Shortcode que você possa incorporar à sua página "Produtos" . No meu exemplo, eu chamei isso [product-list]
. Aqui está uma captura de tela de como usá-lo:
(fonte: mikeschinkel.com )
Observe que esse código curto seria um ótimo candidato para adicionar muitas funcionalidades opcionais e permitir que ele funcionasse para muitos tipos diferentes de postagens, mas por questões de clareza, eu praticamente codifiquei tudo. Obviamente, você pode usá-lo como ponto de partida para seu próprio código de acesso:
<?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);
}
}
Um post-product.php
arquivo de modelo de tema
Em seguida, você precisará criar um arquivo de modelo de tema que exiba apenas um produto. A função que implementa o shortcode nomeia o arquivo de modelo post-product.php
e aqui está um bom ponto 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>
Adicione a opção de menu
Por último, você deseja adicionar a opção de menu. Isso é muito simples, como você pode ver nesta captura de tela (o seguinte pressupõe que você não fez nada com os menus do WordPress 3.0 antes e que está usando um tema compatível com menus do WordPress 3.0, como o Twenty Ten):
- Selecione a opção de menu no menu admin.
- Clique no " + " para adicionar um novo menu.
- Digite o nome do menu, como quiser.
- Clique no botão "Criar menu" (a captura de tela mostra "Salvar menu", mas será "Criar menu" ao adicionar.)
- Selecione seu novo menu como sua "Navegação primária" .
- Selecione sua página " Produtos ".
- Clique em "Adicionar ao menu"
- Clique em "Salvar menu"
(fonte: mikeschinkel.com )
Finalmente, a saída
E aqui está a aparência de uma lista de produtos básica:
(fonte: mikeschinkel.com )