求助:Jet Engine QR模块生成文章URL动态二维码的代码无法生效
修复Jet Engine动态生成文章URL二维码的代码问题
原代码存在的错误点
- 钩子函数拼写错误:
add_filer应为add_filter,且回调函数名与定义不匹配 - 变量名错误:
add_custom_dynamic_field_callbacks函数中返回的是未定义的$callback,应改为$callbacks - 函数名拼写错误:
add_cutom_control应为add_custom_control,与对应的action钩子回调名不匹配 - 滑块参数拼写错误:滑块范围的
nis、nax应为min、max - 条件数组语法错误:
condition数组中'dynamic_field_filter' => 'yes'后缺少逗号 - 钩子名拼写错误:
jet-engine/listing/dynamic-field/callback-controlls应为jet-engine/listing/dynamic-field/callback-controls - 未初始化变量:
url_as_qr函数中若Jet_Engine_Module_QR_Code类不存在,$result未定义会引发报错
修正后的完整代码
add_filter( 'jet-engine/listings/allowed-callbacks', 'add_custom_dynamic_field_callbacks' ); add_filter( 'jet-engine/listing/dynamic-field/callback-args', 'add_custom_dynamic_field_callbacks_args', 10, 3); add_action( 'jet-engine/listing/dynamic-field/callback-controls', 'add_custom_control', 10, 1 ); function add_custom_dynamic_field_callbacks( $callbacks) { $callbacks['url_as_qr'] = 'Post URL as Qr-code'; return $callbacks; } function url_as_qr( $value, $code_size) { $result = ''; if ( class_exists( 'Jet_Engine_Module_QR_Code') ) { $qr = new Jet_Engine_Module_QR_Code(); $result = $qr->get_qr_code( $value, $code_size['size'] ); } return $result; } function add_custom_dynamic_field_callbacks_args( $result, $callback, $settings) { if ($callback === 'url_as_qr') { $result = array( get_permalink(), $settings['code_size'] ); } return $result; } function add_custom_control( $controls ) { $controls->add_control( 'code_size' , array( 'label' => 'QR_Code_Size', 'type' => 'slider', 'range' => array( 'px' => array( 'min' => 50, 'max' => 400, ), ), 'condition' => array( 'dynamic_field_filter' => 'yes', 'filter_callback' => array( 'url_as_qr'), ), ) ); }
使用方法
- 安装并激活Code Snippets插件
- 进入插件的「添加新片段」页面
- 将上述修正后的代码粘贴到代码框中,设置片段名称(如「Jet Engine 文章URL二维码」)
- 选择「仅运行在前端」或「运行在整个站点」,点击「保存并激活」
- 在Jet Engine的列表项编辑中,添加动态字段,选择「自定义回调」,并选择
url_as_qr选项,即可通过滑块调整二维码尺寸
内容的提问来源于stack exchange,提问作者Bycon Group
相关产品推荐
相关产品推荐

