WordPress : Comment modifier le titre d’une page ou d’un article automatiquement lors de son enregistrement ?

Il peut s’avérer nécessaire (ou simplement pratique) de pouvoir modifier le titre des pages, des articles ou de post_type personnalisés automatiquement.

Dans quel cas ?

  • Vous avez crée un post_type « témoignages » qui regroupent tous les témoignages de vos clients. Vous apprécierez peut-être que le titre de vos publications soient automatiquement générés de la façon suivante : « Auteur – Ville » (à partir des champs Auteur et Ville que vous aurez créez en amont)
  • Vous avez crée des fiches de membres, et vous souhaitez que vos pages soient nommées automatiquement de cette manière « Nom Prénom (Fonction) »

Pourquoi ?

  • Cela vous permet de mieux vous y retrouver dans l’administration
  • Cela vous évite de modifier à la fois vos champs personnalisés et votre titre à chaque modification
  • Cela évite les erreurs, et les informations différentes

Et bien c’est chose facile avec le hook wp_insert_post_data qui est fait pour ça !

[pastacode lang= »php » manual= »add_filter(%20’wp_insert_post_data’%2C%20’ch_create_title’%2C%20’99’%2C%202%20)%3B%0A » message= » » highlight= » » provider= »manual »/]

Modifier automatiquement tous les titres :

[pastacode lang= »php » manual= »function%20ch_create_title(%20%24data%2C%20%24postarr%20)%20%7B%0A%09%24data%5B’post_title’%5D%20%3D%20’Mon%20nouveau%20titre%20g%C3%A9n%C3%A9r%C3%A9%20automatiquemen%20!’%3B%0A%09return%20%24data%3B%0A%7D » message= » » highlight= » » provider= »manual »/]

Pour modifier les titres uniquement sur un type de publication donné :

[pastacode lang= »php » manual= »function%20ch_create_title(%20%24data%2C%20%24postarr%20)%20%7B%0A%09if%20(%20’page’%20%3D%3D%20%24data%5B’post_type’%5D%20)%20%7B%0A%09%09%24data%5B’post_title’%5D%20%3D%20’Mon%20nouveau%20titre%20g%C3%A9n%C3%A9r%C3%A9%20automatiquement%20sur%20des%20pages%20!’%3B%0A%09%09return%20%24data%3B%0A%09%7D%0A%09if%20(%20’single’%20%3D%3D%20%24data%5B’post_type’%5D%20)%20%7B%0A%09%09%24data%5B’post_title’%5D%20%3D%20’Mon%20nouveau%20titre%20g%C3%A9n%C3%A9r%C3%A9%20automatiquement%20sur%20des%20articles%20!’%3B%0A%09%09return%20%24data%3B%0A%09%7D%0A%09if%20(%20’mon_post_type’%20%3D%3D%20%24data%5B’post_type’%5D%20)%20%7B%0A%09%09%24data%5B’post_title’%5D%20%3D%20’Mon%20nouveau%20titre%20g%C3%A9n%C3%A9r%C3%A9%20automatiquement%20sur%20des%20publications%20de%20type%20mon_post_type%20!’%3B%0A%09%09return%20%24data%3B%0A%09%7D%0A%09%2F%2F…%0A%7D » message= » » highlight= » » provider= »manual »/]

Modifier votre titre à partir de champ personnalisé :

[pastacode lang= »php » manual= »function%20ch_create_title(%20%24data%2C%20%24postarr%20)%20%7B%0A%09if%20(%20’page’%20%3D%3D%20%24data%5B’post_type’%5D%20)%20%7B%0A%09%09%24my_custom_value%20%3D%20%24postarr%5B’custom_value’%5D%3B%0A%09%09%24data%5B’post_title’%5D%20%3D%20%24my_custom_value%3B%0A%09%7D%0A%09return%20%24data%3B%0A%7D » message= » » highlight= » » provider= »manual »/]

Modifier votre titre à partir d’un champs personnalisé avec ACF :

Ici, petite particularité, vous devez connaitre le nom du champs ACF. Pour cela, retournez une première fois le tableau $postarr avec la fonction ci-dessous :

[pastacode lang= »php » manual= »function%20ch_create_title(%20%24data%2C%20%24postarr%20)%20%7B%0A%09echo%20’%3Cpre%3E’.print_r(%24postarr%2C%20true).’%3C%2Fpre%3E’%20%3B%20%0A%09exit%20%3B%0A%7D » message= » » highlight= » » provider= »manual »/]

Enregistrez une page dans votre back-office et récupérez le nom du champs sous forme de $postarr['acf']['field_5b36319b0jlkjec'] correspondant.
Une fois que vous l’avez, il vous suffit de l’utiliser dans votre fonction :

[pastacode lang= »php » manual= »function%20ch_create_title(%20%24data%2C%20%24postarr%20)%20%7B%0A%09if%20(%20’page’%20%3D%3D%20%24data%5B’post_type’%5D%20)%20%7B%0A%09%09%24my_custom_value%20%3D%20%24postarr%5B’acf’%5D%5B’field_5b36319b0jlkjec’%5D%3B%0A%09%09%24data%5B’post_title’%5D%20%3D%20%24my_custom_value%3B%0A%09%7D%0A%09return%20%24data%3B%0A%7D » message= » » highlight= » » provider= »manual »/]

Pour aller plus loin…

Cet article évoque la modification des titres, mais évidemment vous pouvez changer ici bien d’autres valeurs. Comme le slug par exemple :

[pastacode lang= »php » manual= »function%20ch_create_title(%20%24data%2C%20%24postarr%20)%20%7B%0A%09if%20(%20’page’%20%3D%3D%20%24data%5B’post_type’%5D%20)%20%7B%0A%09%09%24my_custom_value%20%3D%20%24postarr%5B’acf’%5D%5B’field_5b36319b0jlkjec’%5D%3B%0A%09%09%24data%5B’post_title’%5D%20%3D%20%24my_custom_value%3B%20%2F%2F%20Modifie%20le%20titre%0A%09%09%24data%5B’post_name’%5D%20%3D%20sanitize_title(%20%20%24my_custom_value%20)%3B%20%2F%2F%20Modifie%20le%20slug%0A%09%7D%0A%09return%20%24data%3B%0A%7D » message= » » highlight= » » provider= »manual »/]

Si cet article "WordPress : Comment modifier le titre d’une page ou d’un article automatiquement lors de son enregistrement ?" vous a aidé, si vous avez des questions ou des améliorations à proposer, n'hésitez pas à me laisser un commentaire en bas de page !
Charlie Stram,
Développeur web freelance

Vous aimerez aussi...

1 réponse

  1. 7 juillet 2018

    […] a vu comment modifier automatiquement le titre des pages (ou le slug, ou encore toutes sortes d’infos)  lors de l’enregistrement d’un […]

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *