¿Reescritura de URL para Custom Post Type?
Configuré un custom post type para mis proyectos de portafolio. La URL principal para esto está ubicada en /projects/
Ahora también configuré la estructura de enlaces permanentes de las entradas de mi blog como /articles/*/
. Esto significa que cuando voy a ver un proyecto del portafolio, la URL cambia a /articles/projects/project-name/
Sé que debe haber una manera de reescribir los enlaces permanentes solamente para mi custom post type de proyectos. Pero no estoy familiarizado con la sintaxis para declarar el slug de la URL - ¡agradecería cualquier ayuda que pueda obtener!
Cuando registras un tipo de publicación personalizado, debes especificar que la regla de reescritura no debe anteponerse con la estructura de URL existente.
En resumen, esto significa que esta línea en tu llamada a register_post_type
:
'rewrite' => array('slug' => 'projects'),
debe convertirse en esto:
'rewrite' => array('slug' => 'projects','with_front' => false),
Para más información, consulta el argumento rewrite
en la entrada del codex sobre register_post_type
.
Nota: asegúrate de que, después de actualizar el código, vacíes las reglas de reescritura visitando Ajustes > Enlaces permanentes. De lo contrario, seguirás viendo los enlaces antiguos.

¡brillante, gracias! Solo para aclarar, ¿todo lo que necesito hacer para limpiar las reglas es ir a Configuración->Enlaces permanentes y hacer clic en "Guardar cambios", correcto?

Ni siquiera necesitas guardar cambios. Es suficiente con abrir la página de configuración de Enlaces permanentes (es decir, si tu archivo .htaccess tiene permisos de escritura. Si no, presiona guardar cambios y copia manualmente el código que devuelve en tu .htaccess)

Esto no parece funcionar para mí. Mis publicaciones de proyectos siguen yendo a example.com/projects/title-of-post
. También visité la página de Enlaces permanentes. ¿Qué podría estar causando esto? No hay reglas de reescritura en mi htaccess
.

¡Guau, gracias, esa era la parte que faltaba! Visitar la página de enlaces permanentes no funcionó, pero simplemente GUARDAR la configuración actual de enlaces permanentes funcionó :)

Seguí cambiando cosas sin actualizar las reglas de reescritura. ¡Gracias por el consejo!

Tuve este problema literalmente hace 3 días, luego me encontré con una serie en wp.tutsplus.com. Adapté mi propio código para ajustarme mejor a tu pregunta, pero esto es lo que terminé usando después de seguir la serie. También, ten en cuenta que esto no ha sido probado.
// define un tipo de publicación personalizado
function my_custom_post_type() {
register_post_type('Projects', array(
'label' => 'Proyectos','description' => '',
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'capability_type' => 'post',
'hierarchical' => false,
'publicly_queryable' => true,
'rewrite' => false,
'query_var' => true,
'has_archive' => true,
'supports' => array('title','editor','excerpt','trackbacks','custom-fields','comments','revisions','thumbnail','author','page-attributes'),
'taxonomies' => array('category','post_tag'),
// hay muchos más argumentos disponibles, pero los anteriores son suficientes por ahora
));
}
add_action('init', 'my_custom_post_type');
// reescribe el nombre del tipo de publicación personalizado
global $wp_rewrite;
$projects_structure = '/proyectos/%year%/%monthnum%/%day%/%projects%/';
$wp_rewrite->add_rewrite_tag("%projects%", '([^/]+)', "project=");
$wp_rewrite->add_permastruct('projects', $projects_structure, false);
Teóricamente, podrías cambiar lo que quieras en la URL almacenada en la variable $projects_structure
, lo que hay ahí es solo lo que terminé usando yo.
¡Buena suerte, y como siempre, asegúrate de volver y contarnos cómo te fue! :)

Las respuestas que solo contienen enlaces generalmente se consideran poco útiles ya que esos recursos pueden (y probablemente lo harán) dejar de existir en el futuro. Resume el contenido.
