Vous avez peut-être rencontré des sauts de ligne ou des retours chariot insérés dans les titres des articles lors de la création ou de la modification dans WordPress. Ces caractères supplémentaires peuvent entraîner des problèmes de formatage et rendre vos titres incohérents. Dans cet article, je vais vous proposer deux méthodes pour supprimer les sauts de ligne et les retours chariot des titres de vos articles WordPress : a MySQL solution pour corriger les titres précédemment écrits et un PHP fonction pour éviter que le problème ne se reproduise à l’avenir.
Méthode 1 : solution MySQL pour les titres déjà écrits
Si vous avez des publications existantes avec des sauts de ligne ou des retours chariot dans leurs titres, vous pouvez utiliser un MySQL requête pour les mettre à jour tous en même temps. Voici la requête :
UPDATE wp_posts
SET post_title = REGEXP_REPLACE(post_title, '(\\w)\\r?\\n(\\w)', '$1 $2')
WHERE post_status="publish";
La requête MySQL fournie dans l’article utilise le REGEXP_REPLACE()
fonction, disponible dans MySQL 8.0 et versions ultérieures. Par conséquent, pour utiliser la solution MySQL telle quelle, votre serveur doit avoir MySQL 8.0 ou supérieur installé.
- Le
UPDATE
L’instruction est utilisée pour modifier les données dans le wp_posts
tableau. - Le
SET
La clause spécifie la colonne que nous voulons mettre à jour, qui est post_title
. - Nous utilisons le
REGEXP_REPLACE()
fonction pour effectuer un remplacement d’expression régulière sur le post_title
colonne. Cette fonction est disponible dans MySQL 8.0 et versions ultérieures. - Le modèle d’expression régulière
'(\\w)\\r?\\n(\\w)'
correspond à un caractère de mot, suivi d’un retour chariot facultatif, d’un saut de ligne et d’un autre caractère. Les doubles barres obliques inverses sont utilisées pour échapper à la barre oblique inverse dans la requête MySQL. - Le modèle de remplacement
'$1 $2'
remplace le motif correspondant par les caractères du mot capturés séparés par un espace. - Le
WHERE
La clause filtre les lignes pour mettre à jour uniquement les titres des articles où le post_status
est « publier ». Ajustez cette condition si vous souhaitez inclure les brouillons et autres statuts de publication.
Si vous utilisez une ancienne version de MySQL (antérieure à 8.0), vous pouvez obtenir un résultat similaire en utilisant une combinaison de REGEXP_SUBSTR()
et CONCAT()
fonctions à la place. Voici une requête alternative qui fonctionne avec les anciennes versions de MySQL :
UPDATE wp_posts
SET post_title = CONCAT(
REGEXP_SUBSTR(post_title, '^[^\\r\\n]+'),
IF(REGEXP_SUBSTR(post_title, '\\r?\\n'), ' ', ''),
REGEXP_SUBSTR(post_title, '[^\\r\\n]+$')
)
WHERE post_status="publish";
Explication:
- Le
CONCAT()
La fonction est utilisée pour concaténer les parties du titre du message. - La première
REGEXP_SUBSTR()
La fonction extrait la partie du titre avant tout saut de ligne ou retour chariot. - Le
IF()
La fonction vérifie s’il y a des sauts de ligne ou des retours chariot dans le titre. S’il est trouvé, il ajoute un espace ; sinon, il ajoute une chaîne vide. - La deuxième
REGEXP_SUBSTR()
La fonction extrait la partie du titre après tout saut de ligne ou retour chariot.
Avant d’exécuter la requête, assurez-vous de remplacer wp_posts
avec le nom réel de votre table de publications WordPress et sauvegardez votre base de données par mesure de précaution.
Méthode 2 : Fonction de thème enfant pour éviter de futures occurrences
Pour empêcher les sauts de ligne et les retours chariot d’être enregistrés dans les titres des articles à l’avenir, vous pouvez ajouter une fonction PHP au thème enfant de votre WordPress.
functions.php
déposer. Voici la fonction :
function remove_line_feeds_from_post_title($data, $postarr) {
if (isset($data['post_title'])) {
$data['post_title'] = preg_replace('/(\w)\r?\n(\w)/', '$1 $2', $data['post_title']);
}
return $data;
}
add_filter('wp_insert_post_data', 'remove_line_feeds_from_post_title', 10, 2);
Explication:
- La fonction est nommée
remove_line_feeds_from_post_title
et prend deux paramètres : $data
(le tableau de données post) et $postarr
(les données brutes de publication). - A l’intérieur de la fonction, nous vérifions si le
post_title
la clé existe dans le $data
tableau en utilisant le isset()
fonction. - Si la
post_title
la clé existe, nous utilisons la preg_replace()
fonction pour remplacer toute occurrence de saut de ligne ou de retour chariot entre les caractères d’un mot par un espace. - Le modèle d’expression régulière
'/(\w)\r?\n(\w)/'
correspond à un caractère de mot, suivi d’un retour chariot facultatif et d’un saut de ligne, puis d’un autre caractère de mot. - Le modèle de remplacement
'$1 $2'
remplace le motif correspondant par les caractères du mot capturés séparés par un espace. - Enfin, nous renvoyons le modifié
$data
tableau. - Nous utilisons le
add_filter()
fonction pour accrocher notre fonction personnalisée au wp_insert_post_data
filtre, qui est déclenché avant que les données de publication ne soient insérées dans la base de données.
Avec cette fonction en place, chaque fois qu’une publication est enregistrée ou mise à jour, tous les sauts de ligne ou retours chariot dans le titre de la publication seront automatiquement supprimés ou remplacés par des espaces avant d’être enregistrés dans la base de données.
En utilisant la requête MySQL pour corriger les titres d’articles existants et en ajoutant la fonction PHP à votre thème enfant, vous pouvez vous assurer que les titres de vos articles WordPress sont exempts de sauts de ligne et de retours chariot indésirables, conservant ainsi une apparence cohérente et propre sur votre site Web.
juin 12, 2024
WordPress : Comment supprimer et empêcher les sauts de ligne et les retours chariot dans les titres
Vous avez peut-être rencontré des sauts de ligne ou des retours chariot insérés dans les titres des articles lors de la création ou de la modification dans WordPress. Ces caractères supplémentaires peuvent entraîner des problèmes de formatage et rendre vos titres incohérents. Dans cet article, je vais vous proposer deux méthodes pour supprimer les sauts de ligne et les retours chariot des titres de vos articles WordPress : a MySQL solution pour corriger les titres précédemment écrits et un PHP fonction pour éviter que le problème ne se reproduise à l’avenir.
Méthode 1 : solution MySQL pour les titres déjà écrits
Si vous avez des publications existantes avec des sauts de ligne ou des retours chariot dans leurs titres, vous pouvez utiliser un MySQL requête pour les mettre à jour tous en même temps. Voici la requête :
La requête MySQL fournie dans l’article utilise le
REGEXP_REPLACE()
fonction, disponible dans MySQL 8.0 et versions ultérieures. Par conséquent, pour utiliser la solution MySQL telle quelle, votre serveur doit avoir MySQL 8.0 ou supérieur installé.UPDATE
L’instruction est utilisée pour modifier les données dans lewp_posts
tableau.SET
La clause spécifie la colonne que nous voulons mettre à jour, qui estpost_title
.REGEXP_REPLACE()
fonction pour effectuer un remplacement d’expression régulière sur lepost_title
colonne. Cette fonction est disponible dans MySQL 8.0 et versions ultérieures.'(\\w)\\r?\\n(\\w)'
correspond à un caractère de mot, suivi d’un retour chariot facultatif, d’un saut de ligne et d’un autre caractère. Les doubles barres obliques inverses sont utilisées pour échapper à la barre oblique inverse dans la requête MySQL.'$1 $2'
remplace le motif correspondant par les caractères du mot capturés séparés par un espace.WHERE
La clause filtre les lignes pour mettre à jour uniquement les titres des articles où lepost_status
est « publier ». Ajustez cette condition si vous souhaitez inclure les brouillons et autres statuts de publication.Si vous utilisez une ancienne version de MySQL (antérieure à 8.0), vous pouvez obtenir un résultat similaire en utilisant une combinaison de
REGEXP_SUBSTR()
etCONCAT()
fonctions à la place. Voici une requête alternative qui fonctionne avec les anciennes versions de MySQL :Explication:
CONCAT()
La fonction est utilisée pour concaténer les parties du titre du message.REGEXP_SUBSTR()
La fonction extrait la partie du titre avant tout saut de ligne ou retour chariot.IF()
La fonction vérifie s’il y a des sauts de ligne ou des retours chariot dans le titre. S’il est trouvé, il ajoute un espace ; sinon, il ajoute une chaîne vide.REGEXP_SUBSTR()
La fonction extrait la partie du titre après tout saut de ligne ou retour chariot.Avant d’exécuter la requête, assurez-vous de remplacer
wp_posts
avec le nom réel de votre table de publications WordPress et sauvegardez votre base de données par mesure de précaution.Méthode 2 : Fonction de thème enfant pour éviter de futures occurrences
Pour empêcher les sauts de ligne et les retours chariot d’être enregistrés dans les titres des articles à l’avenir, vous pouvez ajouter une fonction PHP au thème enfant de votre WordPress.
functions.php
déposer. Voici la fonction :Explication:
remove_line_feeds_from_post_title
et prend deux paramètres :$data
(le tableau de données post) et$postarr
(les données brutes de publication).post_title
la clé existe dans le$data
tableau en utilisant leisset()
fonction.post_title
la clé existe, nous utilisons lapreg_replace()
fonction pour remplacer toute occurrence de saut de ligne ou de retour chariot entre les caractères d’un mot par un espace.'/(\w)\r?\n(\w)/'
correspond à un caractère de mot, suivi d’un retour chariot facultatif et d’un saut de ligne, puis d’un autre caractère de mot.'$1 $2'
remplace le motif correspondant par les caractères du mot capturés séparés par un espace.$data
tableau.add_filter()
fonction pour accrocher notre fonction personnalisée auwp_insert_post_data
filtre, qui est déclenché avant que les données de publication ne soient insérées dans la base de données.Avec cette fonction en place, chaque fois qu’une publication est enregistrée ou mise à jour, tous les sauts de ligne ou retours chariot dans le titre de la publication seront automatiquement supprimés ou remplacés par des espaces avant d’être enregistrés dans la base de données.
En utilisant la requête MySQL pour corriger les titres d’articles existants et en ajoutant la fonction PHP à votre thème enfant, vous pouvez vous assurer que les titres de vos articles WordPress sont exempts de sauts de ligne et de retours chariot indésirables, conservant ainsi une apparence cohérente et propre sur votre site Web.
Source link
Partager :
Articles similaires