web-dev-qa-db-fra.com

Comment ajouter/attribuer ou modifier une image sélectionnée post-programme?

J'ai écrit un plugin qui (à part d'autres fonctionnalités) permet de publier des messages à partir de contenu existant. Pour chaque message, j'ai une image - comment les mettre en vedette par programme ?

Je fais le:

$id =  wp_insert_post( $my_post );
wp_set_object_terms( $id, $cat_ids, 'category' );

et j'aimerais que ma prochaine étape soit d'insérer $ image (chemin du fichier ou URI) en tant qu'image sélectionnée. Comment?

Merci d'avance.

4

Essayez d’utiliser set_post_thumbnail() .

En supposant que vous savez déjà comment déterminer le $post (ID ou objet) pour lequel définir l'image sélectionnée et le $thumbnail_id (ID) de l'image que vous souhaitez définir comme image sélectionnée:

set_post_thumbnail( $post, $thumbnail_id );
7
Chip Bennett

set_post_thumbnail permettra de définir une pièce jointe d'id à une publication de l'id fourni.

Si vous n'avez pas l'identifiant de la pièce jointe ou si vous voulez le faire directement à partir de l'URL, vous devrez d'abord créer la pièce jointe, voir wp_insert_attachment

vous pouvez également télécharger l'image à l'aide de media_sideload_image

3
Mridul Aggarwal

Vous pouvez utiliser wp_insert_attachment () et wp_generate_attachment_metadata () pour créer une pièce jointe à la publication. Et vous en faites une image sélectionnée en utilisant set_post_thumbnail () . (c'est vraiment juste un champ personnalisé _thumbnail_id.
Quelque chose comme:

$attach_id   = wp_insert_attachment( $attachment, $filename, $post_id );
$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
wp_update_attachment_metadata( $attach_id,  $attach_data );
set_post_thumbnail( $post_id, $attach_id );
3
windyjonas

Définir les images en vedette par programme.

function setFeaturedImages() {

$base = dirname(__FILE__);
$imgfile= $base.DS.'images'.DS.'14'.DS.'Ascot_Anthracite-Grey-1.jpg';
$filename = basename($imgfile);
$upload_file = wp_upload_bits($filename, null, file_get_contents($imgfile));
if (!$upload_file['error']) {
    $wp_filetype = wp_check_filetype($filename, null );
    $attachment = array(
        'post_mime_type' => $wp_filetype['type'],
        'post_parent' => 0,
        'post_title' => preg_replace('/\.[^.]+$/', '', $filename),
        'post_content' => '',
        'post_status' => 'inherit'
    );
$attachment_id = wp_insert_attachment( $attachment, $upload_file['file'], 209 );

if (!is_wp_error($attachment_id)) {
    require_once(ABSPATH . "wp-admin" . '/includes/image.php');
    $attachment_data = wp_generate_attachment_metadata( $attachment_id, $upload_file['file'] );
    wp_update_attachment_metadata( $attachment_id,  $attachment_data );
}

set_post_thumbnail( 209, $attachment_id );

}

}

Veuillez vous référer au tutoriel pour une explication détaillée. http://www.pearlbells.co.uk/insert-udpate-wordpress-post-programmatically/

0
Liz Eipe C