¿Cómo soluciono un mensaje de error en wp-blog-header.php?
Recientemente actualicé un sitio y recibí el siguiente mensaje de error:
Fatal error: Call to undefined function wp() in /home/atlmp/public_html/wp-blog-header.php on line 14
Revisé el archivo y no parece haber ningún problema, así que no puedo entender qué está mal.
<?php
/**
* Carga el entorno y la plantilla de WordPress.
*
* @package WordPress
*/
if ( !isset($wp_did_header) ) {
$wp_did_header = true;
require_once( dirname(__FILE__) . '/wp-load.php' );
wp();
require_once( ABSPATH . WPINC . '/template-loader.php' );
}
?>
Cualquier ayuda sería muy apreciada.

Para cargar WordPress es suficiente con cargar "wp-load.php" como hiciste. No reconozco la función wp() y no la he encontrado en el código fuente. Como otras personas parecen tener el mismo problema en internet, supongo que tiene que ver con un plugin o posiblemente una instalación de WordPress desactualizada.
Desactiva todos tus plugins y comprueba si eso resuelve el problema.
Por curiosidad: ¿Para qué es este archivo?

Es un sitio web de directorio. Solo estaba actualizando WP desde el panel de control. He procedido a eliminar todo y he subido una nueva instalación por FTP. Todo parece estar funcionando bien ahora. Gracias por tu ayuda.

Me enfrenté al mismo problema y aquí está la mejor solución Corregir el error wp-blog-header.php

Me enfrenté a este error al mover los archivos de mi sitio de HostGator a otro host, lo que hice fue comprimir los archivos en ZIP y transferirlos por FTP al nuevo host. Algo se arruinó al comprimir los archivos, cuando los comprimí con tar.gz todo funcionó correctamente. Eso fue lo que me ayudó después de varias horas,
probablemente algo relacionado con la codificación de los archivos.

Hay un problema con WordPress.
Por favor, actualiza tu archivo wp_load.php
con este código.
<!-- inicio -->
<?php
/**
* Archivo de arranque para definir la constante ABSPATH
* y cargar el archivo wp-config.php. El archivo wp-config.php
* luego cargará el archivo wp-settings.php, que
* configurará el entorno de WordPress.
*
* Si no se encuentra el archivo wp-config.php, se mostrará
* un error solicitando al visitante que configure el
* archivo wp-config.php.
*
* También buscará wp-config.php en el directorio padre de WordPress
* para permitir que el directorio de WordPress permanezca
* sin cambios.
*
* @package WordPress
*/
/** Define ABSPATH como el directorio de este archivo */
if ( ! defined( 'ABSPATH' ) ) {
define( 'ABSPATH', dirname( __FILE__ ) . '/' );
}
error_reporting( E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR );
/*
* Si wp-config.php existe en la raíz de WordPress, o si existe en la raíz y wp-settings.php
* no existe, carga wp-config.php. La verificación secundaria de wp-settings.php tiene el beneficio adicional
* de evitar casos donde el directorio actual es una instalación anidada, ej. / es WordPress(a)
* y /blog/ es WordPress(b).
*
* Si ninguna de las condiciones es verdadera, inicia el proceso de configuración.
*/
if ( file_exists( ABSPATH . 'wp-config.php' ) ) {
/** El archivo de configuración reside en ABSPATH */
require_once( ABSPATH . 'wp-config.php' );
} elseif ( @file_exists( dirname( ABSPATH ) . '/wp-config.php' ) && ! @file_exists( dirname( ABSPATH ) . '/wp-settings.php' ) ) {
/** El archivo de configuración reside un nivel arriba de ABSPATH pero no es parte de otra instalación */
require_once( dirname( ABSPATH ) . '/wp-config.php' );
} else {
// No existe un archivo de configuración
define( 'WPINC', 'wp-includes' );
require_once( ABSPATH . WPINC . '/load.php' );
// Estandariza las variables $_SERVER en todas las configuraciones.
wp_fix_server_vars();
require_once( ABSPATH . WPINC . '/functions.php' );
$path = wp_guess_url() . '/wp-admin/setup-config.php';
/*
* Redireccionaremos a setup-config.php. Si bien esto no debería resultar
* en un bucle infinito, sería tonto asumirlo, ¿no crees? Si
* estamos dando vueltas en círculos, nuestro último recurso es "¿Necesitas más ayuda?"
*/
if ( false === strpos( $_SERVER['REQUEST_URI'], 'setup-config' ) ) {
header( 'Location: ' . $path );
exit;
}
define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' );
require_once( ABSPATH . WPINC . '/version.php' );
wp_check_php_mysql_versions();
wp_load_translations_early();
// Finaliza con un mensaje de error
$die = sprintf(
/* translators: %s: wp-config.php */
__( "Parece que no hay un archivo %s. Lo necesitamos para poder comenzar." ),
'<code>wp-config.php</code>'
) . '</p>';
$die .= '<p>' . sprintf(
/* translators: %s: URL de documentación. */
__( "¿Necesitas más ayuda? <a href='%s'>La tenemos</a>." ),
__( 'https://wordpress.org/support/article/editing-wp-config-php/' )
) . '</p>';
$die .= '<p>' . sprintf(
/* translators: %s: wp-config.php */
__( "Puedes crear un archivo %s mediante una interfaz web, pero esto no funciona en todas las configuraciones de servidor. La forma más segura es crearlo manualmente." ),
'<code>wp-config.php</code>'
) . '</p>';
$die .= '<p><a href="' . $path . '" class="button button-large">' . __( 'Crear un archivo de configuración' ) . '</a>';
wp_die( $die, __( 'WordPress › Error' ) );
}
<!-- fin -->
Y por favor cambia los permisos del archivo de 644 a 444.

Por favor, [edita] tu respuesta y añade una explicación: ¿por qué eso podría resolver el problema? Parece una muy mala idea editar el núcleo sin ninguna razón.

De acuerdo @fuxia.
@sumer-signh-harawat -- Si fueras tan amable de explicarle a @marna (y al resto de nosotros que estamos leyendo esto) por qué los cambios en wp-load.php
solucionarían el problema. Además, es probable que estos cambios se sobrescriban durante una actualización de WordPress, por lo que debería mencionarse que esta modificación debe verificarse para asegurarse de que permanezca después de cada actualización (y volver a implementarse cada vez que se cambie).
