У меня установлена Wordpress Multisite. Есть 5 подсайтов. Я хотел бы публиковать и редактировать все сообщения с сайта. 1. Т.е. Я хотел бы опубликовать пост на сайте. 1 и после нажатия кнопки «опубликовать» я хочу опубликовать это сообщение на каждом дочернем сайте моей сети. Я хотел бы также редактировать сообщения на дочернем сайте нет. 1 и после нажатия кнопки обновления я хотел бы, чтобы это сообщение обновлялось во всей моей сети дочерних сайтов.
Мне удалось подготовить сценарий, который позволяет мне создавать новые сообщения на каждом дочернем сайте, но когда я обновляю сообщение, сценарий создает новое сообщение вместо редактирования сообщения, и это главная проблема. Я пробовал другие хуки, такие как «edit_post» или «post_updated», но это не сработало. Я также не могу использовать WP REST API для достижения результата.
Любые идеи кто-нибудь?
Заранее благодарю за любую помощь.
function kush_update_posts_on_subsites( $post_id, $post, $update ) {
// This function can be called only once - infinite loop secured.
// @link /4009554/funktsii-kotorye-mozhno-vyzvat-tolko-odin-raz
static $foo_called = false;
if ($foo_called) return;
$foo_called = true;
// Define post params.
$id = null; // Post id must be null to create new post. When it's set $post_id it can edit post but it can't create new posts, ie.: $id = $post_id;
$post_name = $post->post_name;
$post_title = $post->post_title;
$post_status = 'publish';
$post_type = 'kush_link';
// Get number of all subsites in Multisite Network.
$blog_count = get_blog_count();
foreach( get_sites( array( 'number' => $blog_count ) ) as $subsite ) {
// Get subsite id.
$subsite_id = get_object_vars($subsite)["blog_id"];
// Skipping subsite 1 to avoid creating an empty draft.
if ($subsite_id == 1) {
continue;
}
// Switch to the appropriate subsite.
// @link https://codex.wordpress.org/Function_Reference/switch_to_blog
switch_to_blog( $subsite_id );
// Prepare post params.
// https://developer.wordpress.org/reference/functions/wp_update_post/
$my_post = array(
'ID' => $id,
'post_name' => $post_name,
'post_title' => $post_title,
'post_status' => $post_status,
'post_type' => $post_type,
);
// Insert the post into the database.
wp_update_post( $my_post );
// Return to current subsite ie. subsite = 1.
restore_current_blog();
}
}
// @link https://codex.wordpress.org/Plugin_API/Action_Reference/save_post
add_action( 'save_post', 'kush_update_posts_on_subsites', 10, 3 );