仅在 WordPress 中激活和停用插件时运行 JS 文件

Posted

技术标签:

【中文标题】仅在 WordPress 中激活和停用插件时运行 JS 文件【英文标题】:Run JS file only on activation and deactivation of plugin in WordPress 【发布时间】: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 不是从激活函数调用的。

【问题讨论】:

【参考方案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”。我知道我在说傻话,但让我们试一次。

以上是关于仅在 WordPress 中激活和停用插件时运行 JS 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何从wordpress站点停用维护模式

我无法在 localhost 上激活我的 WordPress 插件

插件在激活期间生成了 X 个字符的意外输出(WordPress)

如何使用 WordPress 在卸载时删除表?

Wordpress 239 字符意外输出错误

如何在使用 docker 首次安装 wordpress 时自动激活插件