gpt4 book ai didi

WordPress:安装主题更新时的 Hook

转载 作者:行者123 更新时间:2023-12-05 04:10:21 25 4
gpt4 key购买 nike

当用户更新主题设置时,我的主题会创建一个 css 文件。这没有问题。

现在我还需要创建 css 文件,当从仪表板内更新主题或发生自动更新时。

我已经根据以下示例研究了 upgrader_process_completeupgrader_post_install:https://codex.wordpress.org/Plugin_API/Action_Reference/upgrader_process_completehttps://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_completeupgrader_post_install 在旧主题仍然安装的情况下被触发,这有点违背了整个目的。

我快速运行了一个测试,删除了整个 upgrader_process_complete 部分,并将其上传到我的私有(private)存储库。然后我转到主题并在仪表板中更新它,但是 upgrader_process_complete 仍然被触发,再次根据已安装的主题创建一个 css 文件,而不是新安装的主题。但正如我所说,我实际上删除了整个 upgrader_process_complete 代码部分,所以它一开始就不应该被触发。

这让我相信,upgrader_process_complete 在旧主题仍然安装的情况下被触发。

这让我回到原点。成功安装主题更新后,如何调用函数?

最佳答案

遇到类似的问题,我决定将主题的版本存储在一个选项中,并根据当前的主题版本进行检查:

add_action('after_setup_theme', 'PREFIX_check_theme_version');
function PREFIX_check_theme_version() {

$current_version = wp_get_theme()->get('Version');
$old_version = get_option( 'PREFIX_theme_version' );

if ($old_version !== $current_version) {
// do some cool stuff
create_css_file();

// update not to run twice
update_option('PREFIX_theme_version', $current_version);
}
}

当然你应该删除主题停用的选项:

add_action('switch_theme', 'PREFIX_options_removal');

function PREFIX_options_removal () {
delete_option('PREFIX_theme_version');
}

这很笨拙,但可以完成工作

关于WordPress:安装主题更新时的 Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44712266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com