post
Copiar/mover paginas entre sites (multisites) WordPress
Publicado em: 05/09/2022 / Atualizado em: 05/09/2022
É possível mover paginas entre sites, da sua rede de multisites do WordPress com alguns trechos de código PHP.
Adicionar o trecho de código PHP abaixo em seu arquivo functions.php ou através de um plugin de código como WPCode.
/** * WordPress Multisite: Copy or Move Pages between Sites * * @author Misha Rudrastyh * @link https://rudrastyh.com/wordpress-multisite/move-posts-between-blogs.html */ // add bulk actions add_filter( 'bulk_actions-edit-page', 'rudr_my_bulk_multisite_actions' ); function rudr_my_bulk_multisite_actions( $bulk_array ) { $sites = get_sites( array( // 'site__in' => array( 1,2,3 ) 'site__not_in' => get_current_blog_id(), // excluding current blog 'number' => 50, ) ); if( $sites ) { foreach( $sites as $site ) { $bulk_array[ 'move_to_' . $site->blog_id ] = 'Move to "' . $site->blogname . '"'; } } return $bulk_array; } // move or Copy posts add_filter( 'handle_bulk_actions-edit-page', 'rudr_bulk_action_multisite_handler', 10, 3 ); function rudr_bulk_action_multisite_handler( $redirect, $doaction, $object_ids ) { // we need query args to display correct admin notices $redirect = remove_query_arg( array( 'misha_posts_moved', 'misha_blogid' ), $redirect ); // our actions begin with "move_to_", so let's check if it is a target action if( strpos( $doaction, 'move_to_' ) === 0 ) { $blog_id = str_replace( 'move_to_', '', $doaction ); // get blog ID from action name foreach ( $object_ids as $post_id ) { // get the original post object as an array $post = get_post( $post_id, ARRAY_A ); // if you need to apply terms (more info below the code) $post_terms = wp_get_object_terms( $post_id, 'category', array( 'fields' => 'slugs' ) ); // get all the post meta $data = get_post_custom( $post_id ); // empty ID field, to tell WordPress to create a new post, not update an existing one $post[ 'ID' ] = ''; switch_to_blog( $blog_id ); // insert the post $inserted_post_id = wp_insert_post( $post ); // insert the post // update post terms wp_set_object_terms( $inserted_post_id, $post_terms, 'category', false ); // add post meta foreach ( $data as $key => $values) { // if you do not want weird redirects if( '_wp_old_slug' === $key ) { continue; } foreach( $values as $value ) { add_post_meta( $inserted_post_id, $key, $value ); } } restore_current_blog(); // if you want just to copy pages, comment this line wp_delete_post( $post_id ); } $redirect = add_query_arg( array( 'misha_posts_moved' => count( $object_ids ), 'misha_blogid' => $blog_id ), $redirect ); } return $redirect; } // show an appropriate notice add_action( 'admin_notices', 'rudr_bulk_multisite_notices' ); function rudr_bulk_multisite_notices() { if( ! empty( $_REQUEST[ 'misha_posts_moved' ] ) ) { // because I want to add blog names to notices $blog = get_blog_details( $_REQUEST[ 'misha_blogid' ] ); // depending on ho much posts were changed, make the message different echo '<div class="updated notice is-dismissible"><p>'; printf( _n( '%d post has been moved to "%s".', '%d posts have been moved to "%s".', $_REQUEST[ 'misha_posts_moved' ] ), $_REQUEST[ 'misha_posts_moved' ], $blog->blogname ); echo '</p></div>'; } }
Créditos: https://rudrastyh.com/wordpress-multisite/move-posts-between-blogs.html
Publicações recomendadas:
Inscreva-se em Nossa News:
Seja notificando sempre que tiver conteúdo novo disponível no meu canal do Youtube ou artigo no meu Blog.

Link Curto para Compartilhamento
Compartilhe esse conteudo nas redes sociais ou por mensagem usando o link curto abaixo. Basta clicar em cima do link para copiar.
bruno.art.br/pb/1954
ID de Referência: 1954
Sugira uma publicação
Envie uma mensagem e sugira um publicação sobre um assunto que tenha dificuldades de resolver.