it-swarm.com.de

Exportieren von Daten aus WordPress in eine flache Tabelle

Ich muss in der Lage sein, die Daten in WordPress zu exportieren, damit jede object wie eine flache Tabelle in einer einzelnen Zeile enthalten ist.

Stellen Sie sich jeden Beitragstyp als eine eigene Datenbanktabelle vor, die Spalten enthält, die alle Metadaten darstellen.

Derzeit fällt es mir am schwersten, alle key / value-Paar-Metadaten zu extrahieren.

Ich habe get_posts ausprobiert und dann jeden Beitrag durchlaufen und die Metadaten mit get_post_meta extrahiert ... aber dies erzeugt nur einen Haufen verschlungener Array-Daten.

Was wäre die empfohlene Vorgehensweise?

2
dcolumbus

Das Problem ist, dass Meta-Werte keine eindeutigen Schlüssel-/Wertdaten sind.

Z.B. mit dem Schlüssel 'OneKey' können Sie viele Werte für denselben Beitrag haben.

In einer flachen Tabelle sollten Sie für die Spalte 'OneKey' mehrere Zeilen haben, in denen die Beitrags-ID identisch ist und meiner Meinung nach nicht Ihren Wünschen entspricht.

Sicher, Sie können nur einen Wert annehmen, der alle Metaschlüssel als Singular behandelt, aber auch ein einzelner Metawert kann ein Array von Daten enthalten ... darin In diesem Fall sollten Sie das Array als serialisiert speichern.

Schließlich ist zu beachten, dass WP einige versteckte Metafelder aufweist, die für den internen Bereich verwendet werden, z. '_edit_lock' oder '_edit_last' und andere ... wahrscheinlich möchten Sie diese überspringen.

$posts = get_posts('nopaging=1');
$flatten = array();
$blacklist = array('_edit_lock', '_edit_last', '_wp_old_slug');
if ( ! empty($posts) ) { foreach ( $posts as $post ) {
  $metas = get_post_custom( $post->ID );
  $keys = array_keys($metas);
  if ( ! empty($keys) ) { foreach ( $keys as $_key ) {
     if ( in_array($_key, $blacklist) ) continue;
     // the first value for every meta key
    $post->$_key = maybe_serialize($metas[$_key][0]);
  } } 
  $flatten[$post->ID] = $post;
} }

// for debug
echo '<pre>';
print_r( $flatten );
echo( '</pre>');

$flatten ist ein eindimensionales Array von Objekten (WP_POST Klasseninstanzen).

3
gmazzap