Es scheint eine dumme Frage zu sein. Aber ich kann es nicht herausfinden :(.
Ich muss zu Hause eine Schaltfläche anzeigen, die zur benutzerdefinierten Archiv-URL von post_type (archive- {post_type} .php) wechselt. Wie mache ich das?
custom-post-types
templates
ariefbayu
quelle
quelle
yoursite.com/type-slug
sofern Sie sie nicht explizit auf etwas anderes festlegen, z.yoursite.com/some-other-url
..Antworten:
Hi @Silent:
Es stellte sich heraus, dass es in WordPress 3.1 eine Funktion gibt, die genau das tut, was Sie wollen, und sie heißt
get_post_type_archive_link()
; So würden Sie es nennen (unter der Annahme eines benutzerdefinierten Beitragstyps mit dem Namen'product'
):Unten ist meine vorherige Antwort, bevor ich herausfand, dass WordPress tatsächlich eine Funktion für diesen Anwendungsfall eingebaut hat.
Vorherige Antwort:
Es sei denn, ich habe etwas im Kernquellcode für WordPress 3.1 übersehen. Ich glaube, Sie suchen nach einer Funktion,
get_archive_link()
die Sie wie folgt aufrufen könnten (unter der Annahme eines benutzerdefinierten Beitragstyps mit dem Namen'product'
):Und hier ist der Quellcode, den Sie in die
function.php
Datei Ihres Themas oder in eine.php
Datei für ein Plugin, das Sie möglicherweise schreiben, einfügen können :Ich habe über das Wochenende tatsächlich an dieser genauen Logik gearbeitet, obwohl ich noch nicht 100% sicher bin, ob die Reihenfolge der Logik für alle Anwendungsfälle, die WordPress möglicherweise sieht, allgemein korrekt ist, obwohl sie wahrscheinlich für eine bestimmte Site funktionieren wird.
Dies ist auch ein großartiger Vorschlag, WordPress über trac hinzuzufügen, von dem ich glaube, dass ich es später am Abend tun werde.
quelle
Wenn Sie den Post-Typ registrieren, können Sie eine Zeichenfolge als Slug mit dem Parameter "has_archive" übergeben und sicherstellen, dass Sie auch "rewrite" auf "true" oder "array", jedoch nicht auf "false" setzen. Dann lautet Ihre CPT-Archiv-URL " http://www.YOURDOMAIN.com" / has_archive_slug zum Beispiel
Wenn Sie beispielsweise register_post_type eingeben:
Dann lautet Ihre einzelne URL: http://www.YOURDOMAIN.com/product/postName und Ihre Archiv-URL: http://www.YOURDOMAIN.com/products/
quelle
has_archive
sei ein Boolescher Wert, aber jetzt weiß ich, dass er mit einer Zeichenfolge versehen werden kann, sodass mein einzelner benutzerdefinierter Post-Typrecipe
einen Plural-Slug haben kann/recipes/
'rewrite'
akzeptiert sie nur einen Booleschen Wert oder einen Array-Wert.'rewrite' => 'product',
Anstelle der von Ihnen aufgelisteten sollte es stattdessen sein'rewrite' => array( 'slug' => 'product' ),
.