Cambiar el enlace permanente del tipo de entrada personalizada
Tengo una categoría de proyectos en mi tema (tipo de entrada personalizada).
Mi enlace actual es así:
El enlace que necesito es:
También tengo una página en:
Estoy confundido sobre cómo lograr esto.
¿Alguna sugerencia sobre las reglas de reescritura?
Puedes lograrlo modificando el registro del CPT. Aquí hay un ejemplo de código:
// Modificar el registro del tipo de entrada personalizada
function modify_project_post_type() {
register_post_type('project',
array(
'rewrite' => array(
'slug' => 'brands', // Cambia 'project' a 'brands'
'with_front' => false
),
// ... resto de los argumentos del registro
)
);
}
add_action('init', 'modify_project_post_type');
// No olvides actualizar los enlaces permanentes después
// Ir a Ajustes > Enlaces permanentes y hacer clic en "Guardar cambios"

Puedes usar el argumento rewrite en register_post_type. Puedes tener un nombre de tipo de entrada personalizado diferente al slug de rewrite. Por ejemplo, aquí hay un código de muestra con el tipo de entrada personalizado "project" y muestra páginas con http://shaowtriger.com/brands/naim/
Observa el rewrite en $args
add_action( 'init', 'codex_brand_init' );
function codex_brand_init() {
$labels = array(
'name' => _x( 'Marcas', 'post type general name', 'your-plugin-textdomain' ),
'singular_name' => _x( 'Marca', 'post type singular name', 'your-plugin-textdomain' ),
'menu_name' => _x( 'Marcas', 'admin menu', 'your-plugin-textdomain' ),
'name_admin_bar' => _x( 'Marca', 'add new on admin bar', 'your-plugin-textdomain' ),
'add_new' => _x( 'Añadir nueva', 'brand', 'your-plugin-textdomain' ),
'add_new_item' => __( 'Añadir nueva marca', 'your-plugin-textdomain' ),
'new_item' => __( 'Nueva marca', 'your-plugin-textdomain' ),
'edit_item' => __( 'Editar marca', 'your-plugin-textdomain' ),
'view_item' => __( 'Ver marca', 'your-plugin-textdomain' ),
'all_items' => __( 'Todas las marcas', 'your-plugin-textdomain' ),
'search_items' => __( 'Buscar marcas', 'your-plugin-textdomain' ),
'parent_item_colon' => __( 'Marcas superiores:', 'your-plugin-textdomain' ),
'not_found' => __( 'No se encontraron marcas.', 'your-plugin-textdomain' ),
'not_found_in_trash' => __( 'No se encontraron marcas en la papelera.', 'your-plugin-textdomain' )
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'brands' ),
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => null,
'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' )
);
register_post_type( 'project', $args );
flush_rewrite_rules();
}
Aunque tener solo la página base http://shaowtriger.com/brands/
no debería interferir con el slug y la funcionalidad del CPT, tener subpáginas en la página de marcas no funcionará porque entonces WordPress buscará un elemento del CPT en lugar de la subpágina.

ya tengo esto en mi functions.php con Projects en lugar de Brands... he cambiado ese slug pero no está funcionando

También necesitarás flush_rewrite_rules();
y luego visitar la página de configuración de enlaces permanentes nuevamente.

Puedes usarlo cuando registres el CPT. Actualicé mi código anterior y agregué flush_rewrite_rules();
. Puedes añadir esto en tu función de manera similar.

Nunca mantengas flush_rewrite_rules();
Es una función muy costosa de usar. Úsala una sola vez y elimínala, o enlázala a una acción que se ejecute una sola vez, como cuando se activa un tema o un plugin.

Si estás familiarizado con la interfaz de línea de comandos, puedes instalar wp-cli y usar el comando wp rewrite flush

¿Qué pasa si quisiera cambiar el permalink aún más a http://shaowtriger.com/brands/2018/naim/
?
Es decir: /brands/%year%/%postname%
?
Encontré esto: https://wordpress.stackexchange.com/questions/216337/change-permalink-structure-for-custom-post-type/216470#216470
Pero de alguna manera esto nunca tiene efecto. ¿Alguien conoce un ejemplo con un poco más de código, por ejemplo que incluya el registro del post como arriba? Esto tal vez me ayudaría un poco...
