Cómo agregar un medio con PHP

2

Tengo más de 1000 imágenes en mi servidor web, cargadas con FTP en una carpeta local ( /home/chris/pictures )

¿Hay alguna manera de agregarlos como un medio bien conocido para wordpress en PHP y obtener su ID?

while ( $the_query->have_posts() ) : $the_query->the_post();
    $post_id = get_the_ID();
    $filemakerID = get_post_meta($post_id, 'filemaker_id', true);

    $file['url']='/home/chris/picture_export/'.$filemakerID.'.jpeg';
    $file['type'] = 'image/jpeg';

    //THE DREAMED FUNCTION WOULD BE USED THIS WAY
    $photo_id = awesome_function( $file, $post_id);

    add_post_meta($post_id, 'photo', $photo_id );
}

Como notó, mi foto también se usa en un campo personalizado photo .

Después de horas en Google Dans Codex, noté cuán mal documentadas están estas funciones. Tal vez simplemente no pude encontrar las palabras clave correctas para buscar.

    
pregunta Christian 16.08.2012 - 09:21

1 respuesta

5

Si estoy entendiendo correctamente, ¿cada publicación tiene un fabricante de archivos y cada uno tiene solo una foto? La estructura es poco clara.

De todos modos, una forma es el uso superior media_sideload_image como abajo.

Sin embargo, media_sideload_image WON'T funciona con archivos locales (una ruta en su sistema de archivos), por lo que necesita cambiar su $ file ['url'] para que sea una URL válida (http:////suhomepage.com/chris/pictures, por ejemplo). Si no puedes hacer eso, debes usar wp_upload_bits y wp_insert_attachment , pero así es mucho más trabajo / más difícil.

function awesome_function($file, $post_id) {

    require_once(ABSPATH . 'wp-admin' . '/includes/image.php');
    require_once(ABSPATH . 'wp-admin' . '/includes/file.php');
    require_once(ABSPATH . 'wp-admin' . '/includes/media.php');

    // upload image to server
    media_sideload_image($file['url'], $post_id);

    // get the newly uploaded image
    $attachments = get_posts( array(
        'post_type' => 'attachment',
        'number_posts' => 1,
        'post_status' => null,
        'post_parent' => $post_id,
        'orderby' => 'post_date',
        'order' => 'DESC',) 
    );

    // returns the id of the image
    return $attachments[0]->ID;
}
    
respondido por el pbd 16.08.2012 - 09:41

Lea otras preguntas en las etiquetas