Что я пытаюсь сделать, так это оптимизировать способ хранения данных в моей таблице wp_postmeta.Обновление meta_value, добавляющего ассоциативный массив к тем, которые уже существуют
мне нужно сохранить несколько отношений между столбами, и моя стартовая ситуация была просто:
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;}
}
Вы не показываете код для 'update_post_meta' или' add_post_meta', которые кажутся проблематичными функциями. –
Я не понимаю, что вы имеете в виду, это функции Wordpress ... Какой код мне следует показывать? – supadema
Извините, я не эксперт Wordpress. Я просмотрел документацию [add_post_meta] (https://codex.wordpress.org/Function_Reference/add_post_meta). Кажется, вы это правильно называете. Результат, который вы показываете, кажется, имеет родителя с id из 1 и дочернего с идентификатором 510, затем другого родителя с идентификатором 510 и дочернего с идентификатором 511. Может быть, вы должны добавить свой ожидаемый результат к своему вопросу? –