Wie man einen Bildanhangdateinamen mit php umbenennt

Ich habe die ID des Bildes hochgeladen und ich muss es mit PHP umbenennen.

(Die Gründe, weil ich es tun muss, sind schwer zu erklären, und ich denke, sie sind nicht einmal für die Zwecke dieser Diskussion notwendig)

Ich habe 4 Probleme zu lösen:

  1. Benennen Sie die Datei file.jpg und die zugehörige Datei WIDTH-HEIGHT.jpg um – einfach getriggers mit der function php umbenennen
  2. Weisen Sie dem Anhang den neuen Dateinamen zu, damit WordPress den neuen Dateinamen kennt (kann ich das tun , indem ich die GUID-Spalte des Anhangs in der DB aktualisiere?)
  3. Verwalten Sie die zugehörigen Dateien (Datei-WIDTH-HEIGHT.jpg). Wo sind die Beziehungen zwischen der Hauptdatei und den verwandten gespeichert?
  4. Aktualisieren Sie all diese auf Posts / Widget / ECC. (Kann ich das mit einem ‘einfachen’ String-Replace-Verfahren für die aus der database exportierte SQL-Datei tun?)

Wie Sie sehen können, habe ich ein bisschen Verwirrung in meinem Kopf, weil ich nicht vollständig weiß, wie WordPress die Anhänge aus der Sicht eines Systems / db verwaltet.

Danke für Anregungen.

Solutions Collecting From Web of "Wie man einen Bildanhangdateinamen mit php umbenennt"

Lass uns gehen und schauen. Wenn ich willkürliche Anhänge in meine Dev-Installation nehme und die Post-Objekte und benutzerdefinierten Felder zurückschicke, bekomme ich folgendes:

object WP_Post (24) { public ID -> integer 1687 public post_author -> string (1) "1" public post_date -> string (19) "2013-09-18 14:37:07" public post_date_gmt -> string (19) "2013-09-18 21:37:07" public post_content -> string (0) "" public post_title -> string (24) "dsc20050604_133440_34211" public post_excerpt -> string (0) "" public post_status -> string (7) "inherit" public comment_status -> string (4) "open" public ping_status -> string (6) "closed" public post_password -> string (0) "" public post_name -> string (24) "dsc20050604_133440_34211" public to_ping -> string (0) "" public pinged -> string (0) "" public post_modified -> string (19) "2013-09-18 14:37:07" public post_modified_gmt -> string (19) "2013-09-18 21:37:07" public post_content_filtered -> string (0) "" public post_parent -> integer 0 public guid -> string (76) "http://img.daswordpress.com/images/dsc20050604_133440_34211.jpg" public menu_order -> integer 0 public post_type -> string (10) "attachment" public post_mime_type -> string (10) "image/jpeg" public comment_count -> string (1) "0" public filter -> string (3) "raw" } array(2) [ '_wp_attached_file' => array(1) [ string (36) "2013/09/dsc20050604_133440_34211.jpg" ] '_wp_attachment_metadata' => array(1) [ string (687) "a:5:{s:5:"width";i:640;s:6:"height";i:480;s:4:"file";s:36:"2013/09/dsc20050604_133440_34211.jpg";s:5:"sizes";a:2:{s:9:"thumbnail";a:4:{s:4:"file";s:36:"dsc20050604_133440_34211-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:6:"medium";a:4:{s:4:"file";s:36:"dsc20050604_133440_34211-300x225.jpg";s:5:"width";i:300;s:6:"height";i:225;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:10:{s:8:"aperture";d:2;s:6:"credit";s:0:"";s:6:"camera";s:9:"CYBERSHOT";s:7:"caption";s:0:"";s:17:"created_timestamp";i:1117892080;s:9:"copyright";s:0:"";s:12:"focal_length";s:3:"9.7";s:3:"iso";s:3:"100";s:13:"shutter_speed";s:6:"0.0125";s:5:"title";s:0:"";}}" ] ] 

Die Take-Aways sind jeweils auf Ihre Fragen:

  1. Das guid Feld spielt keine Rolle, es enthält eine Kopie der berechneten URL (obwohl es im WP-Kontext keine zuverlässige URL sein soll ), die meiste Zeit sollte es ignoriert werden.
  2. Die Beziehung zwischen Hauptdatei und Größen wird in benutzerdefinierten Metafeldern gespeichert.
  3. Einfaches Ersetzen funktioniert nicht , es ruiniert die serialisierte Zeichenfolge im Metadatenfeld _wp_attachment_metadata . Sie benötigen serialisieren-bewusst suchen / ersetzen-Tool, gibt es einige (WP CLI, Suche ersetzen DB, etc.).