/* ========================================================== MySunRoof Bestelltool – Bestellungen speichern (WordPress DB) Diesen Block ans Ende deiner functions.php im Child-Theme einfügen. ========================================================== */ // Eigener Beitragstyp für gespeicherte Bestellungen (nicht öffentlich, nur intern) function mysunroof_register_order_cpt() { register_post_type('mysunroof_order', array( 'labels' => array( 'name' => 'MySunRoof Bestellungen', 'singular_name' => 'Bestellung', ), 'public' => false, 'show_ui' => true, 'show_in_menu' => true, 'menu_icon' => 'dashicons-clipboard', 'supports' => array('title', 'editor'), )); } add_action('init', 'mysunroof_register_order_cpt'); // Hinweis: Das Einbinden von bestelltool.js und die Ajax-URL/Nonce // erfolgen direkt im Template page-bestelltool.php (nicht hier), // da diese Seite wp_head()/wp_footer() bewusst nicht aufruft. // Bestellung speichern function mysunroof_save_order() { check_ajax_referer('mysunroof_order_nonce', 'nonce'); $text = isset($_POST['order_text']) ? wp_kses_post(wp_unslash($_POST['order_text'])) : ''; $json = isset($_POST['order_json']) ? wp_unslash($_POST['order_json']) : ''; $title = isset($_POST['order_title']) ? sanitize_text_field(wp_unslash($_POST['order_title'])) : 'Bestellung'; $post_id = wp_insert_post(array( 'post_type' => 'mysunroof_order', 'post_title' => $title, 'post_content' => $text, 'post_status' => 'publish', )); if (is_wp_error($post_id) || !$post_id) { wp_send_json_error('Fehler beim Speichern'); } update_post_meta($post_id, '_order_raw_json', wp_slash($json)); wp_send_json_success(array('id' => $post_id)); } add_action('wp_ajax_mysunroof_save_order', 'mysunroof_save_order'); add_action('wp_ajax_nopriv_mysunroof_save_order', 'mysunroof_save_order'); // Bestellungen auflisten function mysunroof_list_orders() { check_ajax_referer('mysunroof_order_nonce', 'nonce'); $query = new WP_Query(array( 'post_type' => 'mysunroof_order', 'posts_per_page' => 200, 'orderby' => 'date', 'order' => 'DESC', )); $orders = array(); foreach ($query->posts as $post) { $orders[] = array( 'id' => $post->ID, 'title' => $post->post_title, 'date' => get_the_date('d.m.Y H:i', $post), 'text' => $post->post_content, ); } wp_send_json_success($orders); } add_action('wp_ajax_mysunroof_list_orders', 'mysunroof_list_orders'); add_action('wp_ajax_nopriv_mysunroof_list_orders', 'mysunroof_list_orders'); // Bestellung löschen function mysunroof_delete_order() { check_ajax_referer('mysunroof_order_nonce', 'nonce'); $id = isset($_POST['id']) ? intval($_POST['id']) : 0; if (!$id || get_post_type($id) !== 'mysunroof_order') { wp_send_json_error('Ungueltige ID'); } wp_delete_post($id, true); wp_send_json_success(); } add_action('wp_ajax_mysunroof_delete_order', 'mysunroof_delete_order'); add_action('wp_ajax_nopriv_mysunroof_delete_order', 'mysunroof_delete_order'); // Naechste fortlaufende Referenznummer vergeben (Format: JAHR-0001, pro Jahr neu beginnend) function mysunroof_get_next_reference() { check_ajax_referer('mysunroof_order_nonce', 'nonce'); $year = date('Y'); $option_name = 'mysunroof_ref_counter_' . $year; $current = (int) get_option($option_name, 0); $next = $current + 1; update_option($option_name, $next, false); $reference = $year . '-' . str_pad($next, 4, '0', STR_PAD_LEFT); wp_send_json_success(array('reference' => $reference)); } add_action('wp_ajax_mysunroof_get_next_reference', 'mysunroof_get_next_reference'); add_action('wp_ajax_nopriv_mysunroof_get_next_reference', 'mysunroof_get_next_reference'); https://mysunroof.at/page-sitemap.xml 2026-06-10T08:04:21+00:00