Есть основная запись и дочерние (Пример иерархии, главы у книг).
Пользователь переносит к примеру 3 главу из 5 на позицию первой. При этом получается, что старая 1 глава имеет позицию 1 и 3 глава тоже позицию 1.
Приведенный ниже код, обновляет порядок всех глав исходя из позиции глав.
Можно ли как то в Wordpress или все же чистым sql, обновить позиции всех дочерних записей одним запросом, при этом обойти проблему одинаковых позиций?
//Изменение позиции конкретной главы
$update_post = array(
'ID' => $glav_id,
'post_type' => 'book',
'menu_order' => $position,
);
wp_update_post( wp_slash($update_post) );
//Обновление порядка всех глав (Сортировка при этом идет по столбцу menu_order и получается ошибочная логика, так как есть одинаковые позиции )
$wpdb->query( 'SELECT @i:=-1' );
$result = $wpdb->query("UPDATE {$wpdb->posts} SET menu_order = ( @i:= @i+1 ) WHERE post_parent = '{$post->post_parent}' AND post_author = '{$post->post_author}' ORDER BY menu_order ASC;");
Большое спасибо заранее за идеи и помощь. В сети я не нашел ответа на данный вопрос и в основном это плагины или на стороне админки. Думаю ответ будет полезен всем.