/* ------------------------------------------------------------------------ * Speichern & Cron planen / löschen * ------------------------------------------------------------------------ */ add_action( 'save_post_shop_order', function( $post_id ) { // Prüfen: Autosave oder Revision ignorieren if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return; if ( wp_is_post_revision( $post_id ) ) return; // --- TIMER LÖSCHEN (reagiert auf den Link / GET-Request) --- if ( isset( $_GET['waco_delete_timer'] ) ) { // Da es ein GET-Link ist, validieren wir die Berechtigung direkt über die WordPress-Rechte if ( current_user_can( 'edit_shop_order', $post_id ) || current_user_can( 'manage_woocommerce' ) ) { if ( waco_delete_timer( $post_id ) ) { wp_safe_redirect( add_query_arg( 'waco_timer_deleted', 1, remove_query_arg( 'waco_delete_timer', get_edit_post_link( $post_id, 'url' ) ) ) ); exit; } } } // Nonce prüfen für das reguläre Formular-Speichern (POST) if ( ! isset( $_POST['waco_nonce'] ) || ! wp_verify_nonce( $_POST['waco_nonce'], 'waco_save' ) ) { return; } // --- DATUM & UHRZEIT SPEICHERN --- if ( isset( $_POST['waco_save'] ) ) { $date = sanitize_text_field( $_POST['waco_date'] ?? '' ); $time = sanitize_text_field( $_POST['waco_time'] ?? '' ); if ( ! $date || ! $time ) return; $local = "$date $time:00"; $ts = waco_local_to_utc_ts( $local ); if ( $ts <= time() ) return; // Meta speichern & Cron planen update_post_meta( $post_id, '_waco_scheduled_time', $local ); wp_clear_scheduled_hook( 'waco_complete_order', [ $post_id ] ); wp_schedule_single_event( $ts, 'waco_complete_order', [ $post_id ] ); $user = wp_get_current_user(); $name = ( $user && $user->exists() ) ? ( $user->first_name ?: $user->display_name ) : 'System'; update_post_meta( $post_id, '_waco_scheduled_by', $name ); if ( $order = wc_get_order( $post_id ) ) { $order->add_order_note( sprintf( '⏱ Automatischer Abschluss geplant am %s von %s', wp_date( 'd.m.Y H:i', $ts ), $name ), false ); } wp_safe_redirect( add_query_arg( 'waco_scheduled', 1, get_edit_post_link( $post_id, 'url' ) ) ); exit; } }, 20 ); https://www.copyprintmainz.de/post-sitemap.xml 2026-04-30T15:57:01+00:00 https://www.copyprintmainz.de/page-sitemap.xml 2026-05-19T15:53:13+00:00 https://www.copyprintmainz.de/blocks-sitemap.xml 2026-05-21T11:40:08+00:00 https://www.copyprintmainz.de/product-sitemap.xml 2026-05-21T12:21:55+00:00 https://www.copyprintmainz.de/xlwcty_thankyou-sitemap.xml 2025-06-01T11:28:02+00:00 https://www.copyprintmainz.de/ditty_news_ticker-sitemap.xml 2026-04-02T15:51:47+00:00 https://www.copyprintmainz.de/category-sitemap.xml 2026-04-30T15:57:01+00:00 https://www.copyprintmainz.de/product_cat-sitemap.xml 2026-05-21T12:21:55+00:00 https://www.copyprintmainz.de/product_tag-sitemap.xml 2026-05-21T12:21:55+00:00 https://www.copyprintmainz.de/product_shipping_class-sitemap.xml 2026-04-02T15:10:50+00:00