Следующий код изменит статус продукта на ожидающий , если кто-то, кроме роли администратора, обновит цены продукта в бэкенде:
add_action( 'woocommerce_product_object_updated_props', 'change_status_on_product_object_updated_prices', 10, 2 );
function change_status_on_product_object_updated_prices( $product, $updated_props ) {
$changed_props = $product->get_changes();
if ( $product->get_status() !== 'pending' && ( in_array( 'regular_price', $updated_props, true ) ||
in_array( 'sale_price', $updated_props, true ) ) && ! current_user_can( 'administrator' ) )
{
wp_update_post( array( 'ID' => $product->get_id(), 'post_status' => 'pending' ) );
}
}
Код входит в файл function.phpфайл вашей активной дочерней темы (или активной темы).Протестировано и работает.
Код не влияет на роль пользователя «Администратор»… Вам также следует проверить, что «Роль пользователя Продавца не может изменять статус публикации продукта.