Suite à tous mes posts de ce matin, j’ai cherché une façon de générer un titre à mes notes, que je publie généralement via la Web app quill.p3k.io développée par Aaron Pareki.

Il existe de nombreux filtres pour agir sur le contenu d’un post ou d’une page, mais la plupart sont exécutés à l’affichage comme the_title ou the_content, ou encore à la modification comme le filtre save_post.

On pourrait très bien générer notre titre après l’enregistrement dans la base de données, mais dans mon cas je souhaitais définir le titre et le permalien avant, simplement pour éviter que le partage sur Mastodon se fasse sans titre défini dans les metadonnées utilisées par OpenGraph.

Heureusement, il existe un filtre sur lequel agir pour ça : wp_insert_post_data.

Voici comment j’ai reussi :

function generate_post_title($data)
{
    if (empty($data['post_title'])) {

        $content = $data['post_content'];

        $pieces = explode(" ", $content);
        $first_part = implode(" ", array_splice($pieces, 0, 5));

        $data['post_title'] = $first_part; // Defines post title
        $data['post_name'] = sanitize_title($first_part); // Defines post slug
    }
    return $data; // Returns the modified data.
}
add_filter('wp_insert_post_data', 'generate_post_title', '99', 1);

Je pourrais toujours l’améliorer par la suite, par exemple :

  • en prenant la première phrase de mon contenu, plutôt que les cinq premiers mots actuellement,
  • en ajoutant des points de suspensions lorsque la première phrase dépasse les six mots.

J’espère que ce petit morceau de code vous aidera.

👋

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.