it-swarm.com.de

Hinzufügen eines Archivs von Beiträgen zum Navigationsmenü in WordPress 3.0

Hallo zusammen, ich spiele mit WordPress 3.0 und zwei (2) der neuen Funktionen, Benutzerdefinierte Beitragstypen und Menü-Editor .

Ich habe zunächst einen neuen Beitragstyp mit dem Namen "products" erstellt. Wie Sie bereits vermutet haben, enthält dieser Artikel eine Liste.

Ich verwende die Moor-Standardvorlage und erstelle ein neues Menü, um die Top-Navigation zu ersetzen. Soweit ich sehen kann, kann ich nur bestimmte "Produkte" hinzufügen, ich kann kein "Archiv" von Produkten hinzufügen. Ich versuche, einen Link zum Menü hinzuzufügen, um zu einer Seite zu gelangen, auf der ALLE Produkte aufgelistet sind.

Irgendeine Idee, wie das geht?

10
dotty

@dotty Wie Sie anhand dieses Trac-Tickets sehen können: Es sollten Indexseiten für benutzerdefinierte Beitragstypen vorhanden sein so war dies offensichtlich noch nicht erforderlich adressiert in WordPress Core.

Sowohl @John P Bloch als auch @Chris_O bieten Ihnen gute Alternativen. Ich werde dir eine dritte geben.

Eine "Produkte" Seite

Erstellen Sie zunächst einPagefür Ihren benutzerdefinierten Beitragstyp und nennen Sie es "Produkte". Das wird es die folgende URL geben:

http: //example.php/products/

A "Produktliste" Shortcode

Erstellen Sie als Nächstes einen Shortcode , den Sie in Ihre "Produkte" -Seite einbetten können. In meinem Beispiel habe ich es [product-list] genannt. Hier ist ein Screenshot davon, wie die Verwendung aussehen würde:

 A Product's Page that uses a Shortcode to display a list of Products in WordPress 
(Quelle: mikeschinkel.com )

Beachten Sie, dass ein solcher Shortcode ein großartiger Kandidat wäre, um viele optionale Funktionen hinzuzufügen und ihn für viele verschiedene Beitragstypen nutzbar zu machen, aber im Interesse der Klarheit habe ich so ziemlich alles hartcodiert. Sie können es natürlich als Ausgangspunkt für Ihren eigenen Shortcode verwenden:

<?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);
  }
}

Eine post-product.php Theme Template Datei

Als Nächstes müssen Sie eine Designvorlagendatei erstellen, in der nur ein Produkt angezeigt wird. Die Funktion, die den Shortcode implementiert, nennt die Vorlagendatei post-product.php und hier ist ein guter Ausgangspunkt:

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

Fügen Sie die Menüoption hinzu

Zuletzt möchten Sie die Menüoption hinzufügen. Dies ist sehr einfach, wie Sie aus diesem Screenshot ersehen können (im Folgenden wird davon ausgegangen, dass Sie zuvor nichts mit WordPress 3.0-Menüs getan haben und ein Design verwenden, das WordPress 3.0-Menüs wie Twenty Ten unterstützt):

  1. Wählen Sie den Menüpunkt im Admin-Menü.
  2. Klicken Sie auf "+" , um ein neues Menü hinzuzufügen.
  3. Geben Sie Ihren Menünamen ein, wie Sie möchten.
  4. Klicken Sie auf die Schaltfläche "Menü erstellen" (der Screenshot zeigt "Menü speichern", aber beim Hinzufügen wird "Menü erstellen" angezeigt.)
  5. Wählen Sie Ihr neues Menü als "Primäre Navigation".
  6. Wählen Sie Ihre Seite "Produkte" aus.
  7. Klicken Sie auf "Zum Menü hinzufügen"
  8. Klicken Sie auf "Menü speichern"

 Adding a Products Page Menu Option to a WordPress Site 
(Quelle: mikeschinkel.com )

Endlich die Ausgabe

Und so könnte eine einfache Produktliste aussehen:

 A List of Products using a Custom Post Type in WordPress 
(Quelle: mikeschinkel.com )

12
MikeSchinkel

Dies wird von WordPress nicht nativ unterstützt. Sie könnten dies jedoch zu Ihrer functions.php-Datei hinzufügen und es würde funktionieren:

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

Das gibt Ihnen example.com/products/ als eine Liste von Produkten. Von dort aus fügen Sie einfach einen benutzerdefinierten Link zu Ihrem Menü hinzu.

Wenn Sie jedoch eine echte Archivierung (nach Monat, Jahr usw.) mit Feeds wünschen, benötigen Sie detaillierteren Code. Wenn Ihre "Produkte" ein nicht hierarchischer Beitragstyp sind (wie es scheint), können Sie mein Plugin verwenden:

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

Dadurch erhalten Sie zusätzliche Felder zum Anpassen Ihrer Permalinks (wie bei Blog-Posts) und können Permalinks basierend auf Kategorie, Autor, Monat, Jahr, Beitragstyp usw. anpassen.

4
John P Bloch

Ich denke, es ist eine bessere Lösung, über einen benutzerdefinierten Beitragstyp ein Beitragstyp-Archiv zu erstellen und die archivierten Beiträge in dieses Archiv zu verschieben. Fügen Sie auch den aktuellen post_type zum Postmeta dieses neuen post_type hinzu, um dies rückgängig zu machen. Ich habe ein Plugin dafür geschrieben und aktuell kann man das ohne Stylesheets, Bilder und Sprachdatei auf Gist.github/978690 sehen.

0
bueltge
Soweit ich sehen kann, kann ich nur bestimmte "Produkte" hinzufügen, ein "Archiv" von Produkten kann ich nicht hinzufügen. Ich versuche, einen Link zum Menü hinzuzufügen, um zu einer Seite zu gelangen, auf der ALLE Produkte aufgelistet sind. Irgendeine Idee, wie das geht?

Sie müssten dem Beitragstyp "Produkte" eine Taxonomie zuweisen und dann den Taxonomiebegriff zu einem Ihrer benutzerdefinierten Menüs hinzufügen, wodurch der Benutzer zu einer Archivseite aller Produkte unter der verwendeten Taxonomie weitergeleitet wird.

Beispiel Ich habe einen benutzerdefinierten Beitragstyp namens "Jobs" mit einer Taxonomie mit der Bezeichnung "Positionen" alt text

Wenn ich alle Jobs mit dem Taxonomiebegriff "Aktuelle Stellenangebote" haben möchte, würde ich ihn auswählen und zum Menü hinzufügen. alt text

Wenn Sie alle Post-Typen Ihrer "Produkte" auf der Archivseite haben möchten, können Sie allen eine übergeordnete Taxonomie zuweisen, damit sie alle auf der Archivseite aufgelistet werden.

0
Chris_O