Subir archivo usando un formulario en wordpress

3 minutos de lectura

Quiero cargar archivos en una carpeta llamada cargas en mi tema de wordpress. Pero no está cargando los archivos. ¿Alguien puede ayudarme, a continuación está mi código?

código HTML

<form action="" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit">
</form>

[upload]

A continuación se muestra el código php de shortcode en el archivo functions.php

functions upload ()
{
$file = $_FILES['file'];
$name = $file['name'];
$path = "/uploads/" . basename($name);
if (move_uploaded_file($file['tmp_name'], $path)) {
    echo " Move succeed";
} else {
 echo " Move failed. Possible duplicate?";
}
}

add_shortcode('upload','upload');

Gracias

intente usar esta función. Defina esto en su function.php

<?php
function upload_user_file( $file = array() ) {

    require_once( ABSPATH . 'wp-admin/includes/admin.php' );

      $file_return = wp_handle_upload( $file, array('test_form' => false ) );

      if( isset( $file_return['error'] ) || isset( $file_return['upload_error_handler'] ) ) {
          return false;
      } else {

          $filename = $file_return['file'];

          $attachment = array(
              'post_mime_type' => $file_return['type'],
              'post_title' => preg_replace( '/\.[^.]+$/', '', basename( $filename ) ),
              'post_content' => '',
              'post_status' => 'inherit',
              'guid' => $file_return['url']
          );

          $attachment_id = wp_insert_attachment( $attachment, $file_return['url'] );

          require_once(ABSPATH . 'wp-admin/includes/image.php');
          $attachment_data = wp_generate_attachment_metadata( $attachment_id, $filename );
          wp_update_attachment_metadata( $attachment_id, $attachment_data );

          if( 0 < intval( $attachment_id ) ) {
            return $attachment_id;
          }
      }

      return false;
}
?>

y usar así

    <?php
    if(isset($_POST['upload']))
    {
       if( ! empty( $_FILES ) ) 
       {
          $file=$_FILES['file'];
          $attachment_id = upload_user_file( $file );

       }
    }
    ?>

<form action="" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" name="upload">
</form>

  • gracias, pero ¿cómo se ejecutará esta función en el archivo functions.php? No hemos usado ninguna llamada de función o puedo usar un código abreviado. … Gracias

    – Zeeshan

    04/04/2015 a las 12:05

  • ¿Por qué quieres usar shortcode? y obtendrá la identificación del archivo adjunto. Puede obtener una imagen a través de la identificación del archivo adjunto de cualquier tamaño que desee. y llamamos a esta función en la página donde existe el formulario.

    – Manoj Dhiman

    04/04/2015 a las 12:10

  • De hecho, estoy creando una funcionalidad de competencia de carga de imágenes donde los usuarios pueden cargar imágenes y otros pueden calificar y será un ganador el que tenga la mayor cantidad de votos. Entonces, ¿cómo puedo cargar en una carpeta personalizada que no sea la carpeta de carga predeterminada?

    – Zeeshan

    4 de abril de 2015 a las 14:29

  • Hay un pequeño error en el script: $attachment_id = wp_insert_attachment ($attachment, $file_return[‘url’] ); debería ser: $adjunto_id = wp_insert_attachment( $adjunto, $archivo_retorno[‘file’] );

    – flip79

    24 de abril de 2015 a las 9:15


  • Salvaste el día amigo. Gracias por compartir 🙂

    – Rishabh

    5 de enero de 2018 a las 5:43

si desea cargar en una carpeta personalizada, puede usar esta función

agregar la función en functions.php

function upload_user_file( $file = array(),$path ) {
    if(!empty($file)) 
    {


        $upload_dir=$path;
        $uploaded=move_uploaded_file($file['tmp_name'], $upload_dir.$file['name']);
        if($uploaded) 
        {
            echo "uploaded successfully ";

        }else
        {
            echo "some error in upload " ;print_r($file['error']);  
        }
    }

}

Haz un formulario en tu template file como esto

<form action="" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" name="upload">
</form>

llame a la función de carga en el archivo de plantilla como antes get_header(); función

if(isset($_POST['upload']))
    {

       if( ! empty( $_FILES ) ) 
       {
          $file=$_FILES['file'];   // file array
          $upload_dir=wp_upload_dir();
          $path=$upload_dir['basedir'].'/myuploads/';  //upload dir.
          if(!is_dir($path)) { mkdir($path); }
          $attachment_id = upload_user_file( $file ,$path);

       }
    }

  • Sé que esto es antiguo, pero ¿cómo repetirías la ruta de la imagen después de cargarla?

    – 730 ondulado

    22 de abril de 2018 a las 9:32

¿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