Aggiunta di un archivio di post al menu di navigazione in WordPress 3.0


10

Hay all, sto giocando con WordPress 3.0 e due (2) delle nuove funzionalità, Tipi di post personalizzati e Editor menu .

Ho iniziato creando un nuovo tipo di post chiamato " products", come hai indovinato, questo elenco di prodotti.

Sto usando il modello standard di palude e sto creando un nuovo menu per sostituire il navigatore superiore. Per quanto posso vedere, posso solo aggiungere determinati "prodotti" , non posso aggiungere un "archivio" di prodotti. Quello che sto cercando di fare è aggiungere un link al menu per andare a una pagina che elenca TUTTI i prodotti.

Qualche idea su come farlo?

Risposte:


12

@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:

Pagina di un prodotto che utilizza uno shortcode per visualizzare un elenco di prodotti in WordPress
(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.phpfile 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.phped 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):

  1. Seleziona l'opzione di menu nel menu di amministrazione.
  2. Fai clic su " + " per aggiungere un nuovo menu.
  3. Digita il nome del tuo menu, come preferisci.
  4. Fai clic sul pulsante "Crea menu" (la schermata mostra "Salva menu" ma sarà "Crea menu" quando aggiungi.)
  5. Seleziona il tuo nuovo menu come "Navigazione principale" .
  6. Seleziona la tua pagina "Prodotti ".
  7. Fai clic su "Aggiungi al menu"
  8. Fai clic su "Salva menu"

Aggiunta di un'opzione di menu Pagina prodotti a un sito WordPress
(fonte: mikeschinkel.com )

Infine, l'output

Ed ecco come potrebbe apparire un elenco di prodotti di base:

Un elenco di prodotti che utilizzano un tipo di post personalizzato in WordPress
(fonte: mikeschinkel.com )


La domanda esclusa è come modificare la voce di menu dei prodotti in modo da fornire un sottomenu con tutti i prodotti.
Hacre,

@harke Aggiornato.
MikeSchinkel,

beh quella non era una richiesta :). Mi sono solo chiesto come viene creato automaticamente il menu a discesa e penso che non sia ancora utile. Ma come scritto, questa non è una richiesta.
Hacre,

Ciao, ho un problema con questo e spero che tu possa aiutarti. Il problema è che la current-menu-itemclasse non si applica ai prodotti "li
Reigel,

Immagini mancanti. : /
fuxia

4

Questo non è supportato nativamente da WordPress. Tuttavia, potresti aggiungerlo al tuo file Functions.php e funzionerebbe:

function give_me_a_list_of_products(){
  add_rewrite_rule( 'products/?$', 'index.php?post_type=products', 'top' );
}

add_action( 'init', 'give_me_a_list_of_products' );

Questo ti darà example.com/products/ come un elenco di prodotti. Da lì, aggiungi semplicemente un link personalizzato al tuo menu.

Tuttavia, se si desidera una vera archiviazione (per mese, anno, ecc.) Con i feed, è necessario un codice più dettagliato. Se i tuoi "prodotti" sono di tipo post non gerarchico (sembra che dovrebbero essere), puoi usare il mio plugin:

http://www.wordpress.org/extend/plugins/custom-post-permalinks/

Questo ti dà campi extra per personalizzare i tuoi permalink (come puoi fare con i post sul blog) e ti darà la possibilità di personalizzare i permalink in base a categoria, autore, mese, anno, tipo di post, ecc.


Grazie per alcune fantastiche informazioni qui. Sto cercando la stessa cosa, ma anche se tutto funziona alla perfezione con la riscrittura, sono bloccato perché quando aggiungo il link personalizzato al menu il sito Web pubblico non sembra cambiare il CSS indicando che un visitatore si trova su quella pagina. Potete per favore fatemi sapere come è fatto in modo da poter mostrare la voce di menu nello stato "on" se siete all'interno dell'archivio "prodotti"?
NetConstructor.com

0
Per quanto posso vedere, posso solo aggiungere determinati "prodotti", non posso aggiungere un "archivio" di prodotti. Quello che sto cercando di fare è aggiungere un link al menu per andare a una pagina che elenca TUTTI i prodotti. Qualche idea su come farlo?

Dovresti assegnare una tassonomia al tipo di post "prodotti", quindi aggiungere il termine tassonomia a uno dei tuoi menu personalizzati che porterebbe l'utente a una pagina di archivio di tutti i prodotti con la tassonomia utilizzata.

Esempio Ho un tipo di post personalizzato chiamato "Lavori" con una tassonomia etichettata "posizioni" testo alternativo

Se volessi tutti i lavori con il termine di tassonomia "Aperture correnti", lo selezionerei e lo aggiungerei al menu. testo alternativo

Se hai bisogno di avere tutti i tuoi tipi di post "prodotti" nella pagina di archivio, puoi assegnare una tassonomia principale a tutti loro in modo che possano essere elencati nella pagina di archivio.


@Chris_O : questo è un modo, ma non l'unico e richiede anche un notevole sforzo per mantenere la categorizzazione da parte dell'utente. JMTCW comunque.
MikeSchinkel,

Ha senso. Speriamo che la pagina dell'indice del tipo di post personalizzato venga indirizzata nel core.
Chris_O,

0

Penso che sia una soluzione migliore per creare tramite un tipo di post personalizzato un tipo di post Archive e spostare i post archiviati in questo archivio. Aggiungi anche il post_type corrente al postmeta di questo nuovo post_type per annullare l'operazione. Ho scritto un plugin per questo e attualmente puoi vederlo, senza fogli di stile, immagini e file di lingua, su gist.github / 978690 .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.