$_FILES ist leer, wenn mit dem Hochladen von benutzerdefinierten WordPress-Feldbildern gearbeitet wird, aber es funktioniert auf der zentralen PHP-Website

Lesezeit: 3 Minuten

Benutzer-Avatar
Syd Ali

<form enctype="multipart/form-data" method="post" action="uploader.php">
        <input type="file" name="pic" /><br />
        <input type="submit" value="Upload File" />
    </form>

$file_title = $_FILES["pic"]["name"];
echo "$file_title";

in der WordPress-Datei functions.php; benutzerdefinierte Feldmethoden sind:

function credits_meta() {
  global $post;

 $custom = get_post_custom($post->ID);
 $designers = $custom["designers"][0];
 $developers = $custom["developers"][0];
 $producers = $custom["producers"][0];
 ?>

<form method="POST" enctype="multipart/form-data">
 <p><label>Designed By:</label><br />
 <textarea cols="50" rows="5" name="designers"><?php echo $designers; ?></textarea></p>
 <p><label>Built By:</label><br />
 <textarea cols="50" rows="5" name="developers"><?php echo $developers;  ?> </textarea></p>
 <p><label>Upload Image :</label><br />
 <input type="file" name="myPhoto" size="25"/></p>
 </form>

  <?php
  }
function save_details(){
 global $post;

 $target_path = get_bloginfo('template_directory')."/images/";
 $file_title = $_FILES["myPhoto"]["name"];

$new_file_title = "wp_".$file_title;

update_post_meta($post->ID, "year_completed", $_POST["year_completed"]);
update_post_meta($post->ID, "designers", $_POST["designers"]);
update_post_meta($post->ID, "developers", $_POST["developers"]);
update_post_meta($post->ID, "producers", $new_file_title);
}

Wenn ich den obigen Code mit Core PHP versuche, funktioniert es gut, aber wenn ich versuche, das Gleiche beim Hochladen von benutzerdefinierten Feldern in WordPress zu tun: $_FILES gibt immer leer.

Es gibt den Namen des Bildes an, wenn ich es verwende $_POST["pic"];

Ich habe versucht, dies mit zu überprüfen print_rvar_dumb und sogar in WordPress Funktionen.php Datei damit:

  add_action('init', 'myfunction');
  function myfunction(){
    if($_FILES){

      die("something");
    }
  }

trotzdem gibt es leer. Die Dateigröße, die ich hochladen möchte, beträgt 153 KB.

Mein php.ini Datei:

file_uploads = on;
upload_max_filesize = 2M

Jede Hilfe wäre willkommen

  • Versuchen Sie, den PHP-Code über dem Formular und nicht darunter zu schreiben

    – Kumar Saurabh Sinha

    6. März 2013 um 11:22 Uhr

  • Tatsächlich befindet sich der PHP-Code in einer anderen Methode.

    – Syed Ali

    6. März 2013 um 11:28 Uhr

  • und wo in dieser Methode platziert. ist es in der gleichen datei oder in einer anderen? könnten Sie bitte mehr Code bereitstellen, um eine Vorstellung davon zu bekommen, was getan wurde

    – Kumar Saurabh Sinha

    6. März 2013 um 11:31 Uhr

  • Ja, beide Funktionen befinden sich in derselben Datei. In einer Funktion enthält es den HTML-Teil

    und in einer anderen Funktion enthält es den PHP-Code.

    – Syed Ali

    6. März 2013 um 11:42 Uhr

  • Ich habe den neuen Code bearbeitet, überprüfen Sie ihn, ob er Ihnen mehr Informationen bietet.

    – Syed Ali

    6. März 2013 um 11:55 Uhr

Das Hinzufügen des folgenden Hooks in der Datei functions.php löst das Problem.

add_action( 'post_edit_form_tag' , 'post_edit_form_tag' );

function post_edit_form_tag( ) {
   echo ' enctype="multipart/form-data"';
}

  • Legende! Das hat mich genervt.

    – Andreas Schultz

    28. Februar 2019 um 6:52 Uhr

Aktion entfernen

<form enctype="multipart/form-data" method="post" action="">

  • Aktion entfernt, kein Nutzen.

    – Syed Ali

    6. März 2013 um 11:06 Uhr

1363110cookie-check$_FILES ist leer, wenn mit dem Hochladen von benutzerdefinierten WordPress-Feldbildern gearbeitet wird, aber es funktioniert auf der zentralen PHP-Website

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy