Question

Hay, je suis jouer avec WordPress 3.0 et deux (2) des nouvelles fonctionnalités, Types personnalisés message et Menu Editor .

J'ai commencé par la création d'un nouveau type de poste appelé « products », comme vous l'avez deviné, ces produits de la liste.

J'utilise le modèle standard tourbière et je crée un nouveau menu pour remplacer le top nav. Pour autant que je peux voir, je ne peux ajouter certains « produits » , je ne peux pas ajouter un « archive » de produits. Ce que je suis en train de faire est d'ajouter un lien vers le menu pour accéder à une page qui énumère tous les produits.

Toute idée comment faire?

Était-ce utile?

La solution

@dotty Comme vous pouvez le voir par ce billet trac: < strong> Il devrait y avoir des pages d'index pour les types de poste personnalisé si évidemment la nécessité n'a pas encore été abordé dans le noyau WordPress.

Les deux P Bloch et @John @Chris_O vous donner de bonnes alternatives; Je vais vous donner un 3ème.

"Produits" Page

Créez d'abord un Page pour votre type Poster sur mesure et appelez "Produits" . Cela lui donnera l'adresse suivante:

  

http: //example.php/products/

"Liste des produits" Shortcode

Créez ensuite un Shortcode que vous pouvez intégré dans votre "Produits" page. Dans mon exemple, je l'ai appelé [product-list]. Voici une capture d'écran de ce que l'utiliser ressemblerait à ceci:


(source: mikeschinkel.com )

Notez que shortcode un tel serait un excellent candidat pour ajouter de nombreuses fonctionnalités en option et qui lui permet de travailler pour de nombreux types de postes, mais dans un souci de clarté, je à peu près tout Hardcoded. Vous pouvez bien sûr utiliser comme point de départ pour votre propre 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 fichier post-product.php modèle de thème

Ensuite, vous devrez créer un fichier de modèle de thème qui affiche uniquement un produit. La fonction qui implémente les noms de shortcode le fichier modèle post-product.php et voici un bon point de départ:

<?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>

Ajoutez l'option de menu

dernière, vous aurez envie d'ajouter l'option de menu. Ceci est très simple que vous pouvez le voir sur cette capture d'écran (ce qui suit suppose que vous avez rien fait avec WordPress 3.0 menus avant et que vous utilisez un thème qui prend en charge de 3.0 menus tels que Twenty Ten):

  1. Sélectionnez l'option de menu dans le menu d'administration.
  2. Cliquez sur " + " pour ajouter un nouveau menu.
  3. Tapez votre nom de menu, tout ce que vous aimez.
  4. Cliquez sur "Créer un menu" bouton (l'écran Capture d'écran "Enregistrer Menu" mais il sera "Créer un menu" lors de l'ajout .)
  5. Sélectionnez votre nouveau menu comme "Navigation primaire" .
  6. Sélectionnez "Produits " page.
  7. Cliquez "Ajouter au menu"
  8. Cliquez "Enregistrer Menu"


(source: mikeschinkel.com )

Enfin, la sortie

Et voici ce qu'un produit de base liste pourrait ressembler à:


(source: mikeschinkel.com )

Autres conseils

Ce n'est pas pris en charge nativement par WordPress. Cependant, vous pouvez ajouter à votre fichier functions.php et travailleriez:

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' );

Cela vous donnera example.com/products/~~V~~singular~~2nd comme une liste de produits. A partir de là, vous ajoutez simplement un lien personnalisé à votre menu.

Cependant, si vous voulez vrai archivage (par mois, année, etc.) avec des aliments, vous avez besoin d'un code plus détaillé. Si vos « produits » sont un type de poste non hiérarchique (semble comme ils devraient l'être), vous pouvez utiliser mon plug-in:

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

Cela vous donne des champs supplémentaires pour personnaliser vos permaliens (comme vous pouvez avec les messages de blog), et vous donnera la possibilité de personnaliser les permaliens en fonction de la catégorie, auteur, mois, année, de type poste, etc.

Pour autant que je peux voir que je ne peux ajouter certains « produits » à elle, je ne peux pas ajouter une « archive » des produits. Ce que je suis en train de faire est d'ajouter un lien vers le menu pour accéder à une page qui énumère tous les produits. Toute idée comment faire?

vous devez attribuer une taxonomie au type poste « produits », puis ajouter le terme de taxonomie à l'un de vos menus personnalisés qui serait alors l'utilisateur vers une page archive de tous les produits sous la taxonomie utilisée.

Exemple J'ai un type de poste personnalisé appelé « Jobs » avec une taxonomie intitulée « positions » text alt

Si je voulais que tous les emplois avec le terme de taxonomie « Ouvertures actuelles » Je sélectionnerait et l'ajouter au menu. text alt

Si vous avez besoin d'avoir tous vos types de poste « produits » sur la page d'archive vous pouvez assigner une taxonomie mère à tous afin qu'ils puissent tous être répertoriés sur la page d'archives.

Je pense, il est une meilleure solution pour créer par courrier personnalisé de type un type de poste Archive et déplacer les messages archivés dans cette archive. Ajoutez également le post_type actuel au postmeta de cette nouvelle post_type pour undo cela. J'ai écris un plugin pour cela et actuel, vous pouvez le voir, sans feuilles de style, images et fichiers de langue, sur gist.github / 978690 .

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top