@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 )
current-menu-item
classe não é aplicado em produtos 'li
Isso não é suportado nativamente pelo WordPress. No entanto, você pode adicionar isso ao seu arquivo functions.php e funcionaria:
Isso fornecerá example.com/products/ como uma lista de produtos. A partir daí, basta adicionar um link personalizado ao seu menu.
No entanto, se você deseja um verdadeiro arquivamento (por mês, ano etc.) com feeds, precisará de um código mais detalhado. Se seus 'produtos' são um tipo de postagem não hierárquica (parece que deveriam ser), você pode usar meu plugin:
http://www.wordpress.org/extend/plugins/custom-post-permalinks/
Isso fornece campos extras para personalizar seus links permanentes (como você pode com as postagens do blog) e permite personalizar links permanentes com base na categoria, autor, mês, ano, tipo de postagem etc.
fonte
Você precisaria atribuir uma taxonomia ao tipo de postagem "produtos" e, em seguida, adicionar o termo de taxonomia a um de seus menus personalizados, que levaria o usuário a uma página de arquivo de todos os produtos com a taxonomia utilizada.
Exemplo: Eu tenho um tipo de postagem personalizado chamado "Trabalhos" com uma taxonomia denominada "posições"
Se eu quisesse todos os trabalhos com o termo de taxonomia "Vagas atuais", selecioná-lo e adicioná-lo ao menu.
Se você precisar ter todos os tipos de postagem de "produtos" na página de arquivamento, poderá atribuir uma taxonomia pai a todos eles, para que todos possam ser listados na página de arquivamento.
fonte
Eu acho que é uma solução melhor criar via postagem personalizada um tipo de postagem Archive e mover as postagens arquivadas nesse arquivo. Adicione também o post_type atual ao postmeta deste novo post_type para desfazer isso. Eu escrevi um plugin para isso e atual, você pode vê-lo, sem folhas de estilo, imagens e arquivo de idioma, em gist.github / 978690 .
fonte