Post arquivar página de arquivo não funciona

2

Eu registrei um tipo de postagem personalizado usando a UI do tipo de postagem personalizada e criei uma página de arquivo e nomeie-a como archive-recipe.php, "receita" é o nome do meu nome de postagem personalizado. Mas não está funcionando, em vez disso, está usando o padrão archive.php . Eu defino o has-archive para true , mas ainda não está funcionando. Como consertar isso?

Este é o código:

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',
    ),
    )
);
    
por markyeoj 15.05.2013 / 14:57

2 respostas

11

Dado o registro padrão, você deve ter o seguinte:

  • Um tipo de postagem com o nome "receita"
  • Um arquivo de postagem de receita em example.com/recipe /
  • Publicações de receita com URLs que usam o formato example.com/recipe/helloworldrecipe /
  • Um modelo archive-recipe.php
  • Um modelo single-recipe.php

No entanto, vejo isso no seu código de registro:

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

Isso sugere que o que você está tentando fazer é remover o prefixo "receita" dos URLs de receita. O resultado disso é que seu arquivo de postagem de receita agora é:

site URL + ''

O que já é obtido pela página inicial, pelo que é impossível obter o seu arquivo de mensagens.

Além disso, ele não faz realmente o que você acha que faz. Você não pode alterar um tipo de postagem personalizada para não ter a parte "/ recipe /" em seus URLs usando apenas os parâmetros register_post_type de reconfiguração. Você precisa fazer outras alterações, que também introduzem possíveis bugs de quebra de site.

Por exemplo, se você tem uma página chamada 'abóbora' e uma receita chamada 'abóbora', como o WordPress saberá o que carregar ao visitar example.com/pumpkin? Não, por isso vai para qualquer regra de reescrita que encontrar primeiro.

Então, se você tem uma receita para pizza, mas não há uma página chamada pizza, e ela procura a página e não a encontra, você não obtém a receita, você obtém uma 404.

Portanto, aconselho vivamente que abandone a sua tentativa. faz com que seus URLs façam menos sentido, e apesar dos absurdos "especialistas" de SEO, é mais provável que ele prejudique, não ajude os mecanismos de busca se ele fizer alguma coisa (provavelmente não fará absolutamente nada para ajudá-lo).

Portanto, remova o parâmetro de reconfiguração e salve seus links permanentes

Atualizar

Depois de postar este link:

enlace

Agora está claro que você está carregando uma taxonomia e esperando um arquivo de tipo de postagem. Uma taxonomia não é do tipo post, como você pode ver aqui, eles não compartilham os mesmos fallbacks:

Além do mais, não faz sentido que eles façam. Por exemplo, qual modelo de arquivo de tipo de postagem seria usado nesses cenários:

  • Uma taxonomia que contém dois tipos de tipo de postagem, pessoas e locais. Voltaria a archive-location.php ou archive-people.php?
  • Uma taxonomia do usuário, referente a usuários, não postagens

Então, use um modelo de taxonomia para sua taxonomia, não um modelo de arquivo de tipo de postagem. Neste caso taxonomy-recipecategry.php

    
por Tom J Nowell 15.05.2013 / 15:53
-2

Adicione este filtro ao seu arquivo functions.php:

function namespace_add_custom_types( $query ) {
  if( is_category() || is_tag() && empty( $query->query_vars['suppress_filters'] ) ) {
    $query->set( 'post_type', array(
     'post', 'nav_menu_item', 'your-custom-post-type-here'
        ));
      return $query;
    }
}
add_filter( 'pre_get_posts', 'namespace_add_custom_types' );