【问题标题】:Run JS file only on activation and deactivation of plugin in WordPress仅在 WordPress 中激活和停用插件时运行 JS 文件
【发布时间】:2017-06-24 06:15:39
【问题描述】:

我创建了custom Divi module,然后将其转换为插件。 Divi 页面构建器保存 本地存储变量,因此在我清除本地存储之前,我的模块不会显示在模块列表中。 我添加了 JS 文件来清除存储并且它工作正常。 但我希望 js 只在激活和停用时运行。

下面是插件激活码

 function angelleye_setup_For_paypal_divi_install()
    {    
            // trigger our function that registers PayPal for Divi plugin.     
            angelleye_setup_for_paypal_divi();                        
    }
    register_activation_hook( __FILE__, 'angelleye_setup_For_paypal_divi_install' );

这就是我在插件中添加我的 js 文件的方式。

function paypal_divi_clear_local_storage () {
    wp_enqueue_script( 'paypal_divi_clear_local_storage', plugins_url('assets/js/clear_local_storage.js',__FILE__ ));        
}
add_action( 'admin_enqueue_scripts', 'paypal_divi_clear_local_storage', 9999 );

这里的 add_action 不是从激活函数调用的。

【问题讨论】:

    标签: javascript wordpress plugins paypal


    【解决方案1】:

    创建添加自定义选项的新函数并在激活钩子上调用函数:

    新功能

    register_activation_hook( __FILE__, 'my_plugin_activation' );
    function my_plugin_activation() {
      add_option( 'my_plugin_activation','just-activated' );
    }
    

    在初始化操作的时间设置下面的代码,这将在激活时间起作用:

    function mycustom_plugin()
    {
    
        if( is_admin() && get_option( 'my_plugin_activation' ) == 'just-activated' ) 
       {
           delete_option( 'my_plugin_activation' );
           wp_enqueue_script( 'paypal_divi_clear_local_storage', plugins_url('assets/js/clear_local_storage.js',__FILE__ ));
        }
    }
    add_action( 'init', 'mycustom_plugin' );
    

    【讨论】:

      【解决方案2】:

      希望对你有帮助。

      请在您的插件文件中包含这些行..

      /*
      Plugin Name: Plugin_Name
      */
      
      
      class Plugin_Name       /* Define the name of the plugin or file */
      {
        public function __construct()
        {
          add_action('wp_footer', array($this, 'enqueue_js_files'));
        }
      
        public function enqueue_js_files()
        {
          wp_register_script('clear_local_storage', plugins_url('clear_local_storage.js', __FILE__), array('jquery'), '', true);
          wp_enqueue_script('clear_local_storage');
        }
      
      }
      

      【讨论】:

      • 感谢您的回答,但我只想运行 js 两次,插件激活时运行一次,插件停用时运行第二次。
      • 我不确定,它是否有效,因为我没有测试过,但你可以测试一次。
      • 在我的代码中将“add_action”行替换为“register_activation_hook”和“register_deactivation_hook”。我知道我在说傻话,但让我们试一次。
      猜你喜欢
      • 1970-01-01
      • 2016-02-03
      • 1970-01-01
      • 2017-01-17
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      相关资源
      最近更新 更多