如何在Wordpress中将sendgrid电子邮件插件作为库包含在内,以避免名称空间冲突

问题描述

我将wordpress插件中的sendgrid-PHP.PHP插件用作库。然后,按照以下步骤将其导入我的插件中,以防止可能导致错误的双重导入:

// include sendgrid sdk
if( class_exists('\\SendGrid\\Email') === false ) {
    // when used globally \\SendGrid\\Email
    // when importing with "use" Sendgrid
    require_once dirname(__FILE__) . "/sendgrid-PHP/sendgrid-PHP.PHP";
}

我必须在wordpress中(单独)添加sendgrid插件“独立”作为新插件,因为存在我插件中无法获得的额外功能(例如电子邮件表单页面等)

为避免名称冲突,我首先将内部插件名称SendGrid重命名SendGridSDK,以便现在可以安全地在wordpress中安装插件,而不会发生名称冲突。 这个插件可以工作,但是当我尝试运行一些钩子时,在我的插件中我得到了这个致命错误

Fatal error: Uncaught Error: Class 'SendGridSDK\Client' not found in /home/loretoparisi/staging/2/wp-content/plugins/loretoparisi_admin/sendgrid-PHP/lib/SendGridSDK.PHP:53 Stack trace: #0 /home/loretoparisi/staging/2/wp-content/plugins/loretoparisi_admin/uam-export.PHP(467): SendGridSDK->__construct('...') #1 /home/loretoparisi/staging/2/wp-content/plugins/loretoparisi_admin/uam-export.PHP(574): LPUserAccessManagerExport\LP_UAM_Export->sendEmail('loretoparisi...','"id","user_logi...') #2 /home/loretoparisi/staging/2/wp-includes/class-wp-hook.PHP(287): LPUserAccessManagerExport\LP_UAM_Export->generate_csv(Array) #3 /home/loretoparisi/staging/2/wp-includes/class-wp-hook.PHP(311): WP_Hook->apply_filters('',Array) #4 /home/loretoparisi/staging/2/wp-includes/plugin.PHP(478): WP_Hook->do_action(Array) #5 /home/loretoparisi/staging/2/wp-admin/includes/export.PHP(76): do_action('export_wp',Array) #6 /home/loretoparisi/staging/2/wp-admin/export.PHP(121): export_wp(Array) #7 {main} thrown in /home/loretoparisi/staging/2/wp-content/plugins/loretoparisi_admin/sendgrid-PHP/lib/SendGridSDK.PHP on line 53

引用了SendGridSDK.PHP重命名文件类中的这一行(它是SendGrid.PHP

$this->client = new \SendGridSDK\Client($host,$headers,'/v3',null,$curlOptions);

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)