Wp_install manual () dificultades

Estoy tratando de instalar automáticamente una distribución de WordPress en PHP con el siguiente código:

$base_dir = '/home/username/wordpress_location'; chdir($base_dir); define('WP_SITEURL', 'http://www.domain.com/'); define('WP_INSTALLING', true); require_once 'wp-load.php'; require_once 'wp-admin/includes/upgrade.php'; require_once 'wp-includes/wp-db.php'; $result = wp_install($title, $username, $email, true, null, $password); 

Cuando ejecuto wp_install () [ /wp-admin/includes/upgrade.php ] manualmente , aparece este error:

Fatal error: Call to a member function flush_rules() on a non object in /home/username/public_html/wp-admin/includes/upgrade.php on line 85

Después de mirar el código fuente de WordPress , parece que $ wp_rewrite está intentando llamar a flush_rules () cuando $ wp_rewrite no existe.

Otro giro extraño es que esto es prácticamente el mismo código que wordpress-cli-installer . Mi archivo wp-config.php se genera automáticamente y está listo.

¿Cómo funciona el código de wordpress-cli-installer pero el mío no?

EDITAR:

Después de muchas pruebas y errores, descubrí que mi código no funcionaba porque se definió y ejecutó en una función. Después de separar el código de la función y ejecutarlo, funcionó. Sin embargo, eso plantea otra pregunta. ¿Es posible ejecutar el código anterior dentro de una función? He intentado usar $GLOBALS += get_defined_vars(); hackear después de las instrucciones require_once , pero eso no parece hacer nada. En otras palabras:

  

How do I use the require_once inside of a function while still being able to access and manage the globals? Esa idea es incorrecta en general. Puede hacer solo las variables globales requeridas (que pueden cambiar de una versión a otra). Pero el camino “sucio” es

 function make_global() { $test_var = "I'm local"; $GLOBALS += get_defined_vars(); } var_dump(isset($test_var)); make_global(); var_dump(isset($test_var));