Cambiar los permalinks solo para el tipo de publicación 'post'
Como muchos otros, me gustaría cambiar: dominio.com/titulo-del-post a dominio.com/blog/titulo-del-post pero solo para el tipo de publicación 'post', no para 'page' y especialmente no para los tipos de contenido personalizados (de los cuales mi tema parece tener muchos).
He investigado en este foro y otras fuentes y sé que la respuesta general parece ser:
Cuando registras tu tipo de publicación, el argumento with_front de rewrite debe ser false.
$args = array(
'rewrite' => array( 'with_front' => false ),
);
register_post_type( 'your-post-type', $args );
Desafortunadamente, esto no ayuda a los principiantes. No entendemos qué significan las instrucciones anteriores. Aparentemente deberíamos volver a registrar el tipo de publicación por defecto "post" (aunque el tipo de publicación "post" ya existe y está en uso), pero no sabemos cómo ni dónde hacerlo. Si alguien puede aclarar el procedimiento necesario para cambiar las URLs de las entradas del blog, estaría muy agradecido.

Encontré la respuesta aquí. Recuerda pasar por allí y darle un like.
Lo publicaré aquí, para las personas que tienen prisa.
Coloca esto en el archivo functions.php
:
function wp1482371_custom_post_type_args( $args, $post_type ) {
if ( $post_type == "post" ) {
$args['rewrite'] = array(
'slug' => 'blog'
);
}
return $args;
}
add_filter( 'register_post_type_args', 'wp1482371_custom_post_type_args', 20, 2 );
(Probado y funciona).
¡Recuerda!!
Recuerda A) Recuerda actualizar tus enlaces permanentes después (yendo a Ajustes >> Enlaces permanentes >> Haz clic en 'Guardar cambios' ).
Recuerda B) Si obtienes resultados extraños, intenta abrir una ventana de incógnito y ver si funciona allí. WordPress tiene una función que redirige a 'URL de coincidencia más cercana', que puede parecer confuso cuando juegas con los enlaces permanentes.
También podrías intentar encontrar un Plugin que lo haga. Yo no lo haría, ya que es bastante extenso agregar un plugin solo para ese propósito. Pero bueno, a veces puede ser satisfactorio disparar pájaros con cañones (ningún pájaro fue lastimado haciendo este chiste).

Una solución corta y bonita con una explicación razonable. Lamentablemente, no es lo que estoy buscando. Actualmente, utiliza la definición de "rewrite" para redirigir al enlace permanente antiguo ("/blog/post" -> "/post"). Sin embargo, quiero que mantenga la URL "/blog/post". ¿Cómo lograrías eso?

Para ampliar esto: Se puede solucionar añadiendo lo siguiente: add_filter('pre_post_link', 'my_change_post_link', 10, 3);
function my_change_post_link($permalink, $post, $leavename) {
if (get_post_type($post) == 'post') {
return "/blog" . $permalink;
}
return $permalink;
}

@Chaoste OMG, qué probabilidades hay de que necesitara esto justo al día siguiente. Busqué por todas partes - TYTY (¡Muchas gracias!)

¿Has probado esto?
function generate_rewrite_rules( $wp_rewrite ) {
$new_rules = array(
'(.?.+?)/page/?([0-9]{1,})/?$' => 'index.php?pagename=$matches[1]&paged=$matches[2]',
'blog/([^/]+)/?$' => 'index.php?post_type=post&name=$matches[1]',
'blog/[^/]+/attachment/([^/]+)/?$' => 'index.php?post_type=post&attachment=$matches[1]',
'blog/[^/]+/attachment/([^/]+)/trackback/?$' => 'index.php?post_type=post&attachment=$matches[1]&tb=1',
'blog/[^/]+/attachment/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?post_type=post&attachment=$matches[1]&feed=$matches[2]',
'blog/[^/]+/attachment/([^/]+)/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?post_type=post&attachment=$matches[1]&feed=$matches[2]',
'blog/[^/]+/attachment/([^/]+)/comment-page-([0-9]{1,})/?$' => 'index.php?post_type=post&attachment=$matches[1]&cpage=$matches[2]',
'blog/[^/]+/attachment/([^/]+)/embed/?$' => 'index.php?post_type=post&attachment=$matches[1]&embed=true',
'blog/[^/]+/embed/([^/]+)/?$' => 'index.php?post_type=post&attachment=$matches[1]&embed=true',
'blog/([^/]+)/embed/?$' => 'index.php?post_type=post&name=$matches[1]&embed=true',
'blog/[^/]+/([^/]+)/embed/?$' => 'index.php?post_type=post&attachment=$matches[1]&embed=true',
'blog/([^/]+)/trackback/?$' => 'index.php?post_type=post&name=$matches[1]&tb=1',
'blog/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?post_type=post&name=$matches[1]&feed=$matches[2]',
'blog/([^/]+)/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?post_type=post&name=$matches[1]&feed=$matches[2]',
'blog/page/([0-9]{1,})/?$' => 'index.php?post_type=post&paged=$matches[1]',
'blog/[^/]+/page/?([0-9]{1,})/?$' => 'index.php?post_type=post&name=$matches[1]&paged=$matches[2]',
'blog/([^/]+)/page/?([0-9]{1,})/?$' => 'index.php?post_type=post&name=$matches[1]&paged=$matches[2]',
'blog/([^/]+)/comment-page-([0-9]{1,})/?$' => 'index.php?post_type=post&name=$matches[1]&cpage=$matches[2]',
'blog/([^/]+)(/[0-9]+)?/?$' => 'index.php?post_type=post&name=$matches[1]&page=$matches[2]',
'blog/[^/]+/([^/]+)/?$' => 'index.php?post_type=post&attachment=$matches[1]',
'blog/[^/]+/([^/]+)/trackback/?$' => 'index.php?post_type=post&attachment=$matches[1]&tb=1',
'blog/[^/]+/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?post_type=post&attachment=$matches[1]&feed=$matches[2]',
'blog/[^/]+/([^/]+)/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?post_type=post&attachment=$matches[1]&feed=$matches[2]',
'blog/[^/]+/([^/]+)/comment-page-([0-9]{1,})/?$' => 'index.php?post_type=post&attachment=$matches[1]&cpage=$matches[2]',
);
$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
add_action( 'generate_rewrite_rules', 'generate_rewrite_rules' );
function update_post_link( $post_link, $id = 0 ) {
$post = get_post( $id );
if( is_object( $post ) && $post->post_type == 'post' ) {
return home_url( '/blog/' . $post->post_name );
}
return $post_link;
}
add_filter( 'post_link', 'update_post_link', 1, 3 );

// Coloca este código en el archivo function.php
add_action('init', 'my_new_default_post_type', 1);
function my_new_default_post_type()
{
register_post_type('post', array(
// 'labels' => $labels,
'public' => true,
//'show_in_admin_bar' => true,
'_builtin' => false,
'_edit_link' => 'post.php?post=%d',
'capability_type' => 'post',
'map_meta_cap' => true,
'hierarchical' => false,
'rewrite' => array('slug' => 'recursos/blog'), // Agrega tu slug aquí
'query_var' => false,
'supports' => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'post-formats'),
));
/* Si agregas el código anterior en function.php, la paginación de tu blog dejará de funcionar. Necesitarás agregar una regla de reescritura usando el plugin "Debug This" en la sección Query >> Rewrite y modificar tu rewrite_rule. */
add_rewrite_rule('(.?.+?)/page/?([0-9]{1,})/?$', 'index.php?pagename=recursos/blog&paged=$matches[1]', 'top');
}
