Автоматически запускать кнопку "обновить" в сообщении Wordpress - PullRequest
0 голосов
/ 06 августа 2020

Я использую плагин 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 некоторые вещи, которые происходят при обновлении сообщения вручную. И я до сих пор не нашел способа узнать, что на самом деле привязано к синей кнопке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...