Ich versuche, Bilder außerhalb der WordPress-Umgebung zu einem benutzerdefinierten Post über PHP abzurufen und einzufügen.
Wie man das Bild in das WordPress-Upload-Verzeichnis verschiebt / hochlädt, wie man es in WordPress tut und das Bild gegen den benutzerdefinierten Beitrag auf das empfohlene Bild einstellt?
Auch um ein Bild in die benutzerdefinierte Post-Galerie hochzuladen?
Unten ist mein Code
$filename = $image['name'];
$target_path = "../wp-content/uploads/";
$target_path = $target_path . $filename;
$wp_filetype = wp_check_filetype(basename($filename), null );
$wp_upload_dir = wp_upload_dir();
$attachment = array(
'guid' => $wp_upload_dir['baseurl'] . '/' . basename( $filename ),
'post_mime_type' => $wp_filetype['type'],
'post_title' => preg_replace('/\.[^.]+$/', '', basename($filename)),
'post_content' => '',
'post_status' => 'inherit',
);
$attach_id = wp_insert_attachment( $attachment, $target_path, $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 );
Ich habe es geschafft, das Bild in mein Upload-Verzeichnis hochzuladen, kann aber den Ordner für Jahr und Datum nicht erstellen. das gibt es irgendeine wp funktion dafür ??
quelle
media_sideload_image
auf setzen'id'
und es wird die neue Anhang-ID zurückgegeben. ZB:$new_att_id = media_sideload_image($image, $post_id, "image description...", 'id'); if(!is_wp_error($new_att_id)) { set_post_thumbnail($post_id, $new_att_id); }
Probieren Sie diese Erklärung zum Hochladen mit einem Pfad und einer Beitrags-ID aus .
Hier ist der Code (für Legacy):
quelle
Bitte beziehen Sie sich auf den folgenden Code, der das vorgestellte Bild programmgesteuert festlegt. http://www.pearlbells.co.uk/code-snippets/set-featured-image-wordpress-programmatically/
quelle
Vielleicht habe ich ein Missverständnis, aber warum sollten Sie das außerhalb der WordPress-Umgebung tun? Diese Funktionalität zu replizieren wäre eine Menge Arbeit! WordPress kann viel mehr als nur die Datei hochladen und in einem bestimmten Verzeichnis ablegen. Beispielsweise können Sie steuern, welche Benutzer Dateien hochladen dürfen, Datenbankeinträge zum Hochladen hinzufügen und Bildbeziehungen einrichten sowie Aktionen und Filter für externe Plugins ausführen, die von diesen abhängig sind Datei-Upload - alles unter Einhaltung der Site-Einstellungen (in Bezug auf Namenskonventionen, Speicherort des Medien-Uploads usw.).
Wenn Sie einfach Dateien hochladen möchten, ohne im WordPress-Administratorbereich angemeldet zu sein, beispielsweise um Dateien von einer externen Site hochzuladen, sollten Sie sich die XML-RPC-API und insbesondere die
uploadFile
Methode ansehen .Eine andere Möglichkeit könnte darin bestehen, eine Mini-API selbst zu schreiben. Grundsätzlich möchten Sie Folgendes tun:
wp_upload_dir()
diese Option , um den Upload-Verzeichnispfad abzurufensanitize_file_name()
, den Pfad zu erstellen und die Datei an den resultierenden Speicherort zu schreiben.wp_insert_attachment()
diese Option , um den Anhang in der Datenbank zu speichern (wp_check_filetype()
dies ist für die Einstellung hilfreichpost_mime_type
). Optional können Sie auchpost_parent
den_thumbnail_id
Meta-Key setzen und wenn Sie möchten.wp_create_nonce()
undwp_verify_nonce()
, um das Formular ein kleines bisschen sicherer zu machen.quelle
wp_insert_attachment()
, es sollte viel tun, was du brauchst, denke ich. Ich würde dringend davon abraten, die Datenbank manuell außerhalb von WordPress zu ändern, wenn Sie dies tun. Schauen Sie sich stattdessen einfach die WordPress-Quelle an und versuchen Sie, die Teile zu identifizieren, die für das Hinzufügen von Post-Daten, das Bearbeiten von Datei-Uploads und das Einfügen von Anhängen verantwortlich sind. Mit anderen Worten, ziemlich genau das, was ich oben in meiner Antwort skizziert habe.