require_once wordpress ошибка с plugins_url - PullRequest
0 голосов
/ 14 января 2020

Я работаю над пользовательским плагином для WordPress, чтобы показать пользователям экран режима обслуживания. Я следовал руководству, но у меня есть некоторые проблемы, пока я отлаживаю код. xdebug покажет мне эти ошибки:

Предупреждение: require_once (): http: // обертка отключена в конфигурации сервера с помощью allow_url_include = 0

Предупреждение: require_once ( http://localhost/wordpress/wp-content/plugins/maintenance-mode/assets/maintenance.php): не удалось открыть поток: не найдено подходящей оболочки

Неустранимая ошибка: require_once (): Не удалось открыть окно 'http://localhost/wordpress/wp-content/plugins/maintenance-mode/assets/maintenance.php' (include_path = ' .: / usr / local / php5 / lib / php ')

Я использую plugins_url для загрузки пути, где сохраняется файл обслуживания. php, и до Я использовал ошибку plugins_dir_path, но с тем же результатом.

Есть ли исправление для этого?

class Maintenance {

  public function init()
  {
    add_action( 'wp_loaded', array($this, 'maintenance_mode') );
    //add_action( 'admin_init', array($this, 'maintenance_settings') );
  }

  public function maintenance_mode()
  {
    global $pagenow;
    if( $pagenow !== 'wp-login.php' && !current_user_can('manage_options') && !is_admin() ){
      header( $_SERVER['SERVER_PROTOCOL'] . '503 Service Temporarily Unavailable', true, 503 );
      header( 'Content-Type: text/html; charset=utf-8' );
      require_once plugins_url('assets/maintenance.php' ,__FILE__);
    }
    die();
  }
}

Ответы [ 2 ]

1 голос
/ 14 января 2020

Попробуйте использовать plugin_dir_path( __FILE__ ):

class Maintenance {

    public function init()
    {
        add_action( 'wp_loaded', array($this, 'maintenance_mode') );
        //add_action( 'admin_init', array($this, 'maintenance_settings') );
    }

    public function maintenance_mode()
    {
        global $pagenow;
        if( $pagenow !== 'wp-login.php' && !current_user_can('manage_options') && !is_admin() ){
            header( $_SERVER['SERVER_PROTOCOL'] . '503 Service Temporarily Unavailable', true, 503 );
            header( 'Content-Type: text/html; charset=utf-8' );
            require_once plugin_dir_path( __FILE__ ) . 'assets/maintenance.php';
        }
        die();
    }
}
1 голос
/ 14 января 2020

Вы можете использовать:

require_once dirname( __FILE__ ) . '/assets/maintenance.php'

вместо

require_once plugins_url('assets/maintenance.php' ,__FILE__);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...