Как исправить ошибку wp-blog-header.php?
Недавно я обновил сайт и получил следующее сообщение об ошибке:
Fatal error: Call to undefined function wp() in /home/atlmp/public_html/wp-blog-header.php on line 14
Я проверил файл, и там, кажется, нет никаких проблем, поэтому я не могу понять, в чем дело?
<?php
/**
* Загружает окружение 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' );
}
?>
Буду очень благодарен за любую помощь.

Для загрузки WordPress достаточно загрузить файл "wp-load.php", как вы и сделали. Я не знаком с функцией wp() и не нашел ее в исходном коде. Поскольку другие пользователи в интернете сталкиваются с такой же проблемой, возможно, это связано с плагином или устаревшей версией WordPress.
Отключите все плагины и проверьте, решит ли это проблему.
Из любопытства: для чего предназначен этот файл?

Это сайт-каталог. Я просто обновлял WordPress из панели управления? Я удалил все и загрузил новую установку через FTP. Теперь все, кажется, работает нормально. Спасибо за помощь.

Я столкнулся с той же проблемой, и вот лучшее решение: Исправить ошибку wp-blog-header.php

Я столкнулся с этой ошибкой при переносе файлов моего сайта с HostGator на другой хостинг. Я заархивировал файлы в ZIP и передал их на новый хостинг через FTP. Похоже, что-то пошло не так при сжатии файлов. Когда я заархивировал их с помощью tar.gz, всё заработало нормально. Это помогло мне после нескольких часов мучений.
Вероятно, проблема была в кодировке файлов.

Возникла проблема с WordPress.
Пожалуйста, обновите ваш файл wp_load.php
, используя этот код.
<!-- start -->
<?php
/**
* Базовый файл для установки константы ABSPATH
* и загрузки файла wp-config.php. Файл wp-config.php
* затем загрузит файл wp-settings.php, который
* настроит окружение WordPress.
*
* Если файл wp-config.php не найден, будет отображена ошибка
* с просьбой к посетителю настроить файл wp-config.php.
*
* Также выполняется поиск wp-config.php в родительской директории WordPress,
* чтобы оставить директорию WordPress нетронутой.
*
* @package WordPress
*/
/** Определение ABSPATH как директории этого файла */
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 );
/*
* Если wp-config.php существует в корне WordPress, или если он существует в корне,
* а wp-settings.php нет, загрузить wp-config.php. Вторичная проверка wp-settings.php
* также помогает избежать случаев, когда текущая директория является вложенной установкой,
* например, / — это WordPress(a), а /blog/ — WordPress(b).
*
* Если ни одно из условий не выполняется, инициировать загрузку процесса установки.
*/
if ( file_exists( ABSPATH . 'wp-config.php' ) ) {
/** Конфигурационный файл находится в ABSPATH */
require_once( ABSPATH . 'wp-config.php' );
} elseif ( @file_exists( dirname( ABSPATH ) . '/wp-config.php' ) && ! @file_exists( dirname( ABSPATH ) . '/wp-settings.php' ) {
/** Конфигурационный файл находится на уровень выше ABSPATH, но не является частью другой установки */
require_once( dirname( ABSPATH ) . '/wp-config.php' );
} else {
// Конфигурационный файл не существует
define( 'WPINC', 'wp-includes' );
require_once( ABSPATH . WPINC . '/load.php' );
// Стандартизация переменных $_SERVER для разных настроек.
wp_fix_server_vars();
require_once( ABSPATH . WPINC . '/functions.php' );
$path = wp_guess_url() . '/wp-admin/setup-config.php';
/*
* Мы собираемся перенаправить на setup-config.php. Хотя это не должно привести
* к бесконечному циклу, глупо предполагать, что так и будет. Если мы ходим по кругу,
* наш последний вариант — "Нужна дополнительная помощь?"
*/
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();
// Завершение с сообщением об ошибке
$die = sprintf(
/* translators: %s: wp-config.php */
__( "Похоже, файл %s отсутствует. Он необходим для начала работы." ),
'<code>wp-config.php</code>'
) . '</p>';
$die .= '<p>' . sprintf(
/* translators: %s: Ссылка на документацию. */
__( "Нужна дополнительная помощь? <a href='%s'>Мы поможем</a>." ),
__( 'https://wordpress.org/support/article/editing-wp-config-php/' )
) . '</p>';
$die .= '<p>' . sprintf(
/* translators: %s: wp-config.php */
__( "Вы можете создать файл %s через веб-интерфейс, но это работает не на всех серверах. Надежнее создать файл вручную." ),
'<code>wp-config.php</code>'
) . '</p>';
$die .= '<p><a href="' . $path . '" class="button button-large">' . __( 'Создать файл конфигурации' ) . '</a>';
wp_die( $die, __( 'WordPress › Ошибка' ) );
}
<!-- end -->
И, пожалуйста, измените права доступа к файлу с 644 на 444.

Пожалуйста, [отредактируйте] ваш ответ и добавьте объяснение: почему это может решить проблему? Это выглядит как очень плохая идея — редактировать ядро системы без какой-либо причины.

Согласен, @fuxia.
@sumer-signh-harawat — Будьте добры объяснить @marna (и всем нам, кто это читает), почему изменения в wp-load.php
могут исправить проблему. Кроме того, эти изменения, скорее всего, будут перезаписаны при обновлении WordPress, поэтому стоит отметить, что данную модификацию необходимо проверять после каждого обновления (и повторно применять каждый раз, когда она изменяется).
