Я не буду добиваться следующих целей: Я должен сохранить дубликат вновь созданного сообщения, если пользователь создает новое сообщение (cpt). Впоследствии я поставлю это новое сообщение с помощью Polylang на другой язык в качестве перевода для сообщения, созданного на первом шаге.WordPress Сохранение сообщения для перевода при создании нового сообщения
крюка в следующие действия должны привести к желаемому результату:
add_action('new_to_publish', 'duplicate_to_english');
add_action('draft_to_publish', 'duplicate_to_english');
add_action('pending_to_publish', 'duplicate_to_english');
function duplicate_to_english($post)
{
$en_post = pll_get_post($post->ID, 'en');
if(empty($en_post)) {
$new_post = (array) $post;
unset($new_post['ID']);
// INFINITE LOOP
$en_id = wp_insert_post($new_post);
pll_set_post_language($en_id, 'en');
}
}
Но, к сожалению, это приведет к бесконечной петле (как ожидалось). Теперь я ищу возможность избежать этого цикла. Моя первая идея заключалась в том, чтобы установить переменную $ _POST и выполнить только дублирование, если эта переменная установлена. Но я понятия не имею, как определить новый пост. Я обнаружил, что WordPress немедленно сохраняет авто-черновик при нажатии кнопки «Новая публикация», поэтому поиск сообщения ID = 0 не работает. Любой другой подход приветствуется.