テーマ設定がユーザーによって更新されているときに、私のテーマがCSSファイルを作成します。これは問題なく動作します。WordPress:テーマアップデートがインストールされたときのフック
ここでは、テーマがダッシュボード内から更新されているとき、または自動更新が発生したときにも、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
が起動されていると私につながります。
私は正方形に戻ってきます。テーマの更新が正常にインストールされた後、どのように関数を呼び出すのですか?あなたがテーマの失活のオプションを削除する必要があります。もちろん、
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);
}
}
::私はオプションで、テーマのバージョンを保存し、現在のテーマのバージョンに対して、それをチェックすることを決定した同様の問題を持つ