PluginProbe
Elementor Website Builder – more than just a page builder / 3.23.0-dev2
Elementor Website Builder – more than just a page builder v3.23.0-dev2
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 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 4.0.7 All 451 releases
elementor / modules / home / transformations / create-site-settings-url.php

create-site-settings-url.php in Elementor Website Builder – more than just a page builder 3.23.0-dev2, at modules/home/transformations/create-site-settings-url.php

102 lines 2.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace Elementor\Modules\Home\Transformations;
3
4 use Elementor\Core\Base\Document;
5 use Elementor\Plugin;
6
7 if ( ! defined( 'ABSPATH' ) ) {
8 exit; // Exit if accessed directly
9 }
10
11 class Create_Site_Settings_Url extends Base\Transformations_Abstract {
12
13 const URL_TYPE = 'site_settings';
14
15 const SITE_SETTINGS_ITEMS = [ 'Site Settings', 'Site Logo', 'Global Colors', 'Global Fonts' ];
16
17 public function transform( array $home_screen_data ): array {
18 if ( empty( $home_screen_data['get_started'] ) ) {
19 return $home_screen_data;
20 }
21
22 $site_settings_url_config = $this->get_site_settings_url_config();
23
24 $home_screen_data['get_started']['repeater'] = array_map( function( $repeater_item ) use ( $site_settings_url_config ) {
25 if ( ! in_array( $repeater_item['title'], static::SITE_SETTINGS_ITEMS, true ) ) {
26 return $repeater_item;
27 }
28
29 if ( ! empty( $repeater_item['tab_id'] ) ) {
30 $site_settings_url_config['url'] = add_query_arg( [ 'active-tab' => $repeater_item['tab_id'] ], $site_settings_url_config['url'] );
31 }
32
33 return array_merge( $repeater_item, $site_settings_url_config );
34 }, $home_screen_data['get_started']['repeater'] );
35
36 return $home_screen_data;
37 }
38
39 private function get_site_settings_url_config(): array {
40 $existing_elementor_page = $this->get_elementor_page();
41 $site_settings_url = ! empty( $existing_elementor_page )
42 ? $this->get_elementor_edit_url( $existing_elementor_page->ID )
43 : $this->get_elementor_create_new_page_url();
44
45 return [
46 'new_page' => empty( $existing_elementor_page ),
47 'url' => $site_settings_url,
48 'type' => static::URL_TYPE,
49 ];
50 }
51
52 private function get_elementor_create_new_page_url(): string {
53 $active_kit_id = Plugin::$instance->kits_manager->get_active_id();
54
55 if ( empty( $active_kit_id ) ) {
56 return Plugin::$instance->documents->get_create_new_post_url( 'page' );
57 }
58
59 return add_query_arg( [ 'active-document' => $active_kit_id ], Plugin::$instance->documents->get_create_new_post_url( 'page' ) );
60 }
61
62 private function get_elementor_edit_url( int $post_id ): string {
63 $active_kit_id = Plugin::$instance->kits_manager->get_active_id();
64 $document = Plugin::$instance->documents->get( $post_id );
65
66 if ( ! $document ) {
67 return '';
68 }
69
70 return add_query_arg( [ 'active-document' => $active_kit_id ], $document->get_edit_url() );
71 }
72
73 private function get_elementor_page() {
74 $args = [
75 'meta_key' => Document::BUILT_WITH_ELEMENTOR_META_KEY,
76 'sort_order' => 'asc',
77 'sort_column' => 'post_date',
78 ];
79 $pages = get_pages( $args );
80
81 if ( empty( $pages ) ) {
82 return null;
83 }
84
85 $show_page_on_front = 'page' === get_option( 'show_on_front' );
86
87 if ( ! $show_page_on_front ) {
88 return $pages[0];
89 }
90
91 $home_page_id = get_option( 'page_on_front' );
92
93 foreach ( $pages as $page ) {
94 if ( (string) $page->ID === $home_page_id ) {
95 return $page;
96 }
97 }
98
99 return $pages[0];
100 }
101 }
102