Я использую плагин Modern Events Calendar для Wordpress и перенаправляю события с одного сайта на другой (не на мультисайт!) Через плагин Distributor . При отправке событий записи базы данных таблиц mec_events и mec_dates не создаются до тех пор, пока я вручную не нажму кнопку «обновить» в отправленном событии. Насколько я понимаю, указанные записи выталкиваются как мета-сообщения, а затем преобразуются в записи db при нажатии кнопки обновления.
Или, другими словами: кнопка обновления сообщения типа события запускает материал в событии плагин, который мне нужен, и я не могу понять, что именно должно произойти, потому что плагин очень сложный. Итак, моя идея состояла бы в том, чтобы найти способ на самом деле нажать sh кнопку обновления, чтобы автоматически запускать все, что мне нужно, НО. Грязно, я знаю, но мне кажется, это "легкий выход". События импортируются отлично, и после ручного использования кнопки обновления, если все в порядке. Просто я не хочу делать это каждый раз вручную для каждого события.
Как я могу вызвать то же самое, что и при ручном использовании кнопки обновления, но с помощью кода / php?
(Очевидно, я уже пробовал wp_update_post et c., Проталкивая событие как черновик и затем публикуя его с помощью кода, но ни один из них не запускает действия, которые мне нужны для плагина событий, следовательно, создание db записи из метаданных сообщения. Только ужасная большая синяя кнопка.)
EDIT1: Очень простой пример того, что я пробовал, это (после нажатия черновика):
// Publish post 37
$post = array(
'ID' => 37,
'post_status' => 'publish',
);
// Update the post into the database
wp_update_post( $post );
Я предположил это (или wp_insert_post или save_post) вызовет все перехватчики кнопки обновления, но безрезультатно.
EDIT2: После игры с изменением метаданных с помощью следующего кода я теперь уверен, что wp_update_post не запускается необходимые действия.
function change_postmeta(){
$args = array(
'post_type' => 'mec-events',
'post_status' => 'publish',
'posts_per_page' => -1
);
$posts = get_posts( $args );
foreach($posts as $p) :
$meta = get_post_meta($p->ID, 'mec_start_date',true);
echo "<script>console.log('POST IDs: " . json_encode($p->ID) . "');</script>";
if($meta) :
$my_post = array();
$my_post['ID'] = $p->ID;
$my_post['post_content'] = $meta . "works!" . $p->post_content ;
// Update the post into the database
wp_update_post( $my_post );
unset($my_post);
//remove the meta key
delete_post_meta($p->ID, 'mec_start_date');
endif;
endforeach;
}
Использование этого параметра успешно выводит дату начала события в содержимое и сохраняет ее, но не запускает s некоторые вещи, которые происходят при обновлении сообщения вручную. И я до сих пор не нашел способа узнать, что на самом деле привязано к синей кнопке.