将操作挂钩添加到wp_LOCALIZE_SCRIPT

时间:2015-12-26 作者:neilgee

是否可以通过以下方式添加动作挂钩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标记;它不尊重我给它的位置。

1 个回复
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,
    ),

);
它很可能需要转义,但我将把它留给您创建的任何内容。

相关推荐

Adding custom Bulk Actions

我一直在寻找将自定义批量操作添加到类别页面的方法。他们中的大多数人说,不可能用干净的方式来做这件事,因为这件事没有挂钩。大多数解决方案包括在客户端使用JS通过DOM操作添加选项。虽然这是可行的,但它仍然是一个相当丑陋的解决方案。我读过的大多数文章都是2年前的,所以我一直在想,从那时起到现在,这个问题已经添加了一个新的挂钩或解决方案,以便对这个问题有一个更及时的解决方案。