Альтернатива wp_update_post() в WordPress REST API

#php #wordpress #rest #plugins #wordpress-rest-api

#php #wordpress #rest #Плагины #wordpress-rest-api

Вопрос:

Я новичок и пытаюсь написать плагин WordPress на PHP для автоматического обновления содержимого на нескольких страницах. Мне удалось заставить его работать, он обновляется правильно, однако он нарушает несколько параметров страницы (контролируемых темой). Я считаю, что это вызвано wp_update_post() функцией.

Я ищу эквивалент REST API для этого, поскольку он успешно работает, когда я пробовал с Python.

 <?php
.
..
... 
             $new_content = str_replace($old_data, $new_data, $content);
             $edited_post = ['ID'=> $pageID, 'post_content' => $new_content];
             wp_update_post( $edited_post);
 

Спасибо!

Комментарии:

1. Эти три строки кода, которыми вы поделились, только обновляют post_content поле. Как именно они «нарушают несколько параметров страницы»? Какие варианты?

2. Ну, это то, что мне интересно, используемая тема не закодирована, и по какой-то причине при запуске плагина заголовок страницы (включая ее фон) исчезает. Я должен добавить их обратно вручную, используя «Параметры страницы» внизу страницы, технически это не является частью самого содержимого страницы. Используя REST, этого не происходит, но я не смог заставить его работать на PHP.

Ответ №1:

Найден ответ :

                  wp_set_current_user(1); // IMPORTANT FOR CRONJOB
                 $request = new WP_REST_Request( 'PUT', '/wp/v2/pages/'.$pageID );
                 $request->set_query_params( [ 'content' => $new_content ] );
                 $rest_response = rest_do_request($request);
                 wp_set_current_user(0);
 

На случай, если кому-то это нужно 😉