it-swarm.com.de

So fügen Sie ein Medium mit hinzu PHP

Ich habe mehr als 1000 Bilder auf meinem Webserver, die per FTP in einen lokalen Ordner hochgeladen wurden (/home/chris/pictures)

Gibt es eine Möglichkeit, sie als bekannte Medien zu WordPress in PHP hinzuzufügen und ihre ID abzurufen?

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 );
}

Wie Sie bemerkt haben, wird mein Foto auch in einem benutzerdefinierten Feld photo verwendet.

Nach Stunden in Google Dans Codex habe ich festgestellt, wie schlecht diese Funktionen dokumentiert sind. Vielleicht konnte ich einfach nicht die richtigen Suchbegriffe finden.

2
Christian

Wenn ich das richtig verstehe, hat jeder Post einen Filemaker und jeder Filemaker hat nur ein Foto? Die Struktur ist irgendwie unklar.

Wie auch immer, eine Möglichkeit ist die Verwendung von media_sideload_image wie unten.

media_sideload_image WIRD NICHT mit lokalen Dateien arbeiten (ein Pfad in Ihrem Dateisystem), daher müssen Sie Ihre $ -Datei ['url'] ändern, um eine gültige URL zu erhalten (http://yourhomepage.com)/chris/pictures zum Beispiel). Wenn Sie das nicht können, müssen Sie wp_upload_bits und wp_insert_attachment verwenden, aber auf diese Weise ist viel mehr Arbeit/härter.

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;
}
5
pbd