Stai cercando un modo per cambiare lo slug dell'URL dell'autore? Questo snippet cambierà lo slug predefinito, mysite.com/author/name, in mysite.com/profile/name. Tuttavia, puoi cambiarlo in qualsiasi cosa desideri.
Istruzioni:
- Aggiungi questo codice al file functions.php del tuo tema o a un plugin specifico per il sito.
- Cambia
profilenella riga 4 con qualsiasi nome desideri.
add_action('init', 'cng_author_base');
function cng_author_base() {
global $wp_rewrite;
$author_slug = 'profile'; // change slug name
$wp_rewrite->author_base = $author_slug;
}
Nota: Se questa è la prima volta che aggiungi snippet di codice in WordPress, consulta la nostra guida su come copiare / incollare correttamente snippet di codice in WordPress, in modo da non rompere accidentalmente il tuo sito.
Se ti è piaciuto questo snippet di codice, prendi in considerazione la possibilità di consultare i nostri altri articoli sul sito come: I 9 migliori strumenti SEO per aumentare il traffico del tuo sito web, VELOCEMENTE!
Né il tuo codice né il mio funzioneranno! ! ! ! È fastidioso!……
// Cambia la base dell'autore per l'URL dell'autore.
function custom_author_base() {
global $wp_rewrite;
$author_slug = ‘@’; // Imposta lo slug della base dell'autore su ‘@username’
$wp_rewrite->author_base = $author_slug;
}
add_action( ‘init’, ‘custom_author_base’ );
// Riscrivi l'URL dell'autore alla nuova struttura URL.
function custom_author_rewrite_rules( $author_rewrite ) {
$author_new_rules = array(
‘@([^/]+)/?$’ => ‘index.php?author_name=$matches[1]’
);
$author_rewrite = array_merge( $author_new_rules, $author_rewrite );
return $author_rewrite;
}
add_filter( ‘author_rewrite_rules’, ‘custom_author_rewrite_rules’ );
// Reindirizza il vecchio URL dell'autore alla nuova struttura URL.
function custom_author_redirect() {
if ( is_author() && strpos( $_SERVER[‘REQUEST_URI’], ‘/author/’ ) !== false ) {
wp_redirect( home_url( str_replace( ‘/author/’, ‘/’, $_SERVER[‘REQUEST_URI’] ) ), 301 );
exit();
}
}
add_action( ‘template_redirect’, ‘custom_author_redirect’ );
Ciao, è possibile cambiare lo slug dell'autore solo per i tipi di post personalizzati usando una condizione if?
Grazie
Questo codice serve a cambiare la base dell'autore, non lo slug dell'autore.
Questo non è per i singoli nomi degli autori, ma serve a cambiare lo slug /author/ con qualcos'altro, come /profile/. Il risultato finale sarebbe /profile/nomeautore
Grazie!!
Grazie mille!!
grazie
grazie
Ricordi la domanda di Mike Kennedy?
Come si può avere solo sito.com/nome-autore/ ?
Se imposti author_slug = ""
questo funzionerà per le pagine dell'autore, ma nel mio caso ora ricevo errori 404 non trovato per le pagine normali. Sembra che uno slug autore vuoto interrompa la riscrittura per le pagine normali.
Qualcuno ha una soluzione?
Quello che potresti provare è andare in "Permalink" nelle impostazioni e poi cliccare "Salva modifiche" per svuotare le regole di riscrittura.
[…] a Kevin Chard per il fantastico […]
Sono stato in grado di cambiare la struttura del permalink author_base con codice simile a quello sopra, ma ho creato un ruolo personalizzato e mi chiedo se potrei avere 2 author_base diversi in base al ruolo dell'utente. La struttura predefinita per amministratori, autori, ecc. (/author/authorname) e un'altra per il nuovo ruolo utente (/gift-registry/authorname).
Ryan
Grazie!
@wpsnipp:disqus è possibile creare slug autore personalizzati basati sui ruoli utente?
add $wp_rewrite->flush_rules()
alla fine della funzione funzionerà senza 404 :)
grazie fratello
Ho inserito questo in functions.php e ha cambiato lo slug, tuttavia ricevo un 404 quando visito il nuovo slug. Suggerimenti? Grazie
Ciao Zach, se continui ad avere problemi potresti provare questo plugin, non dovresti avere problemi.
http://wordpress.org/extend/plugins/author-slug/
Ciao Kevin,
Grazie per il suggerimento. Tuttavia, ho visto quel plugin e mi piacerebbe capire come usarlo senza un plugin - sto costruendo un sito molto grande e sto cercando di ridurre il numero di plugin.
Grazie,
Zach
Ciao Zach, potresti semplicemente estrarre il codice dal plugin e inserirlo nel tuo functions.php e funzionerà bene.
Per chiunque altro abbia lo stesso problema... basta svuotare i permalink (andare su Impostazioni->Permalink li svuota)