web-dev-qa-db-fra.com

Titre du message CPT Permalien: Remplacez "@" (ou tous les caractères spéciaux) par un tiret "-" au lieu de simplement supprimer

J'ai un type de message personnalisé "Email", où le titre du message sera toujours une adresse électronique, c'est-à-dire: [email protected]

Le problème que je rencontre est le "@" est supprimé dans le permalien: ../ exampledomain-com

Je voudrais qu'il soit sauvegardé sous: ../ example-domain-com

Remplacer le "@" par un "-"

J'ai essayé ce qui suit à partir d'ici , mais comme le verra rapidement quelqu'un de plus informé, cela ne s'applique pas au permalien:

function at_to_dash($title) {
    return str_replace('@', '-', $title);
}
add_filter('sanitize_title', 'at_to_dash');
1
codeview

Assurez-vous simplement que votre filtre tourne avant celui que Wordpress applique lui-même - ajoutez une priorité de 9:

add_filter( 'sanitize_title', function( $title ) {

    if ( FALSE !== strpos( $title, '@' ) ) {
        $title = str_replace( '@', '-', $title );
    }

    return $title;

}, 9 );

Usage:

echo sanitize_title( '[email protected]' );

Sortie:

mytitle-example-org
2
Michael