Created
February 24, 2023 16:37
-
-
Save nickalexej/8c35407f296551fa22b22a38b3c2001a to your computer and use it in GitHub Desktop.
Dieser Code enthält eine Funktion check_product_expiry(), die alle Produkte mit einem Ablaufdatum durchläuft und alle Produkte auf "Entwurf" setzt, deren Ablaufdatum erreicht ist. Die Überprüfung des Ablaufdatums wird einmal täglich mithilfe des wp_schedule_event()-Hooks geplant. Außerdem enthält der Code eine Funktion product_expiry_date_field(…
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Ablaufdatum- und Ablaufzeit-Felder zum Produkt hinzufügen | |
add_action('woocommerce_product_options_general_product_data', 'add_product_expiration_date_field'); | |
function add_product_expiration_date_field() { | |
woocommerce_wp_text_input(array( | |
'id' => '_expiration_date', | |
'label' => __('Ablaufdatum', 'woocommerce'), | |
'type' => 'date', | |
'desc_tip' => true, | |
'description' => __('Geben Sie das Ablaufdatum für das Produkt ein.', 'woocommerce') | |
)); | |
woocommerce_wp_text_input(array( | |
'id' => '_expiration_time', | |
'label' => __('Ablaufzeit', 'woocommerce'), | |
'type' => 'time', | |
'desc_tip' => true, | |
'description' => __('Geben Sie die Ablaufzeit für das Produkt ein.', 'woocommerce') | |
)); | |
} | |
// Ablaufdatum und Ablaufzeit speichern, wenn das Produkt gespeichert wird | |
add_action('woocommerce_process_product_meta', 'save_product_expiration_date_field'); | |
function save_product_expiration_date_field($post_id) { | |
$expiration_date = isset($_POST['_expiration_date']) ? $_POST['_expiration_date'] : ''; | |
$expiration_time = isset($_POST['_expiration_time']) ? $_POST['_expiration_time'] : ''; | |
$expiration_datetime = $expiration_date . ' ' . $expiration_time; | |
update_post_meta($post_id, '_expiration_datetime', $expiration_datetime); | |
} | |
// Produkt automatisch auf Entwurf zurücksetzen, wenn das Ablaufdatum erreicht ist | |
add_action('woocommerce_product_set_stock', 'set_product_expiration_date', 10, 2); | |
function set_product_expiration_date($product_id, $product) { | |
$expiration_datetime = get_post_meta($product_id, '_expiration_datetime', true); | |
$current_datetime = current_time('mysql'); | |
if (!empty($expiration_datetime) && strtotime($expiration_datetime) < strtotime($current_datetime)) { | |
$product->set_status('draft'); | |
$product->save(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment