包括用于短码的Java脚本

时间:2013-01-21 作者:dcolumbus

我正在创建一个允许用户使用短代码的插件。此短代码依赖于加载短代码后需要显示的一组javascript。

我在决定何时何地加载javascript时遇到了问题。shortcode吐出的代码片段是需要存在的元素,但jQuery无法利用这些元素。

是否有一种加载和附加短代码所依赖的脚本的特定方式?

function build_total_search_method( $atts ) {

    $shorcode_php_function = include( dirname(__FILE__) . "/includes/total_search.php" );

    return $shorcode_php_function;

}
add_shortcode( \'total_search\', \'build_total_search_method\' );
这似乎可行,但它也会打印1 转到页面。这个方法行吗?

2 个回复
最合适的回答,由SO网友:Milo 整理而成

使用wp_enqueue_script 在您的短代码处理程序中,在WordPress>=3.3中,它将添加到wp_footer 行动通过将所需的任何数据从PHP传递到JavaScriptwp_localize_script.

SO网友:bueltge

这个wp_enqueue_script() 包括wp_localize_script() 是正确的解决方案。解析shortcode的参数或总是将脚本排队。

如果您有许多数据,您将在Json对象中使用这些数据。如果遇到问题或通过JSON直接链接到解决方案,一些提示应该会有所帮助。功能wp_localize_script() 解码HTML实体,这很重要,但并不总是完美的解决方案。函数使用json_encode(), 这可以解决多维数组中与实体解码相关的问题。另一种解决方案是将数据作为json对象发送,如下例所示。

add_action( \'admin_enqueue_scripts\', \'fb_print_scripts\' );
function fb_print_scripts() {
    global $current_screen;

    if ( isset( $current_screen -> id ) && ! in_array( $current_screen -> id, array( \'post\', \'page\' ) ) )
        return;

    if ( is_plugin_active_for_network( plugin_basename( __FILE__ ) ) )
        $options = get_site_option( \'my_options_id\' );
    else
        $options = get_option( \'my_options_id\' );

    if ( ! $options )
        return;
    ?>
    <script type="text/javascript">
        var my_json_object = <?php echo json_encode( $options ); ?>;
    </script>
    <?php
}

结束

相关推荐

Wrap text around shortcode

我在插件中使用了一个短代码处理程序。短代码可以有不同的(可选)参数。例如,可以在静态WordPress页面上使用两个短代码,在短代码之前、之间和之后都有文本。例如: Lorem ipsum dolor sit amet, consetetur sadipscing elitr <table> <tr> <td>[shortcode option=\"1\"]</td>&#