WP Data Optimizer. * * Appears in the Tools section so admins can re-run the wizard at any time. * The wizard itself is idempotent: re-running it never auto-enables modules. * * @return void */ public static function register_menu_page(): void { add_submenu_page( 'tools.php', __( 'WPDO 設定嚮導', '2meet-data-optimizer' ), __( 'WPDO 設定嚮導', '2meet-data-optimizer' ), 'manage_options', 'wpdo-setup-wizard', array( __CLASS__, 'render_page' ) ); } /** * Render the wizard. * * @return void */ public static function render_page(): void { if ( ! TMDO_Capability::current_user_can_admin() ) { wp_die( esc_html__( 'Insufficient permissions.', '2meet-data-optimizer' ) ); } $step = max( 1, min( self::TOTAL_STEPS, absint( wp_unslash( $_GET['step'] ?? 1 ) ) ) ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended $completed = '1' === get_option( self::OPT_COMPLETED ); ?>

/

Zone
Hot
Warm
Cold
Archive

get_var( "SELECT COUNT(*) FROM `{$wpdb->postmeta}`" ); // phpcs:ignore WordPress.DB $autoload_bytes = (int) $wpdb->get_var( "SELECT COALESCE(SUM(LENGTH(option_value)),0) FROM `{$wpdb->options}` WHERE autoload = 'yes'" ); // phpcs:ignore WordPress.DB $top_keys = $wpdb->get_results( "SELECT meta_key, COUNT(*) AS c FROM `{$wpdb->postmeta}` GROUP BY meta_key ORDER BY c DESC LIMIT 10", ARRAY_A ); // phpcs:ignore WordPress.DB ?>

1_000_000 ) : ?> 100_000 ) : ?> 🟡

meta_key

$r ) : ?>

'wizard_baseline', 'retention_days' => 365, ) ); if ( ! empty( $result['ok'] ) ) { wp_safe_redirect( admin_url( 'tools.php?page=wpdo-setup-wizard&step=4&snap_done=1' ) ); exit; } echo '

' . esc_html__( 'Snapshot 建立失敗,請查日誌。', '2meet-data-optimizer' ) . '

'; } ?>

' . esc_html( gmdate( 'Y-m-d H:i:s', $next ) ) . '' ); } else { esc_html_e( '⚠️ Daily cron 未排程;請重新啟用外掛。', '2meet-data-optimizer' ); } ?>