View file File name : elementor-content.php Content :<?php namespace Elementor\App\Modules\ImportExport\Runners\Export; use Elementor\App\Modules\ImportExport\Utils as ImportExportUtils; use Elementor\Plugin; class Elementor_Content extends Export_Runner_Base { private $page_on_front_id; public function __construct() { $this->init_page_on_front_data(); } public static function get_name() : string { return 'elementor-content'; } public function should_export( array $data ) { return ( isset( $data['include'] ) && in_array( 'content', $data['include'], true ) ); } public function export( array $data ) { $elementor_post_types = ImportExportUtils::get_elementor_post_types(); $files = []; $manifest = []; foreach ( $elementor_post_types as $post_type ) { $export = $this->export_elementor_post_type( $post_type ); $files = array_merge( $files, $export['files'] ); $manifest[ $post_type ] = $export['manifest_data']; } $manifest_data['content'] = $manifest; return [ 'files' => $files, 'manifest' => [ $manifest_data, ], ]; } private function export_elementor_post_type( $post_type ) { $query_args = [ 'post_type' => $post_type, 'post_status' => 'publish', 'posts_per_page' => -1, 'meta_query' => [ [ 'key' => static::META_KEY_ELEMENTOR_EDIT_MODE, 'compare' => 'EXISTS', ], [ 'key' => '_elementor_data', 'compare' => 'EXISTS', ], [ 'key' => '_elementor_data', 'compare' => '!=', 'value' => '[]', ], ], ]; $query = new \WP_Query( $query_args ); if ( empty( $query ) ) { return [ 'files' => [], 'manifest_data' => [], ]; } $post_type_taxonomies = $this->get_post_type_taxonomies( $post_type ); $manifest_data = []; $files = []; foreach ( $query->posts as $post ) { $document = Plugin::$instance->documents->get( $post->ID ); $terms = ! empty( $post_type_taxonomies ) ? $this->get_post_terms( $post->ID, $post_type_taxonomies ) : []; $post_manifest_data = [ 'title' => $post->post_title, 'excerpt' => $post->post_excerpt, 'doc_type' => $document->get_name(), 'thumbnail' => get_the_post_thumbnail_url( $post ), 'url' => get_permalink( $post ), 'terms' => $terms, ]; if ( $post->ID === $this->page_on_front_id ) { $post_manifest_data['show_on_front'] = true; } $manifest_data[ $post->ID ] = $post_manifest_data; $files[] = [ 'path' => 'content/' . $post_type . '/' . $post->ID, 'data' => $document->get_export_data(), ]; } return [ 'files' => $files, 'manifest_data' => $manifest_data, ]; } private function get_post_type_taxonomies( $post_type ) { return get_object_taxonomies( $post_type ); } private function get_post_terms( $post_id, array $taxonomies ) { $terms = wp_get_object_terms( $post_id, $taxonomies ); $result = []; foreach ( $terms as $term ) { $result[] = [ 'term_id' => $term->term_id, 'taxonomy' => $term->taxonomy, 'slug' => $term->slug, ]; } return $result; } private function init_page_on_front_data() { $show_page_on_front = 'page' === get_option( 'show_on_front' ); if ( $show_page_on_front ) { $this->page_on_front_id = (int) get_option( 'page_on_front' ); } } }