La página de archivo de tipo de publicación no funciona

2

Registré un tipo de publicación personalizada utilizando la IU de tipo de publicación personalizada, creé una página de archivo y la nombré archive-recipe.php, "receta" es mi nombre de tipo de publicación personalizado. Pero no funciona, en su lugar, utiliza el valor predeterminado archive.php . Configuré el has-archive a true pero todavía no funciona. ¿Cómo arreglar eso?

Aquí está el 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',
    ),
    )
);
    
pregunta markyeoj 15.05.2013 - 14:57

2 respuestas

11

Dado el registro estándar, debe tener lo siguiente:

  • Un tipo de publicación con el nombre 'receta'
  • Un archivo de recetas en example.com/recipe/
  • Publicaciones de recetas con urls que toman la forma example.com/recipe/helloworldrecipe/
  • Una plantilla archive-recipe.php
  • Una plantilla single-recipe.php

Sin embargo, veo esto en su código de registro:

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

Esto sugiere que lo que intentas hacer es eliminar el prefijo "receta" de las URL de recetas. El resultado de esto es que su archivo de recetas es ahora:

site URL + ''

Lo que ya está en la página de inicio, por lo que es imposible acceder a su archivo de publicación.

Además de esto, en realidad no hace lo que crees que hace. No puede cambiar un tipo de publicación personalizada para no tener la parte '/ recipe /' en sus URL utilizando solo los parámetros de reescritura de register_post_type. Debe realizar otros cambios, que también introducen posibles errores de ruptura de sitios.

Por ejemplo, si tiene una página llamada 'calabaza' y una receta llamada 'calabaza', ¿cómo debe saber WordPress qué cargar al visitar example.com/pumpkin? No lo hace, así que irá a la regla de reescritura que encuentre primero.

Así que si tienes una receta para una tarta, pero no hay una página llamada tarta, y busca la página y no la encuentra, no obtienes la receta, obtienes una 404.

Por lo tanto, te aconsejo encarecidamente que abandones tu intento. hace que sus URL tengan menos sentido y, a pesar de que los "expertos" del SEO sin sentido dicen, es más probable que perjudiquen, no que ayuden a su posicionamiento en los motores de búsqueda si hace algo en absoluto (es muy probable que no haga nada para ayudarlo). p>

Así que elimine el parámetro de reescritura y vuelva a guardar sus enlaces permanentes

Actualizar

Después de que hayas publicado este enlace:

enlace

Ahora está claro que está cargando una taxonomía y esperando un archivo de tipo de publicación. Una taxonomía no es un tipo de publicación, como puede ver aquí, no comparten las mismas alternativas:

Además, no tiene sentido que lo hagan. Por ejemplo, qué plantilla de archivo de tipo de publicación se usaría en estos escenarios:

  • Una taxonomía que contiene 2 tipos de tipo de publicación, personas y ubicaciones. ¿Volvería a archive-location.php o archive-people.php?
  • Una taxonomía de usuario, referida a usuarios, no a publicaciones

En su lugar, use una plantilla de taxonomía para su taxonomía, no una plantilla de archivo de tipo de publicación. En este caso taxonomy-recipecategry.php

    
respondido por el Tom J Nowell 15.05.2013 - 15:53
-2

Agregue este filtro a su archivo 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' );
    
respondido por el Александр Подгорных 09.03.2015 - 13:37

Lea otras preguntas en las etiquetas