web-dev-qa-db-fra.com

PHP/Utilisation manuelle des images? - 2 questions

J'ai créé un script/page PHP rapide qui utilise la fonction wp_insert_post () pour insérer directement un message. Et cela fonctionne très bien. La publication que j'ajoute manuellement contient une image. Je télécharge donc d'abord cette image manuellement/par programme dans le dossier "/ uploads /" respectif dans lequel toutes mes images sont enregistrées (en fait, je n'utilise pas de sous-répertoires year/month). Le contenu de l'article contient du texte normal, ainsi que le code HTML nécessaire pour pointer vers l'image, par exemple.

<p>This is a manually created post for my blog, there should be a picture below this line of text.  Thanks for visiting.</p>
<img src="http://www.mysite.com/wp-content/uploads/image.jpg">

Le message semble bien (y compris l'image). Mais mes 2 problèmes sont:

1) L’image que j’ai téléchargée ne se trouve pas dans la médiathèque. Comment l’obtenir ici?

2) J'aimerais ajouter une "image/vignette en vedette" à la même image, mais je ne sais pas quelle fonction est utilisée pour effectuer cet appel? J'espérais trouver une fonction similaire à insert_featured_thumbnail ("/ wp-content/uploads/image.jpg", $ pid)

Quelqu'un a-t-il une idée?

Merci d'avance.

WizzKidd

3
WizzKidd

Référence de fonction/wp insérer une pièce jointe

$image_id = wp_insert_attachment( $attachment, $filename, $parent_post_id );

Cette fonction renverra un identifiant d'image que vous pourrez utiliser pour l'image sélectionnée.

update_post_meta($post_id, "_thumbnail_id", $image_id);
3
Rob Vermeer

Merci pour votre réponse. C'était parfait. J'utilise maintenant le code suivant:

//SAVE THE POST - $new_post is my array that conforms to the necessary requirements
$pid = wp_insert_post($new_post);

//SET MY TAGS UP PROPERLY - $tagsArray contains an array of tags
wp_set_post_tags($pid, $tagsArray);

//ADD IMAGE TO IMAGE-GALLERY AND return $image_id - $wp_image is my image filename
$wp_filetype = wp_check_filetype(basename($wp_image), null);
$attachment = array(
   'post_mime_type' => $wp_filetype['type'],
   'post_title'     => preg_replace('/\.[^.]+$/', '', $myImageTitle),
   'post_content'   => '',
   'post_status'    => 'inherit'
);
$serverFullPath = '/home/user/public_html/mysite/wp-content/uploads/';
$image_id = wp_insert_attachment($attachment, $serverFullPath . $wp_image, $pid);

//ADD THE MEDIA GALLERY IMAGE AS A FEATURED IMAGE FOR THIS POST
update_post_meta($pid, "_thumbnail_id", $image_id);

//POST THE POST
do_action('wp_insert_post', 'wp_insert_post');

J'ai vérifié la Galerie de médias et mon image est là :) bien qu'elle ne spécifie pas l'auteur du fichier contrairement aux autres images qui montrent 'admin'.

Merci de votre aide.

2
WizzKidd