¿Reescritura de URL de tipo de publicación personalizada?

29

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

Ahora también he configurado las entradas de mi blog en enlace permanente a / articles / * / para la estructura de enlace permanente. Esto significa que cuando voy a ver un proyecto de cartera, la URL cambia a / articles / projects / project-name /

Sé que debe haber una forma de volver a escribir los enlaces permanentes SOLAMENTE para el tipo de publicación personalizada de mis proyectos. Pero no estoy familiarizado con la sintaxis al declarar el slug de URL, agradecería cualquier ayuda que pueda obtener.

    
pregunta Jake 25.05.2012 - 17:47

2 respuestas

34

Cuando registras el tipo de publicación personalizada, debes especificar que la regla de reescritura no debe incluirse con la estructura de URL existente.

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

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

debería convertirse en esto:

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

Para obtener más información, consulte el argumento rewrite en la entrada de códice en register_post_type

edit: simplemente asegúrese de que, después de actualizar el código, elimine las reglas de reescritura visitando Configuración > Enlaces permanentes. De lo contrario, seguirá viendo los enlaces antiguos.

    
respondido por el 0x61696f 25.05.2012 - 18:29
12

Tuve este problema literalmente hace 3 días, luego tropecé con una serie en wp.tutsplus.com . Cambié mi propio código para acomodar mejor tu 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ías intercambiar lo que quieras en la URL almacenada en la variable $projects_structure , lo que hay es lo que acabé usando.

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

    
respondido por el cmegown 25.05.2012 - 18:18

Lea otras preguntas en las etiquetas