Почему я не могу обновить метаданные поста из представления администратора? - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь программно генерировать данные на моем WordPress сайте.Я использую WPAlchemy для своих метабоксов и плагин post-to-posts для отношений post-to-post.

В моей функции генерации я создаю собственный тип записи под названием 'song', чтобы все были подключены к одному.конкретный пост типа сообщения, называемого «художники».Я использую p2p_type('songs_to_artist')->connect($song_id, $artist_id, ['date' => current_time ('mysql')]), чтобы соединить два сообщения для каждой сгенерированной песни.Моя проблема в том, что после того, как я запустил эту функцию, я больше не могу обновлять метаданные исполнителя из своего метабокса в виде поста редактирования бэкэнда.

Я немного покопался и нашел несколько результатов:

  1. Все работает совершенно нормально, если я запускаю функцию без установления соединения в конце функции.
  2. Все сгенерированные песни do подключаются к своему исполнителю, несмотря на проблему с метаданными исполнителя, которые не обновляются.
  3. I может обновитьметаданные с использованием функции update_post_meta() или путем обновления их непосредственно в БД.
  4. Описанный эффект необновления метаданных происходит после создания 937-го подключения «songs_to_artist» к этому конкретному исполнителю.
  5. Нет ошибок в этом процессе.

Кто-нибудь еще сталкивался с этим?Я нигде не могу найти ничего другого, описывающего это поведение.

Заранее большое спасибо!

1 Ответ

0 голосов
/ 21 ноября 2018

Проблема заключалась в том, что при слишком большом количестве соединений было слишком много данных, отображаемых на странице редактирования, что не позволяло postmeta сохранять данные, поскольку сайт был замедлен из-за всех данных о соединении.Простым исправлением для этого является следующий код:

add_filter( 'p2p_admin_box_show', 'toggle_connection_view', 10, 3 );
function toggle_connection_view( $show, $ctype, $post ) {

    if ( $ctype->name == 'songs_to_artist' ) {
        $show = false;
    }

    return $show;
}

Это позволило удалить эту конкретную карту из представления редактирования администратора, значительно ускорив и удалив описанную мной проблему.

...