Tipo de publicación personalizada ¿Reescritura de URL?

32

Configuré un tipo de publicación personalizada para mis proyectos de cartera. La URL principal para esto se encuentra en/projects/

Ahora también configuré mis enlaces de blog /articles/*/para la estructura de enlaces permanentes. Esto significa que cuando voy a ver un proyecto de cartera, la URL cambia a/articles/projects/project-name/

Sé que debe haber una manera de reescribir enlaces permanentes solo para el tipo de publicación personalizada de mis proyectos. Pero no estoy familiarizado con la sintaxis para declarar el slug de URL, ¡agradecería cualquier ayuda que pueda obtener!

Jake
fuente

Respuestas:

42

Cuando registra el tipo de publicación personalizada, debe especificar que la regla de reescritura no debe anteponerse a la estructura de URL existente.

En resumen, esto significa que esta línea en su register_post_typellamada:

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

debería convertirse en esto:

'rewrite' => array('slug' => 'projects','with_front' => false),

Para obtener más información, consulte el rewriteargumento de la entrada del códice enregister_post_type

editar: solo asegúrese de que, después de actualizar el código, limpie las reglas de reescritura visitando Configuración> Enlaces permanentes. De lo contrario, aún verá los enlaces antiguos.

0x61696f
fuente
brillante gracias! Solo para aclarar, todo lo que necesito hacer para eliminar las reglas es ir a la página Configuración-> Enlaces permanentes y presionar "Guardar cambios", ¿correcto?
Jake
44
Ni siquiera necesita guardar los cambios. Basta con abrir la página de configuración de Permalinks (es decir, si su archivo .htaccess es editable. Si no, presione guardar cambios y copie manualmente el código que devuelve en su .htaccess)
0x61696f
2
Esto no parece funcionar para mí. Mis publicaciones de proyectos todavía van a example.com/projects/title-of-post. También visité la página de enlaces permanentes. ¿Qué podría estar causando esto? No hay ninguna regla de reescritura en mi htaccess.
Desi
Wow, gracias, esa fue la parte que faltaba! Visitar la página de enlaces permanentes no funcionó, pero simplemente GUARDAR la configuración actual de
enlaces
Seguí cambiando cosas sin enjuagar las reglas de reescritura. ¡Gracias por el consejo!
Tan-007
15

Tuve este problema literalmente hace 3 días, luego me topé con una serie en wp.tutsplus.com . Cambié mi propio código para acomodar mejor su pregunta, pero esto es lo que terminé después de seguir la serie. Además, tenga en cuenta que esto no se ha probado.

// sets custom post type
function my_custom_post_type() {
    register_post_type('Projects', array(   
       'label' => 'Projects','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'),
       // there are a lot more available arguments, but the above is plenty for now
    ));
}

add_action('init', 'my_custom_post_type');

// rewrites custom post type name
global $wp_rewrite;
$projects_structure = '/projects/%year%/%monthnum%/%day%/%projects%/';
$wp_rewrite->add_rewrite_tag("%projects%", '([^/]+)', "project=");
$wp_rewrite->add_permastruct('projects', $projects_structure, false);

Teóricamente, podría cambiar lo que quiera en la URL almacenada en la $projects_structurevariable, lo que hay es lo que terminé usando.

Buena suerte y, como siempre, ¡asegúrate de volver y contarnos cómo funcionó! :)

cmegown
fuente
1
Las respuestas que se componen de 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.
chrisguitarguy
Justo, trabajaré en una revisión adecuada.
cmegown
11
Allí, ahora mi respuesta contiene un código similar al código de trabajo que tengo en un entorno de producción que reescribe con éxito una URL de tipo de publicación personalizada. ¡Espero que sea más útil!
cmegown