• David

    (@dvdmrnjcbssn)


    Necesito subir un archivo en el registro de un usuario, que se guarde en la base de datos y se me muestre en una columna nueva en la pagina de usuarios de WordPress.

    Tengo el siguiente código en mi function.php donde le indico con una función que me añada un campo de archivo en el formulario de registro. Otra función para que guarde el archivo en la base de datos y otra para que me muestre el archivo en la pagina de usuarios, donde poder ver el archivo.

    La columna en la pagina de archivo se me muestra pero el input de archivo en el formulario no.

    add_action( 'register_form', 'agregar_campo_archivo' );
    function agregar_campo_archivo() {
        ?>
        <p>
            <label for="archivo">Archivo:</label>
            <input type="file" name="archivo" id="archivo">
        </p>
        <?php
    }
    
    
    add_action( 'user_register', 'guardar_archivo_registro', 10, 1 );
    function guardar_archivo_registro( $user_id ) {
        if ( isset( $_FILES['archivo'] ) && ! empty( $_FILES['archivo']['name'] ) ) {
            $upload = wp_upload_bits( $_FILES['archivo']['name'], null, file_get_contents( $_FILES['archivo']['tmp_name'] ) );
            if ( isset( $upload['error'] ) && $upload['error'] != 0 ) {
                wp_die( 'Error subiendo archivo' );
            } else {
                update_user_meta( $user_id, 'archivo', $upload['url'] );
            }
        }
    }
    
    
    
    add_filter( 'manage_users_columns', 'agregar_columna_archivo' );
    function agregar_columna_archivo( $columns ) {
        $columns['archivo'] = 'Archivo';
        return $columns;
    }
    
    add_filter( 'manage_users_custom_column', 'mostrar_valor_archivo', 10, 3 );
    function mostrar_valor_archivo( $value, $column_name, $user_id ) {
        if ( 'archivo' == $column_name ) {
            $archivo = get_user_meta( $user_id, 'archivo', true );
            if ( ! empty( $archivo ) ) {
                $value = '<a href="' . esc_url( $archivo ) . '">Descargar archivo</a>';
            } else {
                $value = '-';
            }
        }
        return $value;
    }

    No llego a ver el error… Alguna cosa que veais?

    Muchas gracias!

    La página con la que necesito ayuda: [accede para ver el enlace]

Viendo 1 respuesta (de un total de 1)
  • Moderador kallookoo

    (@kallookoo)

    Hola @dvdmrnjcbssn

    Prueba cambiando el if del $upload por

    
    if ( empty( $upload['error'] ) ) {
       update_user_meta( $user_id, 'archivo', $upload['url'] );
    } else {
      wp_die( 'Error subiendo archivo' );
    }
    

    Aparte de eso, tampoco veo nada raro.

Viendo 1 respuesta (de un total de 1)
  • El debate ‘Subir archivo en formulario de registro y mostrarlo en la pagina de usuarios’ está cerrado a nuevas respuestas.