【发布时间】:2017-06-23 02:46:18
【问题描述】:
当用户更新主题设置时,我的主题会创建一个 css 文件。这没有问题。
现在,当从仪表板中更新主题或发生自动更新时,我还需要创建 css 文件。
我根据以下示例研究了upgrader_process_complete 和upgrader_post_install:https://codex.wordpress.org/Plugin_API/Action_Reference/upgrader_process_complete 和https://wordpress.stackexchange.com/questions/215063/limit-filter-upgrader-post-install-to-a-single-plugin,但由于某种原因,我更新主题后没有触发我的函数。
以下代码在我的主题的functions.php中。
function create_css_file() {
//code to create css file
}
function my_upgrade_function( $options ) {
create_css_file();
}
add_action( 'upgrader_process_complete', my_upgrade_function, 10, 2);
//I also tried this. No luck
add_filter( 'upgrader_post_install', my_upgrade_function, 100, 0 );
我错过了一些基本的东西吗?
更新 #1:
我使用add_action( 'upgrader_process_complete', my_upgrade_function, 150); 降低了优先级
现在似乎可以工作了,但是当调用create_css_file 函数时,它使用的是以前的版本,而不是新安装的版本。当我检查创建的 CSS 文件时,它是新生成的,但基于旧版本。不知道为什么会这样。
我也将其更改为 add_action( 'upgrader_process_complete', my_upgrade_function, 1); - 同样的问题。正在使用旧代码,而不是新安装的代码。
更新 #2:
好的,我得出的结论是,upgrader_process_complete 和 upgrader_post_install 在仍然安装旧主题的同时被解雇,这与整个目的背道而驰。
我迅速进行了测试,删除了整个 upgrader_process_complete 部分,并将其上传到我的私人存储库。然后我转到主题并在仪表板中更新它,但upgrader_process_complete 仍然被触发,再次根据已安装的主题创建一个 css 文件,而不是新安装的主题。但正如我所说,我实际上删除了整个 upgrader_process_complete 代码部分,所以它不应该一开始就被解雇。
这让我相信,upgrader_process_complete 在仍然安装旧主题的同时被触发。
这让我回到了第一方。主题更新成功安装后如何调用函数?
【问题讨论】:
-
你说的很对,这些函数老版本总是调用,从不 >新的一个。一个善良的灵魂甚至更新了法典以包含该警告。四年过去了,你似乎还在为同样的问题而苦恼——我也希望找到解决办法!
标签: wordpress