es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

WP All Import: eliminar archivo original después de la importación

Tengo varios archivos zip que llegan al servidor, estos se importan utilizando el complemento WP Import All que crea una publicación por zip. Cada zip incluye un XML y algunas imágenes. Para mantener un registro y asegurarme de que cada uno se haya importado, necesito eliminar los archivos zip originales después de haber sido importados a WP. Entiendo que debo hacer esto utilizando el gancho pmxiafterxml_import, que se ejecuta después de que se realiza una importación. Pero ¿qué código debo utilizar para obtener el nombre del archivo y la ruta del archivo original que acaba de ser importado?

Este código se utiliza para eliminar la versión procesada de los archivos del complemento, pero ¿cómo debo cambiarlo para poder obtener información sobre el archivo original y eliminarlo?

function delete<em>import</em>file( $import<em>id ) {
    // Obtener objeto de importación.
    $import = new PMXI</em>Import<em>Record();
    $import->getById( $import</em>id );

    // Confirmar que el objeto de importación es válido.
    if ( ! $import->isEmpty() ) {

        // Obtener información del archivo.
        $history_file = new PMXI_File_Record(); 
        $history_file->getBy( 'import_id', $import_id );

        // Confirmar que el archivo no está vacío. 
        if ( !$history_file->isEmpty() ) {

            // Obtener la ruta del archivo.  
            $import_file = wp_all_import_get_absolute_path( $history_file->path );

            // Marcar el archivo para eliminar.
            @unlink( $import_file );
        }
    }
}
add<em>action( 'pmxi</em>after<em>xml</em>import', 'delete<em>import</em>file', 10, 1 );
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para recuperar el nombre y la ruta del archivo original que acaba de importarse, puede modificar el código agregando las siguientes líneas dentro del bloque if (!$history_file->isEmpty()):

    // Obtener la ruta del archivo original.
    $original_file_path = dirname($import_file) . '/' . $history_file->filename;
    
    // Marcar el archivo original para eliminarlo.
    @unlink($original_file_path);
    

    Este código recupera el nombre y la ruta del archivo original utilizando la propiedad filename del objeto $history_file, concatenándolo con la ruta del directorio del archivo de importación procesado. Luego marca el archivo original para su eliminación utilizando la función unlink.

    Por lo tanto, el código modificado debería verse así:

    function delete_import_file($import_id) {
        // Obtener el objeto de importación.
        $import = new PMXI_Import_Record();
        $import->getById($import_id);
    
        // Confirmar que el objeto de importación es válido.
        if (!$import->isEmpty()) {
    
            // Obtener información del archivo.
            $history_file = new PMXI_File_Record();
            $history_file->getBy('import_id', $import_id);
    
            // Confirmar que el archivo no está vacío.
            if (!$history_file->isEmpty()) {
    
                // Obtener la ruta del archivo.
                $import_file = wp_all_import_get_absolute_path($history_file->path);
    
                // Obtener la ruta del archivo original.
                $original_file_path = dirname($import_file) . '/' . $history_file->filename;
    
                // Marcar el archivo original para su eliminación.
                @unlink($original_file_path);
    
                // Marcar el archivo de importación procesado para su eliminación.
                @unlink($import_file);
            }
        }
    }
    add_action('pmxi_after_xml_import', 'delete_import_file', 10, 1);
    

Comments are closed.