'sanitize_text_field', 'mbsrr_teszt_email' => 'sanitize_email', 'mbsrr_felado_email' => 'sanitize_email', 'mbsrr_admin_email' => 'sanitize_email', 'mbsrr_trigger_status' => 'sanitize_key', 'mbsrr_emlekezteto_ora' => 'absint', 'mbsrr_emlekezteto_max' => 'absint', ]; foreach ( $mezok as $mezo => $tisztito ) { register_setting( 'mbsrr_beallitasok', $mezo, [ 'sanitize_callback' => $tisztito ] ); } } public function beallitasok_oldal() { if ( ! current_user_can( 'manage_woocommerce' ) ) { return; } $teszt = get_option( 'mbsrr_teszt_mod', '1' ); ?>

My-Book Szerzői Rendeléskezelő – beállítások

TESZT ÜZEMMÓD AKTÍV – minden szerzői levél a teszt-címre megy, a szerzők NEM kapnak levelet.

ÉLES ÜZEMMÓD – a szerzők közvetlenül kapják az értesítéseket.

get( \Automattic\WooCommerce\Internal\DataStores\Orders\CustomOrdersTableController::class )->custom_orders_table_usage_is_enabled() ? wc_get_page_screen_id( 'shop-order' ) : 'shop_order'; add_meta_box( 'mbsrr_metabox', 'Szerzői rendeléskezelés (SRR)', [ $this, 'metabox_tartalom' ], $screen, 'normal', 'high' ); } public function metabox_tartalom( $post_or_order ) { $order = ( $post_or_order instanceof WC_Order ) ? $post_or_order : wc_get_order( $post_or_order->ID ); if ( ! $order ) { return; } $rekordok = $order->get_meta( MBSRR_META_SZERZOK ); if ( empty( $rekordok ) || ! is_array( $rekordok ) ) { echo '

Ehhez a rendeléshez (még) nincs szerzői értesítési rekord. A rekordok a beállított trigger-státuszra váltáskor jönnek létre.

'; return; } $cimkek = MBSRR_Core::allapot_cimkek(); $szinek = MBSRR_Core::allapot_szinek(); foreach ( $rekordok as $term_id => $r ) { $szin = isset( $szinek[ $r['allapot'] ] ) ? $szinek[ $r['allapot'] ] : '#6c757d'; echo '
'; echo '

' . esc_html( $r['nev'] ) . ' <' . esc_html( $r['email'] ) . '> '; echo '' . esc_html( isset( $cimkek[ $r['allapot'] ] ) ? $cimkek[ $r['allapot'] ] : $r['allapot'] ) . '

'; if ( ! empty( $r['tortenet'] ) ) { echo ''; } // Kézi műveletek $muveletek = [ 'kapcsolatfelvetel' => 'Kapcsolatfelvétel megtörtént', 'lezarva' => 'Lezárva', 'sikertelen' => 'Sikertelen', 'ertesitve' => 'Vissza „Értesítve" állapotba', ]; foreach ( $muveletek as $muvelet => $cimke ) { if ( $muvelet === $r['allapot'] ) { continue; } $url = wp_nonce_url( admin_url( 'admin-post.php?action=mbsrr_statusz&order=' . $order->get_id() . '&szerzo=' . $term_id . '&muvelet=' . $muvelet ), 'mbsrr_statusz' ); echo '' . esc_html( $cimke ) . ''; } $ujra = wp_nonce_url( admin_url( 'admin-post.php?action=mbsrr_ujrakuldes&order=' . $order->get_id() . '&szerzo=' . $term_id ), 'mbsrr_ujrakuldes' ); echo 'Értesítő újraküldése'; echo '
'; } } // ===================================================================== // Rendeléslista oszlop // ===================================================================== public function oszlop_felvetel( $oszlopok ) { $uj = []; foreach ( $oszlopok as $kulcs => $cimke ) { $uj[ $kulcs ] = $cimke; if ( 'order_status' === $kulcs ) { $uj['mbsrr_allapot'] = 'Szerzői állapot'; } } if ( ! isset( $uj['mbsrr_allapot'] ) ) { $uj['mbsrr_allapot'] = 'Szerzői állapot'; } return $uj; } public function oszlop_tartalom_hpos( $oszlop, $order ) { if ( 'mbsrr_allapot' !== $oszlop ) { return; } $this->oszlop_render( $order ); } public function oszlop_tartalom_klasszikus( $oszlop, $post_id ) { if ( 'mbsrr_allapot' !== $oszlop ) { return; } $order = wc_get_order( $post_id ); if ( $order ) { $this->oszlop_render( $order ); } } private function oszlop_render( $order ) { $rekordok = $order->get_meta( MBSRR_META_SZERZOK ); if ( empty( $rekordok ) || ! is_array( $rekordok ) ) { echo ''; return; } $szinek = MBSRR_Core::allapot_szinek(); $cimkek = MBSRR_Core::allapot_cimkek(); foreach ( $rekordok as $r ) { $szin = isset( $szinek[ $r['allapot'] ] ) ? $szinek[ $r['allapot'] ] : '#6c757d'; $cim = isset( $cimkek[ $r['allapot'] ] ) ? $cimkek[ $r['allapot'] ] : $r['allapot']; echo '' . esc_html( $r['nev'] ) . ''; } } // ===================================================================== // Kézi műveletek (admin-post) // ===================================================================== public function kezi_statusz() { if ( ! current_user_can( 'manage_woocommerce' ) ) { wp_die( 'Nincs jogosultság.' ); } check_admin_referer( 'mbsrr_statusz' ); $order_id = absint( $_GET['order'] ?? 0 ); $term_id = absint( $_GET['szerzo'] ?? 0 ); $muvelet = sanitize_key( $_GET['muvelet'] ?? '' ); $order = wc_get_order( $order_id ); $cimkek = MBSRR_Core::allapot_cimkek(); if ( $order && $term_id && isset( $cimkek[ $muvelet ] ) ) { $rekordok = $order->get_meta( MBSRR_META_SZERZOK ); if ( ! empty( $rekordok[ $term_id ] ) ) { $rekordok[ $term_id ]['allapot'] = $muvelet; $rekordok[ $term_id ]['utolso_akcio'] = current_time( 'mysql' ); $rekordok[ $term_id ]['tortenet'][] = MBSRR_Core::esemeny( 'Kézi állapot-állítás (admin): ' . $cimkek[ $muvelet ] ); $order->update_meta_data( MBSRR_META_SZERZOK, $rekordok ); $order->update_meta_data( MBSRR_META_NYITOTT, MBSRR_Core::van_nyitott( $rekordok ) ? '1' : '0' ); $order->add_order_note( sprintf( 'SRR: kézi állapot-állítás – %s: %s.', $rekordok[ $term_id ]['nev'], $cimkek[ $muvelet ] ) ); $order->save(); } } wp_safe_redirect( $order ? $order->get_edit_order_url() : admin_url() ); exit; } public function ujrakuldes() { if ( ! current_user_can( 'manage_woocommerce' ) ) { wp_die( 'Nincs jogosultság.' ); } check_admin_referer( 'mbsrr_ujrakuldes' ); $order_id = absint( $_GET['order'] ?? 0 ); $term_id = absint( $_GET['szerzo'] ?? 0 ); $order = wc_get_order( $order_id ); if ( $order && $term_id ) { $rekordok = $order->get_meta( MBSRR_META_SZERZOK ); if ( ! empty( $rekordok[ $term_id ] ) && is_email( $rekordok[ $term_id ]['email'] ) ) { $kimenet = MBSRR_Core::instance()->szerzoi_email_kuldes( $order, $term_id, $rekordok[ $term_id ], false ); $rekordok[ $term_id ]['tortenet'][] = MBSRR_Core::esemeny( 'Kézi újraküldés (admin): ' . ( $kimenet ? 'kiküldve' : 'SIKERTELEN' ) . MBSRR_Core::teszt_jeloles() ); $order->update_meta_data( MBSRR_META_SZERZOK, $rekordok ); $order->add_order_note( sprintf( 'SRR: értesítő kézi újraküldése – %s (%s).', $rekordok[ $term_id ]['nev'], $kimenet ? 'kiküldve' : 'SIKERTELEN' ) ); $order->save(); } } wp_safe_redirect( $order ? $order->get_edit_order_url() : admin_url() ); exit; } // ===================================================================== // Szerzői e-mail mező a taxonómia szerkesztőben (régi meta kulcs!) // ===================================================================== public function szerzo_mezo_uj() { ?>

Erre a címre megy a rendelés-értesítő. (A korábbi rendszerrel közös adatmező.)

term_id, 'mcisoe_supplier_email', true ); ?>

Erre a címre megy a rendelés-értesítő. (A korábbi rendszerrel közös adatmező.)