@dotty Come puoi vedere da questo ticket trac: Dovrebbero esserci pagine indice per tipi di post personalizzati, quindi ovviamente la necessità non è stata ancora affrontata nel core di WordPress.
Sia @John P Bloch che @Chris_O ti offrono buone alternative; Ti darò un terzo.
Un "Prodotti" Pagina
Innanzitutto, crea una pagina per il tuo tipo di posta personalizzato e chiamala "Prodotti" . Questo gli darà il seguente URL:
http: //example.php/products/
Un shortcode "Elenco prodotti"
Quindi creare un codice funzione che è possibile incorporare nella pagina "Prodotti" . Nel mio esempio l'ho chiamato [product-list]
. Ecco uno screenshot di come sarebbe usarlo:
(fonte: mikeschinkel.com )
Si noti che un tale shortcode sarebbe un ottimo candidato per aggiungere molte funzionalità opzionali e consentirgli di funzionare per molti tipi di post diversi, ma per motivi di chiarezza ho praticamente codificato tutto. Ovviamente puoi usarlo come punto di partenza per il tuo 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
file modello tema
Successivamente dovrai creare un file modello tema che visualizza solo un prodotto. La funzione che implementa lo shortcode nomina il file modello post-product.php
ed ecco un buon punto di partenza:
<?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>
Aggiungi l'opzione di menu
Infine, vorrai aggiungere l'opzione di menu. Questo è molto semplice, come puoi vedere da questo screenshot (il seguente presuppone che non hai fatto nulla con i menu di WordPress 3.0 prima e che stai usando un tema che supporta i menu di WordPress 3.0 come Twenty Ten):
- Seleziona l'opzione di menu nel menu di amministrazione.
- Fai clic su " + " per aggiungere un nuovo menu.
- Digita il nome del tuo menu, come preferisci.
- Fai clic sul pulsante "Crea menu" (la schermata mostra "Salva menu" ma sarà "Crea menu" quando aggiungi.)
- Seleziona il tuo nuovo menu come "Navigazione principale" .
- Seleziona la tua pagina "Prodotti ".
- Fai clic su "Aggiungi al menu"
- Fai clic su "Salva menu"
(fonte: mikeschinkel.com )
Infine, l'output
Ed ecco come potrebbe apparire un elenco di prodotti di base:
(fonte: mikeschinkel.com )