I 2013, hvis du ønsket data ut av WordPress, kopierte og limte du tabeller inn i Excel. I 2026 er Dataportabilitet et lovkrav (GDPR) og en forretningsnødvendighet.
Enten du migrerer 100 000 WooCommerce-ordrer eller tar backup av brukerdata, trenger du ikke en plugin til $99. Du må forstå PHP-strømmer og WP-CLI.
Metode 1: Den “PHP-innfødte” måten (for administratorer)
Hvis du vil bygge en “Last ned rapport”-knapp for kundens dashbord, bruk PHPs opprinnelige fputcsv.
Viktig tips: Last aldri alle data inn i en array ($data[] = ...). Du vil krasje serveren (Memory Limit Exhausted).
I stedet, strøm dataene direkte til nettleseren.
function wppoland_export_users_csv() {
if ( ! current_user_can( 'manage_options' ) ) return;
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="brukereksport-' . date('Y-m-d') . '.csv"');
// Åpne output-strøm
$fp = fopen('php://output', 'w');
// Legg til overskriftsrad
fputcsv($fp, array('ID', 'Brukernavn', 'E-post', 'Registrert'));
// Iterer effektivt (Batch-behandling)
$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;
// Stopp løkke
if ( count($users) < 100 ) break;
}
fclose($fp);
exit;
}
add_action( 'admin_post_export_users', 'wppoland_export_users_csv' );
Metode 2: “DevOps”-måten (wp-CLI)
Hvis du har 500 000 innlegg, vil nettleseren få tidsavbrudd. Bruk WP-CLI direkte på serveren. Dette er raskere, bruker mindre minne og kan automatiseres via Cron.
Kommando:
wp post list --post_type=product --fields=ID,post_title,post_status --format=csv > produkter.csv
Avansert eksport (Tilpassede felt): Du kan skrive en egendefinert WP-CLI-kommando hvis standardflaggene ikke er nok.
// Definer kommando: wp wppoland export_orders
WP_CLI::add_command( 'wppoland export_orders', function( $args, $assoc_args ) {
$file = fopen( 'ordrer.csv', 'w' );
fputcsv( $file, ['Ordre ID', 'Sum', 'Kunde'] );
$orders = wc_get_orders( ['limit' => -1] );
$progress = \WP_CLI\Utils\make_progress_bar( 'Eksporterer Ordrer', 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 fullfort til ordrer.csv' );
});
Metode 3: Den “moderne” måten (REST API)
Hvis du bygger et React-dashbord eller en Headless-app, bruker du JSON, ikke CSV.
WordPress REST API (/wp-json/wp/v2/posts) paginerer data som standard.
For å hente alle data, må du skrive en rekursiv JS-funksjon som følger X-WP-TotalPages-headeren.
Hvorfor ikke excel-biblioteker?
Du kan bli fristet til å bruke et bibliotek som PhpSpreadsheet for å generere ekte .xlsx-filer.
Ikke gjør det.
- Minnetungt: Å generere en Excel-fil krever at hele XML-strukturen bygges i RAM. Det vil krasje på store datasett.
- CSV er universelt: Excel åpner CSV-filer naturlig. Det er sjelden behov for en binær
.xlsx-fil med mindre du trenger formler/formatering.
Oppsummering
- Små data (< 1 000 rader): Bruk PHP-strømming til nettleser.
- Store data (> 10 000 rader): Bruk WP-CLI via
ssh. - App-data: Bruk REST API JSON.
Dine data tilhører deg. Sørg for at du alltid kan få dem ut.



