web-dev-qa-db-ja.com

投稿タイプのアーカイブページが機能しない

カスタム投稿タイプUIを使用してカスタム投稿タイプを登録し、アーカイブページを作成してarchive-recipe.phpという名前を付けました。 'recipe'はカスタム投稿タイプ名です。しかし動作していません、代わりにデフォルトのarchive.phpを使用します。 has-archivetrueに設定しましたが、まだ動作しません。それを修正するには?

これがコードです:

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

標準登録を考えると、次のものが必要です。

  • 'recipe'という名前の投稿タイプ
  • Example.com/recipe/にあるレシピ投稿アーカイブ
  • Example.com/recipe/helloworldrecipe/という形式のURLを使ったレシピ投稿
  • テンプレートarchive-recipe.php
  • テンプレートsingle-recipe.php

しかし、私はあなたの登録コードでこれを見ます:

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

これはあなたがやろうとしていることがレシピURLから 'recipe'プレフィックスを削除することであることを示唆しています。これの結果はあなたのレシピ投稿アーカイブが今であるということです:

site URL + ''

これはすでにホームページで使用されているので、あなたの投稿アーカイブはアクセスできない。

これに加えて、それはあなたがそれがすると思うことを実際には行いません。 register_post_type書き換えパラメータを単独で使用して、カスタム投稿タイプを変更してそのURLに '/ recipe /'部分を含めないようにすることはできません。あなたは他の変更を加える必要があります、そしてそれはまた潜在的にサイト破壊のバグを導入します。

たとえば、 'pumpkin'というページと 'pumpkin'というレシピがある場合、WordPressはexample.com/pumpkinにアクセスしたときにどれをロードすればよいかを知ることができますか?そうではないので、最初に見つかった書き換え規則のどちらにでも行きます。

あなたがパイのレシピを持っていても、パイと呼ばれるページがなく、それがそのページを探しても見つからない場合は、レシピを受け取ってはいけません、あなたは404を得ます。

だから私はあなたがあなたの試みを放棄することを強く勧めます。それはあなたのURLが意味をなさないようにします、そしてナンセンスなSEO「専門家」が言うにもかかわらず、それが全くしないなら(あなたを助けるために絶対に何もしない)あなたの検索エンジンのランキングを助けないことは害があるようです。

そのため、rewriteパラメータを削除して、パーマリンクを再保存してください。

更新

このリンクを投稿した後:

http://seemyne​​wwebsite.com/g2bm/recipecategory/appetizers/ /

分類法をロードし、投稿タイプのアーカイブを期待していることは明らかです。ここでわかるように、分類は投稿タイプではありません。これらは同じフォールバックを共有していません。

enter image description here

さらにそれが彼らがするのは意味がありません。たとえば、次のシナリオではどの投稿タイプのアーカイブテンプレートを使用するのか。

  • 2種類の投稿タイプ、人と場所を含む分類法。 archive-location.phpまたはarchive-people.phpにフォールバックしますか?
  • 投稿ではなくユーザーを指すユーザー分類法

代わりに、ポストタイプアーカイブテンプレートではなく、分類法に分類法テンプレートを使用してください。この場合taxonomy-recipecategry.php

11
Tom J Nowell