PluginProbe
Elementor Website Builder – more than just a page builder / 3.21.0-beta2
Elementor Website Builder – more than just a page builder v3.21.0-beta2
4.3.3 4.3.2 4.3.1 4.3.0 4.3.0-beta3 4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 All 456 releases
← All changes | modules/home/transformations/create-site-settings-url.php +70 -11 4.2.2 → 3.21.0-beta2 View file →
@@ -1,36 +1,95 @@
1 1 <?php
2 2 namespace Elementor\Modules\Home\Transformations;
3 3
4 -use Elementor\Core\DocumentTypes\Page;
5 -use Elementor\Includes\EditorAssetsAPI;
4 +use Elementor\Core\Base\Document;
5 +use Elementor\Plugin;
6 6
7 7 if ( ! defined( 'ABSPATH' ) ) {
8 - exit; // Exit if accessed directly.
8 + exit; // Exit if accessed directly
9 9 }
10 10
11 11 class Create_Site_Settings_Url extends Base\Transformations_Abstract {
12 12
13 - const SITE_SETTINGS_ITEMS = [ 'Site Settings', 'Site Logo', 'Global Colors', 'Global Fonts' ];
13 + const URL_TYPE = 'site_settings';
14 14
15 15 public function transform( array $home_screen_data ): array {
16 - if ( ! EditorAssetsAPI::has_valid_nested_array( $home_screen_data, [ 'get_started', 'repeater' ] ) ) {
16 + if ( empty( $home_screen_data['get_started'] ) ) {
17 17 return $home_screen_data;
18 18 }
19 19
20 - $site_settings_url_config = Page::get_site_settings_url_config();
20 + $site_settings_url_config = $this->get_site_settings_url_config();
21 21
22 22 $home_screen_data['get_started']['repeater'] = array_map( function( $repeater_item ) use ( $site_settings_url_config ) {
23 - if ( ! in_array( $repeater_item['title'], static::SITE_SETTINGS_ITEMS, true ) ) {
23 + if ( 'Site Settings' !== $repeater_item['title'] ) {
24 24 return $repeater_item;
25 25 }
26 26
27 - if ( ! empty( $repeater_item['tab_id'] ) ) {
28 - $site_settings_url_config['url'] = add_query_arg( [ 'active-tab' => $repeater_item['tab_id'] ], $site_settings_url_config['url'] );
29 - }
30 -
31 27 return array_merge( $repeater_item, $site_settings_url_config );
32 28 }, $home_screen_data['get_started']['repeater'] );
33 29
34 30 return $home_screen_data;
31 + }
32 +
33 + private function get_site_settings_url_config(): array {
34 + $existing_elementor_page = $this->get_elementor_page();
35 + $site_settings_url = ! empty( $existing_elementor_page )
36 + ? $this->get_elementor_edit_url( $existing_elementor_page->ID )
37 + : $this->get_elementor_create_new_page_url();
38 +
39 + return [
40 + 'new_page' => empty( $existing_elementor_page ),
41 + 'url' => $site_settings_url,
42 + 'type' => static::URL_TYPE,
43 + ];
44 + }
45 +
46 + private function get_elementor_create_new_page_url(): string {
47 + $active_kit_id = Plugin::$instance->kits_manager->get_active_id();
48 +
49 + if ( empty( $active_kit_id ) ) {
50 + return Plugin::$instance->documents->get_create_new_post_url( 'page' );
51 + }
52 +
53 + return add_query_arg( [ 'active-document' => $active_kit_id ], Plugin::$instance->documents->get_create_new_post_url( 'page' ) );
54 + }
55 +
56 + private function get_elementor_edit_url( int $post_id ): string {
57 + $active_kit_id = Plugin::$instance->kits_manager->get_active_id();
58 + $document = Plugin::$instance->documents->get( $post_id );
59 +
60 + if ( ! $document ) {
61 + return '';
62 + }
63 +
64 + return add_query_arg( [ 'active-document' => $active_kit_id ], $document->get_edit_url() );
65 + }
66 +
67 + private function get_elementor_page() {
68 + $args = [
69 + 'meta_key' => Document::BUILT_WITH_ELEMENTOR_META_KEY,
70 + 'sort_order' => 'asc',
71 + 'sort_column' => 'post_date',
72 + ];
73 + $pages = get_pages( $args );
74 +
75 + if ( empty( $pages ) ) {
76 + return null;
77 + }
78 +
79 + $show_page_on_front = 'page' === get_option( 'show_on_front' );
80 +
81 + if ( ! $show_page_on_front ) {
82 + return $pages[0];
83 + }
84 +
85 + $home_page_id = get_option( 'page_on_front' );
86 +
87 + foreach ( $pages as $page ) {
88 + if ( (string) $page->ID === $home_page_id ) {
89 + return $page;
90 + }
91 + }
92 +
93 + return $pages[0];
35 94 }
36 95 }