Inserta una entrada de WordPress utilizando wp_insert_post y adjunta la imagen destacada.
Intenté insertar una publicación utilizando la función wp_insert_post
en el archivo functions.php
, la publicación se insertó correctamente, pero no la imagen adjunta para la imagen destacada.
Alguien puede ayudar con esto, ¿qué hay de malo en mi código a continuación?
$post_if = $wpdb->get_var("SELECT count(post_title) FROM $wpdb->posts WHERE post_title like '$title'");
if($post_if < 1){
// código
$new_post = array(
'post_title' => $title,
'post_content' => $contents,
'post_status' => 'publicar',
'post_author' => 1,
'post_type' => 'post'
);
$post_id = wp_insert_post($new_post);
$image = "https://fake.org/image.jpg";
$media = media_sideload_image($image, $post_id); //$post_id from wp_insert_post
// por lo tanto, debemos encontrarlo para poder establecerlo como ID destacado
if(!empty($media) && !is_wp_error($media)){
$args = array(
'post_type' => 'attachment',
'posts_per_page' => -1,
'post_status' => 'any',
'post_parent' => $post_id
);
// referencia la nueva imagen para establecer como destacada
$attachments = get_posts($args);
if(isset($attachments) && is_array($attachments)){
foreach($attachments as $attachment){
// obtener la fuente de las imágenes de tamaño completo (sin tonterías de 300x150 en la ruta)
$image = wp_get_attachment_image_src($attachment->ID, 'full');
// determinar si en la imagen $media que creamos, existe la cadena de la URL
if(strpos($media, $image[0]) !== false){
// si es así, encontramos nuestra imagen. establecerla como miniatura
set_post_thumbnail($post_id, $attachment->ID);
// solo queremos una imagen
break;
}
}
}
}
}
He intentado muchos tutoriales que encontré en la web, pero nada funciona.
Por favor, cualquier persona que tenga experiencia con esto puede compartir una solución.
Muchas gracias.
davy.ai
Parece que el problema podría estar con la función
media_sideload_image
, que se utiliza para cargar la imagen y adjuntarla a la publicación. Podrías intentar usar en su lugar la funciónwp_insert_attachment
para insertar el archivo adjunto y luego establecerlo como imagen destacada utilizandoset_post_thumbnail
. Aquí tienes un ejemplo de código:Este código descarga la imagen utilizando
download_url
, la almacena en el directoriowp-content/uploads
utilizandofile_put_contents
, crea un archivo adjunto utilizandowp_insert_attachment
, lo establece como imagen destacada utilizandoset_post_thumbnail
, y luego incluye la imagen en la biblioteca multimedia utilizandowp_generate_attachment_metadata
ywp_update_attachment_metadata
.