1

私がやろうとしているのは、wp_postmeta テーブルにデータを保存する方法を最適化することです。

投稿間の複数の関係を保存する必要があり、私の開始状況は単純に次のとおりです。

add_post_meta($parent_id, 'post_child', $child_id);

そのようにして、各リレーションに対してデータベース行を使用する必要がありました。

同じ親が複数の子に関連付けられる可能性があることを考慮して、適切な配列構成とは何かを理解しようとしていましたが、次のようなものになりました (ただし、最善の方法であるかどうかはまだわかりません)。

array(
    array(
        parent => 121,
        child => 122
    ),
    array(
        parent => 121,
        child => 122
    ),
    array(
        parent => 121,
        child => 123
    ),
    ...
);

次に、このコードで試しました:

if ($post_relations = get_post_meta($book_id, 'post_relations', true)) {

    $post_relations[] = array("parent" => $parent_id, "child" => $child_id);

    update_post_meta($book_id, 'post_relations', $post_relations);

} else {

    $post_relations[] = array("parent" => $parent_id, "child" => $child_id);

    add_post_meta($book_id, 'post_relations', $post_relations);

}

しかし、meta_value フィールドで取得した結果は、期待していた結果とは異なるようです。

a:2:{
i:0;a:2:{s:6:"parent";i:1;s:5:"child";i:510;}i:1;a:2:{s:6:"parent";i:510;s:5:"child";i:511;}
}
4

2 に答える 2

0

リレーションを 1 つのポスト メタごとに 1 つのリレーションとして保存する必要があると思います。リレーションを配列に保存すると、DB クエリが非常に難しくなります。

したがって、リレーションを post_relations_0、post_relations_1 などとして保存するか、さらに良いことに、いくつかのクエリを実行する予定がある場合は、リレーションを別のテーブルに保存します。

于 2016-06-16T21:51:06.057 に答える