Importación de medios XML de WordPress con autenticación HTTP

1 minuto de lectura

Estoy tratando de usar el complemento wordpress-importer para importar un archivo xml exportado desde otro blog de wordpress que tiene autenticación HTTP.

Tal como está, cuando ejecuto la importación, los archivos multimedia fallan con:

Failed to import Media “Image replace”: Remote server returned error response 401 Unauthorized

Si hago una búsqueda y reemplazo en el archivo XML en el URI para ser

username:password@blogtoimportfrom.com

yo obtengo

Failed to import Media “Image replace”: Remote server did not respond

¿Debería ser más selectivo con mi búsqueda/reemplazo? ¿O hay alguna otra forma de proporcionar las credenciales de autenticación?

TIA, Billy

Pude hacer que esto funcionara. Hice una búsqueda y reemplazo en todas las apariciones del URI con la versión de nombre de usuario/contraseña.

Luego tuve que modificar una línea de código de WordPress. En

wp-includes/http.php

Cambié este método:

function wp_safe_remote_request( $url, $args = array() ) {
        $args['reject_unsafe_urls'] = true;
        $http = _wp_http_get_object();
        return $http->request( $url, $args );
}

leer

function wp_safe_remote_request( $url, $args = array() ) {
        $args['reject_unsafe_urls'] = false;   // <------- just this line
        $http = _wp_http_get_object();
        return $http->request( $url, $args );
}

Tuve que usar encabezados para la autenticación porque wp estaba alterando la autenticación en la URL.

En wordpress-importador.php…

$args_ = array(
            'timeout' => 300,
            'stream' => true,
            'filename' => $upload['file'],
            'headers' => array('Authorization' => 'Basic ' . base64_encode( 'user:pass'))
    );

$remote_response = wp_safe_remote_get( $url,  $args_);

¿Ha sido útil esta solución?