Estoy escribiendo un tema / complemento personalizado en el que necesito descargar imágenes mediante programación desde ciertas páginas web a la carpeta de carga y luego insertarlas como parte de la publicación.
Entonces, pude encontrar la url de la imagen mediante programación, y luego necesito guardarla en la carpeta de carga en wp-content, sin embargo, esa carpeta tiene una estructura de carpeta específica de WordPress dentro de ella para las imágenes guardadas.
Ahora mi pregunta es, ¿hay una API o función o método de WordPress que me permita descargar imágenes de la web y guardarlas en la carpeta de cargas? Y si es así, qué es.
De lo contrario, ¿qué debo hacer para guardar esas imágenes?
Hasta ahora, estoy haciendo esto
$filetype = wp_check_filetype(basename($image_file_name), null );
$upload_dir = wp_upload_dir();
$attachment = array(
'guid' => $upload_dir['url'] . '/' . basename( $image_file_name ),
'post_mime_type' => $filetype['type'],
'post_title' => preg_replace('/\.[^.]+$/', '', basename($image_file_name)),
'post_content' => '',
'post_status' => 'inherit'
);
$attachment_id = wp_insert_attachment( $attachment, $image_file_name, $post_id );
$attachment_data = wp_generate_attachment_metadata( $attachment_id, $image_file_name );
wp_update_attachment_metadata( $attachment_id, $attachment_data );
set_post_thumbnail( $post_id, $attachment_id );
Pero el código anterior me está dando el siguiente error
imagejpeg(http://wscdn.bbc.co.uk/worldservice/assets/images/2013/07/21/130721173402_egypts_new_foreign_minister_fahmy_304x171_reuters-150x150.jpg): failed to open stream: HTTP wrapper does not support writeable connections in C:\dev\wordpress\pterodactylus\wp-includes\class-wp-image-editor.php on line 334
Y después de una investigación más profunda, parece que el error es causado por
$attachment_data = wp_generate_attachment_metadata( $attachment_id, $image_file_name );
Y después de una investigación más profunda, la documentación para los wp_insert_attachment()
estados que The file MUST be on the uploads directory
en lo que respecta a la$image_file_name
Entonces, ¿cómo descargo una imagen y la guardo en mi publicación correctamente?
Muchas gracias.
fuente
Respuestas:
Recientemente tuve que hacer esto a través de un script cron nocturno para una transmisión de redes sociales. $ parent_id es el ID de la publicación a la que desea adjuntar la imagen.
ex:
fuente
No ha publicado el código utilizado para recuperar y guardar la imagen, por lo que es imposible decir dónde está el error.
Pruebe este código para agarrar y guardar la imagen:
Luego, simplemente use estas funciones en combinación con su código, así:
Recuerde también que debe incluir wp-admin / includes / image.php en su código para que la función
wp_generate_attachment_metadata()
funcione, consulte el CodexEspero esta ayuda, pero tenga en cuenta que todo el código aquí no se prueba.
fuente
if ( $mirror['error'] ) return false; //maybe log error
. Además, no se verifica si el contenido recuperado es en realidad una imagen$filetype = wp_check_filetype($filename, NULL ); if ( ! substr_count($filetype['type'], 'image') ) return false;
Puede usar esta función para cargar remotamente una imagen para cargar la carpeta y configurarla como imagen destacada.
Uso:
fuente
Solo use la función predeterminada wp (v2.6.0 +):
fuente