是否可以通过以下方式添加动作挂钩wp_localize_script
, 所以我可以在JavaScript中生成的HTML标记中定位钩子要运行的位置?
比如:
$data = array (
\'ng_slicknav\' => array(
\'ng_slicksearch\' => home_url( \'/\' ),
\'ng_slicknav_closedsymbol\' => esc_html( $options[\'ng_slicknav_closedsymbol\'] ),
\'ng_slicknav_hook\' => do_action( \'myplugin_after_hook\' ),
),
);
// Add filter
$data = apply_filters( \'ng_slicknav_slickNavVars\', $data );
// Pass PHP variables to jQuery script
wp_localize_script( \'slicknav-init\', \'slickNavVars\', $data );
wp_enqueue_script( \'slicknav-init\' );
我试图添加的变量是
ng_slicknav_hook
, 但是,我连接到它的任何内容都不属于JavaScript中的HTML标记;它不尊重我给它的位置。
SO网友:jgraup
一切正常。问题是您的钩子正在向页面呈现内容,您希望将该输出传递给JS输出中包含的javascript变量。您需要将挂钩输出捕获到变量中,然后添加到$data
.
// buffer output
ob_start();
// run hook
do_action(\'myplugin_after_hook\');
// get the output buffer into a variable
$ng_slicknav_hook = ob_get_clean();
// add to data
$data = array(
\'ng_slicknav\' => array(
\'ng_slicksearch\' => home_url(\'/\'),
\'ng_slicknav_closedsymbol\' => esc_html($options[ \'ng_slicknav_closedsymbol\' ]),
\'ng_slicknav_hook\' => $ng_slicknav_hook,
),
);
它很可能需要转义,但我将把它留给您创建的任何内容。