update_options und eindeutige Dateinamen

Ich war in der Lage, eine automatische Aufgabe von WordPress während eines bestimmten Dateityp-Uploads vorübergehend zu deaktivieren, was nett ist. Zum Beispiel habe ich den üblichen Upload-Pfad für die PDF-Uploads folgendermaßen geändert:

//change the normal path update_option('upload_path','wp-content/uploads/attachments/'.$id); //upload the file $upload = wp_upload_bits($pdffile,null,file_get_contents($pdffile_temp)); //get the standard path back update_option('upload_path',''); 

Nun möchte ich das gleiche mit der function “wp unique filename” machen, die automatisch von WordPress aufgerufen wird. Genauso wie ich den Pfad für diese spezielle Upload-Routine vorübergehend geändert habe, möchte ich die Datei nicht umbenennen, wenn eine andere im Zielordner den gleichen Namen hat (ich würde stattdessen die alte Datei lieber mit der neuen Datei überschreiben).

Wie könnte ich das tun?

Vielen Dank.

Solutions Collecting From Web of "update_options und eindeutige Dateinamen"

Willkommen in der Löwenhöhle

Sie sind also bereit, in den brennenden Ofen oder in die Löwenhöhle zu steigen und den Upload-Pfad zu ändern. Das ist keine gute Idee, ohne zu untersuchen, was hinter den Kulissen passiert. Ich kann Ihnen keine vollständige Beschreibung geben, da es so viele Dinge wie Filter, Optionen, Konstanten usw. gibt, aber ich kann Ihnen eine Empfehlung geben: Tue nicht. Machen. Dies. Solche Dinge neigen dazu, für eine Weile zu arbeiten. Und dann plötzlich brechen, als Sie einen der Randfälle getroffen haben. Und Sie werden sich fragen, was passiert ist. callbacke, Optionen, etc. werden das Problem vor Ihnen verbergen und Sie werden ewig brauchen, um diesen Fehler zu verfolgen.

BEARBEITEN

Hand / Hard Code solche Sachen nicht.

 // Get original value $temp = get_option( 'upload_path' ); // Assign custom value update_option( 'upload_path', "wp-content/uploads/attachments/{$id}" ); // do custom stuff // Move old value back in update_option( 'upload_path', $temp ); 

Die function wp_unique_filename( $dir, $filename, $unique_filename_callback = null ) benötigt drei Argumente. Der dritte ist ein benutzerdefinierter callback und optional. Es benötigt drei Argumente: $dir, $name, $ext . Verwenden Sie diese Option, wenn Sie diese benutzerdefinierte Einstellung benötigen.

  • $dir – Das erste Argument von wp_unique_filename() fn
  • $ext – abgerufen via pathinfo() (PHP default fn) – die Dateierweiterung. In Ihrem Fall if ( 'pdf' === strtolower( $ext ) ) .
  • $name – Der Dateiname ohne Erweiterung

Der benutzerdefinierte callback kann auch komplett deaktiviert werden (ich weiß nicht was dann passiert – vielleicht fällt dir der Himmel auf den Kopf?). Sie können dies tun, indem Sie einfach die corefunktionen von __return_false , __return_null (oder vielleicht sogar __return_zero ?) __return_zero .