Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save nickalexej/8c35407f296551fa22b22a38b3c2001a to your computer and use it in GitHub Desktop.
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(…
// 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