Vous pouvez définir une image comme post-vignette lorsqu'elle se trouve dans votre bibliothèque multimédia. Pour ajouter une image dans votre bibliothèque multimédia, vous devez la télécharger sur votre serveur. WordPress possède déjà une fonction permettant de placer des images dans votre bibliothèque multimédia. Vous n'avez besoin que d'un script pour télécharger votre fichier.
Usage:
Generate_Featured_Image( '../wp-content/my_image.jpg', $post_id );
// $post_id is Numeric ID... You can also get the ID with:
wp_insert_post()
Une fonction:
function Generate_Featured_Image( $image_url, $post_id ){
$upload_dir = wp_upload_dir();
$image_data = file_get_contents($image_url);
$filename = basename($image_url);
if(wp_mkdir_p($upload_dir['path']))
$file = $upload_dir['path'] . '/' . $filename;
else
$file = $upload_dir['basedir'] . '/' . $filename;
file_put_contents($file, $image_data);
$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 );
$res1= wp_update_attachment_metadata( $attach_id, $attach_data );
$res2= set_post_thumbnail( $post_id, $attach_id );
}
http://codex.wordpress.org/Function_Reference/wp_upload_dir
http://codex.wordpress.org/Function_Reference/wp_insert_attachment
EDIT: Création d'un chemin ajouté
http://codex.wordpress.org/Function_Reference/wp_mkdir_p
Essayez d'utiliser
set_post_thumbnail()
.Edit by Otto: Vous avez clarifié votre question, je vais donc clarifier la réponse donnée par Chip.
Fondamentalement, vous devez également créer une "pièce jointe" pour le poste. Lorsqu'une image est téléchargée dans la médiathèque WordPress, une entrée spéciale est créée pour celle-ci avec un type de pièce jointe. Cette pièce jointe est liée à une publication spécifique via l'identifiant post_parent.
Donc, si vous connaissez l'ID de la pièce jointe, l'appel de set_post_thumbnail avec l'objet ou l'ID de publication et l'ID de la pièce jointe définiront simplement le drapeau de la miniature de publication.
Si vous n'avez pas encore créé la pièce jointe, vous devez d'abord le faire. Le moyen le plus simple de le faire est avec
wp_insert_attachment()
. Cette fonction prend un tableau de quelques paramètres, le nom de fichier (le fichier doit déjà se trouver dans le répertoire de téléchargement approprié) et l'identifiant de publication de la publication parente à laquelle vous souhaitez joindre la pièce jointe.Le simple fait de télécharger un fichier et de le joindre à un message ne fait rien automatiquement. C'est simplement une sorte de mécanisme de catégorisation. Le mécanisme de la galerie, par exemple, utilise les images attachées d’une publication pour créer la [galerie] de cette publication. Une vignette pour un article n'est qu'une des images jointes qui doit être définie comme étant la vignette.
Vous trouverez plus d'informations sur l'utilisation de wp_insert_attachment dans le codex (lien ci-dessus).
la source
Je voudrais améliorer la réponse de Robs en utilisant les fonctions de base de WP
download_url
etmedia_handle_sideload
la source
set_post_thumbnail()
est la meilleure fonction pour cette exigence.Je pense que vous trouvez l'ID d'une pièce jointe via
get_children()
ouget_posts()
. Le résultat a un tableau et à l'intérieur de ce tableau se trouve l'ID. L'exemple suivant pour les tests; J'espère que ca fonctionne; écrire sans tests, uniquement sur scratch.Pour vos besoins, il est important que vous changiez
get_the_ID()
avec votrepost-ID
; renvoyer l'ID de la pièce jointe et vous pourrez l'utiliser avec fothset_post_thumbnail()
.la source
Je viens de le trouver et je l'ai simplifié beaucoup, mais je ne suis pas un scrubber de sécurité
simple ou quoi? Après avoir récupéré les bons fichiers, wordpress gérera le support et le téléchargera, puis le définira comme une vignette.
la source