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