WordPress – Ajouter une image à la une programmatiquement

L’API de WordPress vous permet beaucoup de choses. Si vous le souhaitez, vous pouvez même créer vos articles et pages programmatiquement. Nous allons voir comment faire pour y ajouter une image à la une.

Pour réaliser cela, il suffit d’utiliser un tableau avec les arguments qui définissent votre article, et de les donner à la fonction wp_insert_post().
Par exemple :

$post = array();
$post['post_status']   = 'publish';
$post['post_type']     = 'post'; // peut être page ou un custom post type
$post['post_title']    = 'Mon titre';
$post['post_content']  = 'Mon contenu';
$post['post_author']   = 1;

// Create Post
$post_id = wp_insert_post( $post );

Une fois l’identifiant de l’article récupéré, vous pouvez commencer l’import de l’image et l’ajout de celle-ci comme image à la une. Tout d’abord, récupérons notre image :

$image_url  = 'http://urldemonimage.com/monimage.png'; 
$upload_dir = wp_upload_dir(); 
$image_data = file_get_contents($image_url); 
$filename   = basename($image_url); 

La partie qui suit va vérifier les permissions sur le dossier d’upload et y créer notre image :

if( wp_mkdir_p( $upload_dir['path'] ) ) {
    $file = $upload_dir['path'] . '/' . $filename;
} else {
    $file = $upload_dir['basedir'] . '/' . $filename;
}

file_put_contents( $file, $image_data );

Maintenant nous avons besoin de récupérer les informations sur l’image afin de les enregistrer dans la bibliothèque de médias :

$wp_filetype = wp_check_filetype( $filename, null );

$attachment = array(
    'post_mime_type' => $wp_filetype['type'],
    'post_title'     => sanitize_file_name( $filename ),
    'post_content'   => '',
    'post_status'    => 'inherit'
);

$attach_id = wp_insert_attachment( $attachment, $file, $post_id );

require_once(ABSPATH . 'wp-admin/includes/image.php');

$attach_data = wp_generate_attachment_metadata( $attach_id, $file );

wp_update_attachment_metadata( $attach_id, $attach_data );

Enfin, il ne reste plus qu’à attacher l’image à notre article en la définissant comme image à la une :

set_post_thumbnail( $post_id, $attach_id );

Si tout se passe bien, vous devriez maintenant avoir votre image bien associée à votre article en image à la une.

Si vous souhaitez plus d’informations, vous pouvez vous rendre sur le Codex, sur la page des fonctions que l’on a utilisé ici :

Mat_

Au départ on sort avec un diplôme d’ingénieur de l’ESIL (devenu Polytech’Marseille) en Informatique, réseau et multimédia, spécialisé dans les Systèmes d’Informations et Services E-Business. En même temps on bosse, on développe, on apprend. Et maintenant on entreprend.Passionné de nouvelles technologies, et évangéliste de WordPress, j’aime découvrir, tester, rechercher.

Vous aimerez aussi...

2 réponses

  1. Votre article, bien qu’intéressant, n’est pas clair. Qu’appelez-vous « créer programmatiquement » ? Ces termes portent à confusion.

    L’idée de cette fonction consiste à attribuer automatiquement la première image du contenu de l’article comme « Image à la Une » ?

    • Mathieu dit :

      Bonjour Jonathan,
      Effectivement, le mot est étrange, mais j’ai eu du mal à trouver un remplaçant.
      Cet article explique comment ajouter avec du code, un image à la une, associée à un article. Par exemple, lorsqu’avec un plugin ou un thème, on souhaite créer un article avec wp_insert_post() (http://codex.wordpress.org/Function_Reference/wp_insert_post), il peut-être pratique d’y associer une image à la une.

      J’espère que l’explication est un peu plus claire 🙂

      M

Suivez Kune.fr sur les réseaux sociaux !

Kune.fr est votre site de ressources web. Vous y trouverez de nombreux outils utiles pour le web.
Alors n'hésitez plus, aimez notre page !

  • Ressources Wordpress, tutoriels, plugins et thèmes
  • Ressources design, packs d'icônes, kits UI ...
Fermer cette popup
%d blogueurs aiment cette page :