it-swarm.com.de

Archivseite für Beitragstyp funktioniert nicht

Ich habe einen benutzerdefinierten Beitragstyp mithilfe der Benutzeroberfläche für benutzerdefinierten Beitragstyp registriert und eine Archivseite mit dem Namen archive-recipe.php erstellt. 'Recipe' ist der Name meines benutzerdefinierten Beitragstyps. Aber es funktioniert nicht, stattdessen wird der Standard archive.php verwendet. Ich habe den has-archive auf true gesetzt, aber es funktioniert immer noch nicht. Wie kann man das beheben?

Hier ist der Code:

register_post_type(
    'recipe', array(
'label' => 'Recipe',
    'description' => 'This is a Recipe Custom Post Type',
    'public' => true,
    'show_ui' => true,
    'show_in_menu' => true,
    'capability_type' => 'post',
    'hierarchical' => true,
    'rewrite' => array('slug' => ''),
    'query_var' => true,
    'has_archive' => true,
    'exclude_from_search' => false,
    'supports' => array('title','editor','excerpt','trackbacks','custom-fields','comments','revisions','thumbnail','author','page-attributes',),
    'labels' => array (
          'name' => 'Recipe',
          'singular_name' => 'Recipe',
          'menu_name' => 'Recipe',
          'add_new' => 'Add Recipe',
          'add_new_item' => 'Add New Recipe',
          'edit' => 'Edit',
          'edit_item' => 'Edit Recipe',
          'new_item' => 'New Recipe',
          'view' => 'View Recipe',
          'view_item' => 'View Recipe',
          'search_items' => 'Search Recipe',
          'not_found' => 'No Recipe Found',
          'not_found_in_trash' => 'No Recipe Found in Trash',
          'parent' => 'Parent Recipe',
    ),
    )
);
2
markyeoj

In Anbetracht der Standardregistrierung sollten Sie Folgendes haben:

  • Ein Beitragstyp mit dem Namen "Rezept"
  • Ein Rezeptpost-Archiv unter example.com/recipe/
  • Rezeptbeiträge mit URLs in der Form example.com/recipe/helloworldrecipe/
  • Eine Vorlage archive-recipe.php
  • Eine Vorlage single-recipe.php

Ich sehe dies jedoch in Ihrem Registrierungscode:

'rewrite' => array('slug' => ''),

Dies legt nahe, dass Sie versuchen, das Präfix "Rezept" aus den Rezept-URLs zu entfernen. Das Ergebnis davon ist, dass Ihr Rezeptpostarchiv jetzt ist:

site URL + ''

Welches ist bereits von der Homepage übernommen, so dass Ihr Beitragsarchiv unmöglich zu erreichen ist.

Außerdem macht es nicht das, was Sie denken. Sie können einen benutzerdefinierten Beitragstyp nicht so ändern, dass der Teil '/ recipe /' nicht in den URLs enthalten ist, indem Sie nur die Parameter register_post_type rewrite verwenden. Sie müssen andere Änderungen vornehmen, die möglicherweise auch Fehler verursachen, die die Website beschädigen können.

Wenn Sie zum Beispiel eine Seite mit dem Namen "Kürbis" und ein Rezept mit dem Namen "Kürbis" haben, wie kann WordPress dann wissen, welche Seite Sie laden müssen, wenn Sie example.com/pumpkin besuchen? Tut es nicht, also wird es für die Umschreiberegel gehen, die es zuerst findet.

Wenn Sie also ein Rezept für Torte haben, aber keine Seite mit dem Namen Torte vorhanden ist und die Seite gesucht und nicht gefunden wird, erhalten Sie kein Rezept, sondern eine 404.

Deshalb rate ich Ihnen dringend, Ihren Versuch abzubrechen. Es macht Ihre URLs weniger sinnvoll und trotz des Unsinns, den SEO "Experten" sagen, ist es wahrscheinlicher, dass es Ihren Suchmaschinenrankings schadet, wenn es überhaupt etwas tut (es hilft Ihnen höchstwahrscheinlich überhaupt nichts).

Entfernen Sie also den Umschreibeparameter und speichern Sie Ihre Permalinks erneut

Aktualisieren

Nachdem Sie diesen Link gepostet haben:

http://seemynewwebsite.com/g2bm/recipecategory/appetizers/

Es ist jetzt klar, dass Sie eine Taxonomie laden und ein Beitragstyparchiv erwarten. Eine Taxonomie ist kein Beitragstyp, wie Sie hier sehen können, sie haben nicht dieselben Fallbacks:

enter image description here

Außerdem ergibt es keinen Sinn, dass sie es tun würden. Welche Archivvorlage für den Beitragstyp wird beispielsweise in den folgenden Szenarien verwendet:

  • Eine Taxonomie, die zwei Arten von Beitragstypen enthält: Personen und Standorte. Würde es auf archive-location.php oder archive-people.php zurückgreifen?
  • Eine Benutzertaxonomie, die sich auf Benutzer bezieht, nicht auf Posts

Verwenden Sie stattdessen eine Taxonomievorlage für Ihre Taxonomie und keine Archivvorlage für den Beitragstyp. In diesem Fall taxonomy-recipecategry.php

11
Tom J Nowell