Je travaille pour une entreprise d'architecture et les noms de nos projets se présentent comme suit: house|something
, bridge|somewhere
, building|whatever
.
Maintenant, quand je veux ajouter un nouveau projet nommé comme ça, WordPress le convertit automatiquement en housesomething
, bridgesomewhere
et le met comme slug. I ' Je préfère de loin garder une sorte de séparateur, par exemple house-something
, bridge-somewhere
au lieu.
Alors, comment faire WordPress convertir |
à -
et pas Empty String
(""
)? Je suis évidemment fatigué de le faire manuellement tout le temps.
Il me semble que c'est très simple à faire. Il suffit d'une simple recherche et de remplacer le genre de chose si l'on sait où chercher (dans le noyau WP ou ailleurs), mais je n'ai pas la moindre idée où chercher, ni quel code éxécuter.
Lorsque WordPress insère une publication , il exécute le titre via un filtre appelé sanitize_title
pour obtenir la limace. Par défaut, il existe une fonction appelée santize_title_with_dashes
attaché à ce filtre avec la priorité 10. Cette fonction supprime simplement le |
. S'il est entouré d'espaces, ces espaces seront convertis en tirets.
Votre tâche consiste donc à exécuter un filtre sur le même crochet avant (disons, priorité 9) celui par défaut et à remplacer le |
avec -
avant qu'il ne soit retiré. Comme ça:
add_filter( 'sanitize_title', function ( $title ) {
return str_replace( '|', '-', $title );
}, 9 );
Si vous mettez des espaces entre les mots et le séparateur | le permalien inclura automatiquement des tirets entre les mots. Par exemple, essayez ceci comme titre de publication:
house | something, bridge | somewhere
Cela se traduit par la limace:
house-something-bridge-somewhere