Erste Lösung:
ich hier eine Lösung gefunden: http://gabrieleromanato.name/wordpress-fix-the-404-error-on-custom-post-types/
Hier ist, was Sie tun müssen, um es (zitiert von Seite oben) an die Arbeit:
/% category% /% post% Änderungen sparen:
Gehen Sie zu Einstellungen → Permalinks und Ihre aktuelle Struktur ändern. Stellen Sie Ihre ursprünglichen Permalink Einstellungen wieder her. Änderungen speichern.
Zweite Lösung:
Stellt sich heraus, es eine Funktion in Wordpress ist 3.1, die genau das tut, was Sie wollen, und es ist get_post_type_archive_link genannt(); hier ist, wie Sie es nennen würde (eine benutzerdefinierte Post-Typ namens ‚Produkt‘ vorausgesetzt):
<a href="<?php echo get_post_type_archive_link('product'); ?>">Products</a>
Unter meiner vorherigen Antwort ist, bevor ich, dass Wordpress entdeckt in der Tat eine Funktion eingebaut für diesen Anwendungsfall hatte.
Prior Antwort:
Wenn ich etwas in dem Kern-Quellcode für Wordpress übersah 3.1 Ich denke, Sie für eine Funktion wie get_archive_link suchen(), die Sie so nennen könnten (einen benutzerdefinierten Post-Typ namens der Annahme ‚Produkt ‚):
<a href="<?php echo get_archive_link('product'); ?>">Products</a>
und hier ist der Quellcode, die Sie Ihr Thema ist in function.php Datei oder in einer php-Datei für ein Plugin platzieren können Sie mit dem Schreiben werden:
if (!function_exists('get_archive_link')) {
function get_archive_link($post_type) {
global $wp_post_types;
$archive_link = false;
if (isset($wp_post_types[$post_type])) {
$wp_post_type = $wp_post_types[$post_type];
if ($wp_post_type->publicly_queryable)
if ($wp_post_type->has_archive && $wp_post_type->has_archive!==true)
$slug = $wp_post_type->has_archive;
else if (isset($wp_post_type->rewrite['slug']))
$slug = $wp_post_type->rewrite['slug'];
else
$slug = $post_type;
$archive_link = get_option('siteurl') . "/{$slug}/";
}
return apply_filters('archive_link', $archive_link, $post_type);
}
}
Ich habe tatsächlich über das Wochenende an dieser genauen Logik gearbeitet, obwohl ich mir noch nicht 100% sicher bin, dass die Reihenfolge der Logik generisch korrekt ist in allen Anwendungsfällen, die WordPress sehen könnte, obwohl es wahrscheinlich für eine bestimmte Site funktioniert.
Dies ist auch eine großartige Sache, um WordPress über trac hinzugefügt werden, was ich denke, ich werde später am Abend tun.
mir bitte zeigen Sie Ihren Code? –
Ich habe dies auf meinen Index des Themas gesetzt, versucht, viele Posts und Seiten zu durchsuchen, die es vielleicht etwas zurückgeben kann, aber nur falsch: var_dump (get_post_type_archive_link ('video')); –
wird false zurückgegeben, wenn post_type nicht existiert oder post_type kein Archiv hat. –