各object
がフラットテーブルのように単一行に含まれるように、WordPress内でデータをエクスポートできる必要があります。
各投稿タイプを、すべてのメタデータを表す列を含む独自のデータベーステーブルとして想像してください。
今のところ、私はkey / value
ペアのメタデータすべてを抽出しようとしているのが最も困難です。
私はget_posts
を試してから各投稿をループしてget_post_meta
でメタデータを抽出しています...しかしこれは複雑な配列データの束を生成するだけです。
これを行うための推奨される方法は何でしょうか。
問題は、メタ値がユニークなキー/値データではないことです。
例えば。キー 'OneKey'を使えば、同じ投稿に対してたくさんの値を持つことができます。
そのため、フラットテーブルでは、 'OneKey'列には投稿IDが同じで複数の行があるはずです。
確かに、すべてのメタキーを単数形として扱う1つの値を取ることができますが、単一のメタ値にデータの配列を含めることもできますその場合は、その配列を直列化されたものとして保存してください。
最後に、WPには内部スコープに使う隠しメタフィールドがあります。 '_ edit_lock'や '_edit_last'など...、おそらくそれらをスキップしたいでしょう。
$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
は、オブジェクトの1次元配列になります(WP_POST
クラスのインスタンス)。