如何在 wordpress 主题/插件中包含 Guzzle

Cre*_*rem 4 wordpress guzzle

我如何将 Guzzle 包含到 wordpress 主题或插件中。由于主题/插件将分发给非技术用户,我不能要求他们通过 Composer 这样做。

我已将 guzzle 包上传到 libs/resources/ 和functions.php 中的主题文件夹中,并且我仅为 guzzle 类定义了此自动加载器

spl_autoload_register( 'guzzle_autoloader' );
function guzzle_autoloader( $class_name ) {
  if ( false !== strpos( $class_name, 'GuzzleHttp' ) ) {
  $classes_dir = realpath( plugin_dir_path( __FILE__ ) ) . DIRECTORY_SEPARATOR . 'libs' . DIRECTORY_SEPARATOR.'resources'. DIRECTORY_SEPARATOR .'guzzle-master'. DIRECTORY_SEPARATOR .'src'. DIRECTORY_SEPARATOR ;

  $replace="GuzzleHttp\\";
  $class_file = str_replace($replace,'', $class_name);

  print 'request '.$classes_dir . $class_file.'</br>';

  require_once $classes_dir . $class_file.'.php';

  }
 }
Run Code Online (Sandbox Code Playgroud)

但是我仍然收到此错误“调用未定义的函数 GuzzleHttp\choose_handler()”

Yas*_*che 11

作曲家自动加载怎么样?

  1. 简单地需要 Guzzle packagist repo 和 Composer

     composer require guzzlehttp/guzzle
    
    Run Code Online (Sandbox Code Playgroud)
  2. 安装

     composer install
    
    Run Code Online (Sandbox Code Playgroud)
  3. 只需在 Wordpress 插件中自动加载 Guzzle 类

     require 'vendor/autoload.php';
     //use GuzzleHttp\Client;
    
    Run Code Online (Sandbox Code Playgroud)

  • 如果您计划使用 Guzzle 库分发插件,则应为其添加前缀/作用域,以避免与其他库或插件发生命名空间冲突。我创建了这个插件来展示它是如何完成的。https://github.com/PHP-Prefixer/using-guzzle-in-a-word-press-plug-in-with-php-prefixer (4认同)