当使用脚本函数(通过 cron)更新产品时,是否有任何方法可以识别或跟踪编辑脚本的函数?

When products are being updated using a script function (by a cron), is there any way to identify or trace the function that editted the script?

这个问题的目标是找到任何东西,通过它可以识别一个 ID 或任何东西,通过它可以跟踪正在编辑或更新由 cron 自动导入到商店的所有产品的价格(比如说 1.25 倍)。

每次函数更新产品时,它可以例如在某处存储此给定函数最后一次编辑产品的值。

到目前为止,我已经搜索了一些选项,我找到的选项如下:

1) get_the_author_meta("display_name"); 2) get_the_modified_author();

但是,none 这些选项很有用,或者我根本无法使它们回显任何内容。

预期结果为:

1) 要找到一种方法,如何通过留下痕迹或 ID 来跟踪功能更新 posts(产品),这将记录执行最后一次编辑的给定功能。

2) 找到一种方法来识别每个新创建的跟踪 post 并能够将其与其他功能一起使用。

最终目标是:为了确保当一个函数运行时假设有 4000 个产品并且该函数由于某些外部原因而没有完成 - 它不会产生另一个从一开始就通过,但只改变它还没有改变的产品。

如果该过程未完成,则该功能将由 cron 从头开始​​重新启动(直到完成)- 目前会导致问题 - 因为已经更新了 1,25 倍的产品价格正在更新以同样的因素再次出现。

有人有什么想法吗?

代码:

private function set_custom_price($product) {
    if (!$product->exists()) {
        return false;
    }

    $product_price = $product->get_regular_price();

    if (($product_price > 0) && ($product_price < 401)) {
        $product->set_regular_price(ceil(($product_price + ($product_price*(0.5)))/10) *10-1);
    } elseif (($product_price > 400) && ($product_price < 801)) {
        $product->set_regular_price(ceil(($product_price + 120)/10) *10-1);
    } elseif (($product_price > 800) && ($product_price < 1101)) {
        $product->set_regular_price(ceil(($product_price + 150)/10) *10-1);
    } elseif (($product_price > 1100) && ($product_price < 1601)) {
        $product->set_regular_price(ceil(($product_price + 200)/10) *10-1);
    } elseif (($product_price > 1600) && ($product_price < 2001)) {
        $product->set_regular_price(ceil(($product_price + 220)/10) *10-1);
    } elseif (($product_price > 2000) && ($product_price < 5001)) {
        $product->set_regular_price(ceil(($product_price + ($product_price*(0.15)))/10) *10-1);
    }

    $product->save();
    // HERE SOME CODE NEEDED TO REGISTER TRACE??
}

你可以使用这样的东西:

$product_id = $product->ID;
$last_changed = get_post_meta( $product_id, 'custom_product_last_change', true );
$last_changed_timestamp = strtotime($last_changed);
$current_datetime = strtotime(date('m/d/Y h:i:s a', time()));

// Check if change date is in last 24 hours ( you can change that to what ever you want, last week, last month..etc )
if($last_changed_timestamp > $current_datetime - 86400){

    update_post_meta( $product_id, 'custom_product_last_change', date('m/d/Y h:i:s a', time()) );
    // Do the changes here
}