web-dev-qa-db-ger.com

404 für eine benutzerdefinierte Taxonomie?

Warum bekomme ich 404 für meine benutzerdefinierte Taxonomie?

add_action('init', 'custom_taxonomy_flush_rewrite');
function custom_taxonomy_flush_rewrite() {
    global $wp_rewrite;
    $wp_rewrite->flush_rules();
}

add_action('init', 'create_publication_categories');
function create_publication_categories() {
    $args = array(
        'label' => __('Categories'),
        'has_archive' =>  true,
        'hierarchical' => true,
        'rewrite' => array(
            'slug' => 'topics',
            'with_front' => false
        ),
    );
    $postTypes = array(
        'publication'
    );
    $taxonomy = 'publication';
    register_taxonomy($taxonomy, $postTypes, $args);
}

Also habe ich die Vorlage taxonomy-publication.php, aber ich bekomme immer noch 404.

Ich habe den Permalink nach this zurückgesetzt. Und andere Antworten wie das und das .

Aber ich bekomme immer noch 404. Irgendwelche Ideen, die ich vermisst habe?

1
laukok

Sie verwenden denselben Slug publication für die benutzerdefinierte Taxonomie und den benutzerdefinierten Beitragstyp. Slug sollte unique sein.


Eine andere Sache (nicht im Zusammenhang mit 404) ist der flush_rules. Wie Sie lesen können, ist hier Flush am Haken init eine schlechte Idee.

Wichtig :

  • Das Löschen der Umschreiberegeln ist eine kostspielige Operation. Es gibt Tutorials und Beispiele, in denen vorgeschlagen wird, sie auf dem Hook init auszuführen. Dies ist eine schlechte Praxis . Es sollte entweder beim 'Shutdown'-Hook oder bei der Plugin/Theme (De) Aktivierung ausgeführt werden.
  • Regeln einmal leeren (es ist besser, den Status als Option anstelle von activation oder deactivation zu speichern, da sie auf MultiSite unbrauchbar sind) oder wenn Sie wissen, dass die Umschreibregeln geändert werden müssen. Tun Sie es nicht an einem Haken, der routinemäßig ausgelöst wird . Weitere Informationen finden Sie in den Kommentaren zu WP Ingenieurbeitrag: Benutzerdefinierter Beitragstyp und Permalink
  • Stellen Sie sicher, dass benutzerdefinierte Beitragstypen und Taxonomien ordnungsgemäß registriert sind, bevor Schreibregeln gelöscht werden, insbesondere während der Plugin-Aktivierung: Aktivierungs-Checkliste für WordPress-Plugin-Entwickler (nicht verfügbar)

Beispiel

Flush-Regeln für die Themenaktivierung:

add_action( 'after_switch_theme', 'custom_taxonomy_flush_rewrite' );
function custom_taxonomy_flush_rewrite() {
    global $wp_rewrite;
    $wp_rewrite->flush_rules();
}
3
nmr