0 ) { return; } self::disable_edit(); self::notice(); self::hide_tiktok_custom_fields(); } /** * Checks whether it is a tiktok order */ private static function is_tiktok_order_detail_page() { if ( ! did_action( 'woocommerce_loaded' ) > 0 ) { return; } global $post, $action; /** * Some plugin like Jetpack will cause use is_tiktok_order_detail_page() before get_current_screen is defined * * So we directly return false in this case */ if ( ! function_exists( 'get_current_screen' ) ) { return false; } $screen = get_current_screen(); if ( is_null( $screen ) ) { return false; } // not order detail page if ( 'shop_order' !== $screen->id || 'shop_order' !== $screen->post_type || 'edit' !== $action ) { return false; } if ( ! self::$order ) { self::$order = wc_get_order( $post->ID ); } // whether tiktok order return self::$order->get_meta( 'tiktok_order' ); } /** * Disables edits on tiktok orders (they should be managed on seller center) */ private static function disable_edit() { if ( ! did_action( 'woocommerce_loaded' ) > 0 ) { return; } // make the postbox container interface unclickable add_action( 'admin_enqueue_scripts', function () { if ( ! self::is_tiktok_order_detail_page() ) { return; } ?> get_id() ) { return; } // Bail early if this isn't a TikTok order. if ( ! $order->get_meta( 'tiktok_order' ) ) { return; } // Allow for tiktok orders created by API to go through if ( $order->get_created_via() === 'rest-api' ) { return; } throw new \Exception( esc_html__( 'TikTok orders cannot be modified via the normal interface. Modify on TikTok.' ) ); } ); } /** * Delivers notice that tiktok orders are managed on seller center */ private static function notice() { if ( ! did_action( 'woocommerce_loaded' ) > 0 ) { return; } add_action( 'admin_notices', function () { if ( ! self::is_tiktok_order_detail_page() ) { return; } ?>
0 ) { return; } add_filter( 'is_protected_meta', function ( $protected, $meta_key, $meta_type ) { if ( ! self::is_tiktok_order_detail_page() || 'post' !== $meta_type || 0 !== strpos( $meta_key, 'tiktok_' ) ) { return $protected; } return true; }, 10, 3 ); } } OrderDetail::init();