在jQuery之前运行的WP插件

时间:2014-03-11 作者:davidcondrey

我对jQuery和插件有问题,控制台错误显示jQuery没有定义。我不明白的是,只有当我将其加载到生产服务器时,它才会失败,在我的本地dev安装上,它工作得很好。

ReferenceError:未定义jQuery。

插件代码:

add_filter( \'wp_footer\', \'enqueue_footer_scripts\', 9);
add_filter( \'wp\', \'enqueue_styles\', 11);

function enqueue_footer_scripts() {
    wp_register_script( \'sjs\', plugins_url(\'/js/sjs.js\', __FILE__), array(\'jquery\'));
    wp_enqueue_script( \'sjs\' );
    echo "<script>jQuery(document).ready(function ($) { $(\'p\').sJS();});</script>"; 
}

function enqueue_styles() {
    wp_register_style(\'sjcss\', plugins_url(\'/css/sjs.css\', __FILE__), false, \'2.1\');
    wp_enqueue_style(\'sjcss\');
}

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

由于基本的排序问题,您的代码无法工作。

您正在连接到wp\\u页脚。然后注册一个脚本并将其排入队列。最后,返回一些代码。

问题是,将脚本排队的行为不会立即引起脚本代码的回音。排队只是按照它所说的做,它将脚本设置为稍后添加到页面输出中。因此,您对这里的脚本代码的回应为时尚早。

具体而言,页脚的排队脚本发生在wp\\u print\\u footer\\u scripts调用中,该调用连接到优先级为20的wp\\u footer操作。因此,您需要在那之前排队,但在那之后打印自定义脚本代码。

因此,创建一个新函数。将其挂接到wp\\u print\\u footer\\u scripts操作。然后将回显代码移到该位置,但将排队代码留在原来的位置。

SO网友:helgatheviking

直接从法典this is how to load a script:

function my_scripts_method() {
    wp_enqueue_script( \'social-highlighter-js\', plugins_url(\'/js/social-highlighter.js\', __FILE__), array(\'jquery\'));
}

add_action( \'wp_enqueue_scripts\', \'my_scripts_method\' );
然后在页脚中打印自定义初始化脚本:

add_filter( \'wp_print_footer_scripts\', \'my_wp_print_footer_scripts\' );

function my_wp_print_footer_scripts() {
    echo "<script>jQuery(document).ready(function ($) { $(\'p\').socialHighlighterShare();});</script>";  
}

结束