非常顽固的wp_注册脚本/添加操作与删除

时间:2013-10-02 作者:inTOWN

我正在尝试摆脱插件。中的js文件,但它不起作用。

此处调用{部分代码):

class awqsf{

  const post_type = \'awqsf\';

  function __construct(){       
    // style for front end
    add_action( \'wp_enqueue_scripts\', array($this,\'awsqf_front_styles\'), false, \'1.0\', \'all\',1 );           
  }

  function awsqf_front_styles(){
    wp_register_script( \'awqsf-frontjs\', plugins_url( \'js/awqsf-front.js\', __FILE__ ), array(\'jquery\'), \'1.0\' );
    wp_enqueue_script(\'awqsf-frontjs\');
  }

} //end class
我尝试了很多不同的版本,wp\\u deregister\\u script和remove\\u action,但似乎无法摆脱:

//deregister awqsf
function my_deregister_scripts() {
  //wp_register_script( \'awqsf-frontjs\', plugins_url( \'js/awqsf-front.js\', __FILE__ ), array(\'jquery\'), \'1.0\' ); // the original wp_register_script
  wp_deregister_script( \'awqsf-frontjs\', \'http://www.spijkerbroek.me/wp-content/plugins/advance-wp-query-search-filter/js/awqsf-front.js\', array(\'jquery\'), \'1.0\' );
  wp_deregister_script("wp_enqueue_scripts", \'http://www.spijkerbroek.me/wp-content/plugins/advance-wp-query-search-filter/js/awqsf-front.js\', array("awqsf","awsqf_front_styles"), false, \'1.0\', \'all\',1 );    
  wp_deregister_script( \'awqsf-frontjs\', array(\'http://www.spijkerbroek.me/wp-content/plugins/advance-wp-query-search-filter/js/awqsf-front.js\', \'jquery\'), false, \'1.0\', \'all\',1 );
  wp_deregister_script(\'awqsf\',\'awqsf-front.js\');
  wp_deregister_script(\'awqsf\');
  //function awsqf_front_styles(){} // the function
  //add_action( \'wp_enqueue_scripts\', array($this,\'awsqf_front_styles\'), false, \'1.0\', \'all\',1 );   // the original add_action
  remove_action( \'wp_enqueue_scripts\', array(\'http://www.spijkerbroek.me/wp-content/plugins/advance-wp-query-search-filter/js/awqsf-front.js\',\'awsqf_front_styles\'), false, \'1.0\', \'all\',1 );
  remove_action( \'awqsf\', array(\'http://www.spijkerbroek.me/wp-content/plugins/advance-wp-query-search-filter/js/awqsf-front.js\',\'awsqf_front_styles\'), false, \'1.0\', \'all\',1 );
  remove_action( \'awqsf\', array(\'http://www.spijkerbroek.me/wp-content/plugins/advance-wp-query-search-filter/js/awqsf-front.js\',\'wp_enqueue_scripts\'), false, \'1.0\', \'all\',1 );
}
add_action( \'wp_awqsf_scripts\', \'my_deregister_scripts\', 1 );
有人能帮我找到正确的方向吗?

1 个回复
SO网友:gmazzap

你需要的很简单dequeue 剧本。(我说过,一旦脚本立即进入队列,就退出队列,而不是取消注册,只需取消注册,它就会抛出一个错误,因为WP会尝试将未注册的脚本加入队列)。

但是要让某个东西出列,必须先让某个东西入列,因此通常必须查看调用入列函数的优先级\'wp_enqueue_scripts\' 并使用较低优先级(较高优先级编号)。

在您的情况下,请看这一行:

add_action(\'wp_enqueue_scripts\', array($this,\'awsqf_front_styles\'),false,\'1.0\',\'all\',1);
这是wrong. 插件作者正在使用的参数wp_enqueue_script 在函数中add_action.

如果你进去看看Codex add_action 接受4个参数:

add_action($tag, $function_to_add, $priority, $accepted_args)
所以插件作者正在使用false$priority\'1.0\'$accepted_args. \'all\'1 将被完全忽略。

当然,这是一个错误,但WordPress可以使用默认的优先级10.

一旦知道了这一点,就可以使用较低的优先级(较高的优先级编号)并将脚本出列:

add_action( \'wp_enqueue_scripts\', \'remove_awsqf_front_script\', 30);

function remove_awsqf_front_script() {
  wp_dequeue_script(\'awqsf-frontjs\');
}
仅此而已。

结束

相关推荐

注意:未定义索引:SUPPRESS_FILTERS

我正在做一个主题的除虫工作,我希望有人能帮助我。我使用JustinTadlock创建的这个函数在博客页面上显示自定义帖子类型,并且将wp debug设置为true,我会收到一个通知:未定义索引:suppress\\u filters消息。代码如下:// Custom Post Type for the public blog posts to show on Index or blog page add_filter( \'pre_get_posts\', \'my_get_posts\' );&