$_FILES está vacío cuando se trabaja con la carga de imágenes de campos personalizados de wordpress, pero funciona en el sitio web central de php

3 minutos de lectura

avatar de usuario
syed 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";

en el archivo wordpress functions.php; Los métodos de campo personalizados son:

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);
}

cuando pruebo el código anterior con core php, funciona bien, pero cuando trato de hacer lo mismo en los campos personalizados de wordpress, carga la imagen: $_FILES siempre da vacío.

da el nombre de la imagen si uso $_POST["pic"];

He intentado comprobar esto con print_rvar_dumb e incluso en wordpress funciones.php archivo con esto:

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

      die("something");
    }
  }

todavía da vacío. el tamaño del archivo que estoy tratando de cargar es de 153 kb.

Mi php.ini expediente:

file_uploads = on;
upload_max_filesize = 2M

Cualquier ayuda sería apreciada

  • intente escribir el código php arriba del formulario y no debajo de él

    – Kumar Saurabh Sinha

    6 de marzo de 2013 a las 11:22

  • en realidad, el código php está en otro método.

    – Syed Alí

    6 de marzo de 2013 a las 11:28

  • y dónde en ese método colocado. ¿Está en el mismo archivo o es diferente? ¿podría proporcionar más código para tener una idea de lo que se ha hecho?

    – Kumar Saurabh Sinha

    6 de marzo de 2013 a las 11:31

  • sí, ambas funciones están en el mismo archivo. en una función contiene la parte html

    y en otra función contiene el código php.

    – Syed Alí

    6 de marzo de 2013 a las 11:42

  • He editado el nuevo código, échale un vistazo si te proporciona más información.

    – Syed Alí

    6 de marzo de 2013 a las 11:55

Agregar el siguiente gancho en el archivo functions.php resuelve el problema.

add_action( 'post_edit_form_tag' , 'post_edit_form_tag' );

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

  • ¡Leyenda! Esto me estaba molestando.

    –Andrew Schultz

    28 de febrero de 2019 a las 6:52

quitar acción

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

  • acción eliminada, sin beneficio.

    – Syed Alí

    6 de marzo de 2013 a las 11:06

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad