Modificare i permalink solo per il post type 'post'
Come molti altri, vorrei cambiare: dominio.com/titolo-articolo in dominio.com/blog/titolo-articolo ma solo per il post type 'post', non per 'page' e soprattutto non per i custom post types (di cui il mio tema sembra averne molti).
Ho fatto ricerche su questo forum e altre fonti e so che la risposta generale sembra essere:
Quando registri il tuo post type, l'argomento with_front di rewrite dovrebbe essere false.
$args = array(
'rewrite' => array( 'with_front' => false ),
);
register_post_type( 'your-post-type', $args );
Sfortunatamente, questo non aiuta i principianti. Non capiamo cosa si intenda con le istruzioni sopra. Apparentemente dovremmo in qualche modo ri-registrare il post type predefinito "post" (sebbene il post type "post" esista già ed è in uso), ma non sappiamo come e dove farlo. Se qualcuno può chiarire la procedura necessaria per cambiare gli URL degli articoli del blog, ne sarei molto grato.
Ho trovato la risposta qui. Ricordati di fare un salto e mettere un like.
La riporto qui per chi ha fretta.
Aggiungi questo nel file 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 );
(Testato e funzionante).
Ricorda!!
Ricorda A) Ricordati di aggiornare i tuoi permalink dopo (andando in Impostazioni >> Permalink >> Clicca 'Salva modifiche' ).
Ricorda B) Se ottieni risultati strani, prova ad aprire una finestra di navigazione in incognito e verifica se funziona lì. WordPress ha una funzionalità che reindirizza verso 'URL Più Corrispondente', che può sembrare confusa quando si modificano i permalink.
Potresti anche provare a trovare un Plugin che lo faccia. Personalmente non lo farei, visto che è eccessivo aggiungere un plugin solo per questo scopo. Ma hey, - a volte può essere soddisfacente sparare ai passeri con i cannoni (nessun passero è stato maltrattato per questa battuta).

Una soluzione breve e bella con una spiegazione ragionevole. Purtroppo non è quello che sto cercando. Attualmente utilizza la definizione "rewrite" per reindirizzare al vecchio permalink ("/blog/post" -> "/post"). Tuttavia, voglio che mantenga l'URL "/blog/post". Come lo realizzeresti?

Per estendere questo: si può risolvere aggiungendo quanto segue: 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 OMMIODIO che probabilità c'erano che mi servisse proprio il giorno dopo. Ho cercato ovunque - GRAZIEMILLE

Hai provato questo?
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 );

//Inserisci il codice nel file 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' => 'risorse/blog'), // Aggiungi il tuo slug qui
'query_var' => false,
'supports' => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'post-formats'),
));
/* Se aggiungi il codice sopra in function.php, la paginazione del blog smetterà di funzionare.
Devi aggiungere una regola di riscrittura usando il plugin "Debug This" sotto Query >> Sezione Rewrite
e modificare la tua rewrite_rule. */
add_rewrite_rule('(.?.+?)/page/?([0-9]{1,})/?$', 'index.php?pagename=risorse/blog&paged=$matches[1]', 'top');
}
