你好,
我们的WordPress安装使用EDD发送带有自定义模板的电子邮件,我们最近刚刚安装了Lifter。
我们在Lifter中加载模板函数的方式上遇到了一个错误,导致我们的电子邮件模板抛出一个致命错误–以下是相关的错误堆栈:
PHP消息:PHP致命错误:未捕获错误:调用/www/[…]/wp-content/plugins/liftlms/includes/class.llms.nav.menus.PHP:223中未定义的函数is_lifterlms()堆栈跟踪:#0/www/[…]/wp-includes/class-wp-hook.php(289):LLMS_Nav_Menus->menu_item_classes(数组)#1/www/[…]/wp-includes/plugin.php(212):wp_Hook->apply_filters(数组,数组)#2/www/[…]/wp-includes/nav-menu-template.php(226):应用过滤器('wp_nav_menu_obj…',数组,对象(stdClass))#3/www/[…]/wp-content/themes/[…]/edd_templates/emails/footer.php(76):wp_nav_menu(对象(stdClass))
在主题/edd_templates/emails/footer.php的第76行,我们将wp_nav_菜单
功能。
我仔细研究了Lifter的源代码,我认为问题是由于LifterLMS模板函数造成的(lifter lms/includes/llms.template.function.php
)直到初始化
WordPress操作。我还没有确认这一点,但EDD电子邮件似乎是在初始化
钩子,所以在那一点上is_lifterlms()
尽管Lifter已经连接到wp_nav_菜单对象
过滤器。
我可以理解这个问题的解决方案可能很复杂。为了快速解决问题,我在电子邮件模板中定义了is_lifterlms(),并让它返回false,这样就不会发生致命错误。我认为一个更持久的解决方案是更改llms.template.functions.php文件加载时的优先级(可能只移动is_lifterlms()
函数定义到加载的插件
挂钩),或确保LLMS_Nav_Menus->菜单项类
函数未添加到wp_nav_菜单对象
过滤到之后初始化
已调用,模板函数可用。
请让我知道我是否能对调试这个问题提供更多帮助。