Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature Request: Import mit Bild/Gallerie #202

Open
wackerm opened this issue Jun 15, 2020 · 4 comments
Open

Feature Request: Import mit Bild/Gallerie #202

wackerm opened this issue Jun 15, 2020 · 4 comments
Labels
Type: Enhancement New feature or request

Comments

@wackerm
Copy link

wackerm commented Jun 15, 2020

Ich baue gerade die Internetseite für unsere Feuerwehr neu auf und finde das Plugin aufgrund der einfachen Pflege der Einsatzberichte wirklich toll.
Nun würde ich gerne die bestehenden Einsätze importieren, was grundsätzlich funktioniert.
Allerdings haben wir auch viele Fotos zu den bestehenden Einsatzberichten.
Diese würde ich nun gerne mit "importieren". Ich könnte zum Beispiel die kommaseparierten Pfade zu den Bildern in der CSV-Datei angeben und diese sollten dann beim Import den Berichten als Attachment hinzugefügt werden. Dann könnte ich zum Beispiel mit einem Gallery-Shortcode die Bilder als Gallery im Einsatzbericht darstellen, oder?
Hochgeladen sind die Bilder schon, aber die manuelle Verknüpfung zu den Einsatzberichten ist bei knapp 1k Berichte etwas aufwändig... ;-)
Außerdem wäre dann evtl. auch das setzen eines Beitragsbildes möglich, oder?

Beispiel-CSV:

...;Beitragsbild;Bilder
...;"\images\upload\2019\30.12\DSC 12345.jpg";"\images\upload\2019\30.12\DSC 12346.jpg","\images\upload\2019\30.12\DSC 12347.jpg"
@abrain
Copy link
Owner

abrain commented Jun 16, 2020

Ja, das klingt nach Arbeit, die man lieber nicht manuell machen möchte :)

Die Bilder können mit dem [gallery]-Shortcode in die Einsatzberichte eingebunden werden. Dazu müssten sie theoretisch nicht mal mit den Berichten verknüpft sein, aber es ist auf jeden Fall sauberer, wenn die Bilder zugeordnet sind.

Im Prinzip ist es möglich, die Attachments anhand der Pfade zu identifizieren, das könnte aber etwas wackeliger sein (\ oder / als Trenner, Groß-/Kleinschreibung, ...). Wäre es stattdessen möglich, die Attachment-IDs anzugeben?

@wackerm
Copy link
Author

wackerm commented Jun 16, 2020

Leider habe ich die Attachments-IDs bisher nicht, daher müsste ein Mapping stattfinden.
Die Pfade sind aber URLs daher ist es eindeutig (/ als Trenner, Case-Sensitiv,...)

Eine Möglichkeit auf Seite WP habe ich hier gefunden (https://developer.wordpress.org/reference/functions/wp_insert_attachment):

// $filename should be the path to a file in the upload directory.
$filename = '/path/to/uploads/2013/03/filename.jpg';
 
// The ID of the post this attachment is for.
$parent_post_id = 37;
 
// Check the type of file. We'll use this as the 'post_mime_type'.
$filetype = wp_check_filetype( basename( $filename ), null );
 
// Get the path to the upload directory.
$wp_upload_dir = wp_upload_dir();
 
// Prepare an array of post data for the attachment.
$attachment = array(
	'guid'           => $wp_upload_dir['url'] . '/' . basename( $filename ), 
	'post_mime_type' => $filetype['type'],
	'post_title'     => preg_replace( '/\.[^.]+$/', '', basename( $filename ) ),
	'post_content'   => '',
	'post_status'    => 'inherit'
);
 
// Insert the attachment.
$attach_id = wp_insert_attachment( $attachment, $filename, $parent_post_id );
 
// Make sure that this file is included, as wp_generate_attachment_metadata() depends on it.
require_once( ABSPATH . 'wp-admin/includes/image.php' );
 
// Generate the metadata for the attachment, and update the database record.
$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
wp_update_attachment_metadata( $attach_id, $attach_data );

Und für das Titelbild:

set_post_thumbnail( $parent_post_id, $attach_id );

Ich habe mich nur in den Import-Code noch nicht so richtig orientiert, sonst könnte ich ggf. schon mit einem Pull-Req aufwarten ;-)

@abrain
Copy link
Owner

abrain commented Jun 30, 2020

Ah ok, das heißt die Bilder sind zwar hochgeladen, aber nicht über WordPress sondern direkt per FTP o.ä.? Ich bin davon ausgegangen, dass sie schon in der Mediathek wären. Ok, in dem Fall passt dann das Code-Fragment, das du gefunden hast sehr gut. Wenn man die Bilder in WordPress hochlädt, werden gleich noch die ganzen Vorschaubilder erzeugt, aber das übernimmt hier dann die Funktion wp_generate_attachment_metadata(). Passt also auch.

Ja, der Import-Code ist etwas ähm gewöhnungsbedürftig 🙈😄 Der gehört generell überarbeitet und mit Tests versehen. Vor allem aber sollte der Import im Hintergrund lauffähig und unterbrechbar sein. Bei 1000 Einsätzen inkl. Bilder umrechnen mache ich mir mit der aktuellen Implementierung wenig Hoffnung. Bis wann soll denn die neue Seite stehen?

@Smart86
Copy link

Smart86 commented Dec 17, 2022

Also wenn es hier noch eine Möglichkeit geben würde, Bilder von extern über CSV zu importieren, das wäre wirklich perfekt!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: Enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants