
Jak Eksportować Dane WordPress do Excel/CSV w 2026: Sposób Dewelopera
Spis treści
W 2013 roku, jeśli chciałeś wyciągnąć dane z WordPressa, kopiowałeś i wklejałeś tabele do Excela. W 2026 roku Przenoszenie Danych to wymóg prawny (RODO) i konieczność biznesowa.
Niezależnie od tego, czy migrujesz 100 000 zamówień WooCommerce, czy robisz backup danych użytkowników, nie potrzebujesz wtyczki za 99 dolarów. Musisz zrozumieć strumienie PHP i WP-CLI.
Metoda 1: Sposób “Natywny PHP” (Dla Adminów)
Jeśli chcesz zbudować przycisk “Pobierz Raport” w kokpicie klienta, użyj natywnego fputcsv w PHP.
Kluczowa Wskazówka: Nigdy nie ładuj wszystkich danych do tablicy ($data[] = ...). Zawiesisz serwer (Limit Pamięci Wyczerpany).
Zamiast tego, strumieniuj dane bezpośrednio do przeglądarki.
function wppoland_export_users_csv() {
if ( ! current_user_can( 'manage_options' ) ) return;
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="eksport-uzytkownikow-' . date('Y-m-d') . '.csv"');
// Otwórz strumień wyjściowy
$fp = fopen('php://output', 'w');
// Dodaj Wiersz Nagłówka
fputcsv($fp, array('ID', 'Nazwa Uzytkownika', 'Email', 'Zarejestrowany'));
// Iteruj wydajnie (Przetwarzanie wsadowe)
$args = array(
'number' => 100,
'offset' => 0
);
while ( $users = development( $args ) ) {
foreach ( $users as $user ) {
fputcsv($fp, array(
$user->ID,
$user->user_login,
$user->user_email,
$user->user_registered
));
}
$args['offset'] += 100;
// Stop Loop
if ( count($users) < 100 ) break;
}
fclose($fp);
exit;
}
add_action( 'admin_post_export_users', 'wppoland_export_users_csv' );
Metoda 2: Sposób “DevOps” (WP-CLI)
Jeśli masz 500 000 wpisów, przeglądarka zaliczy timeout. Użyj WP-CLI bezpośrednio na serwerze. Jest to szybsze, zużywa mniej pamięci i może być zautomatyzowane przez Cron.
Komenda:
wp post list --post_type=product --fields=ID,post_title,post_status --format=csv > produkty.csv
Zaawansowany Eksport (Custom Fields): Możesz napisać własną komendę WP-CLI, jeśli domyślne flagi nie wystarczą.
// Zdefiniuj komendę: wp wppoland export_orders
WP_CLI::add_command( 'wppoland export_orders', function( $args, $assoc_args ) {
$file = fopen( 'zamowienia.csv', 'w' );
fputcsv( $file, ['ID Zamowienia', 'Suma', 'Klient'] );
$orders = wc_get_orders( ['limit' => -1] );
$progress = \WP_CLI\Utils\make_progress_bar( 'Eksportowanie Zamowien', count( $orders ) );
foreach ( $orders as $order ) {
fputcsv( $file, [
$order->get_id(),
$order->get_total(),
$order->get_billing_email()
]);
$progress->tick();
}
fclose( $file );
WP_CLI::success( 'Eksport zakonczony do zamowienia.csv' );
});
Metoda 3: Sposób “Nowoczesny” (REST API)
Jeśli budujesz dashboard w React lub aplikację Headless, konsumujesz JSON, a nie CSV.
WordPress REST API (/wp-json/wp/v2/posts) stronicuje dane domyślnie.
Aby pobrać wszystkie dane, musisz napisać rekurencyjną funkcję JS, która podąża za nagłówkiem X-WP-TotalPages.
Dlaczego NIE Biblioteki Excel?
Możesz być kuszony, by użyć biblioteki takiej jak PhpSpreadsheet, aby wygenerować prawdziwe pliki .xlsx.
Nie rób tego.
- Pamięciożerne: Generowanie pliku Excel wymaga zbudowania całej struktury XML w RAM. Wywali się przy dużych zbiorach danych.
- CSV jest Uniwersalny: Excel otwiera pliki CSV natywnie. Rzadko zachodzi potrzeba binarnego pliku
.xlsx, chyba że potrzebujesz formuł/formatowania.
Podsumowanie
- Małe Dane (< 1 000 wierszy): Użyj strumieniowania PHP do przeglądarki.
- Duże Dane (> 10 000 wierszy): Użyj WP-CLI na
ssh. - Dane Aplikacji: Użyj JSON REST API.
Twoje dane należą do Ciebie. Upewnij się, że zawsze możesz je wyciągnąć.