settings-site-identity.php (4040B)
1 <?php 2 3 namespace Elementor\Core\Kits\Documents\Tabs; 4 5 use Elementor\Controls_Manager; 6 use Elementor\Core\Files\Assets\Files_Upload_Handler; 7 use Elementor\Core\Base\Document; 8 9 if ( ! defined( 'ABSPATH' ) ) { 10 exit; // Exit if accessed directly 11 } 12 13 class Settings_Site_Identity extends Tab_Base { 14 15 public function get_id() { 16 return 'settings-site-identity'; 17 } 18 19 public function get_title() { 20 return esc_html__( 'Site Identity', 'elementor' ); 21 } 22 23 public function get_group() { 24 return 'settings'; 25 } 26 27 public function get_icon() { 28 return 'eicon-site-identity'; 29 } 30 31 public function get_help_url() { 32 return 'https://go.elementor.com/global-site-identity'; 33 } 34 35 protected function register_tab_controls() { 36 $custom_logo_id = get_theme_mod( 'custom_logo' ); 37 $custom_logo_src = wp_get_attachment_image_src( $custom_logo_id, 'full' ); 38 39 $site_icon_id = get_option( 'site_icon' ); 40 $site_icon_src = wp_get_attachment_image_src( $site_icon_id, 'full' ); 41 42 // If CANNOT upload svg normally, it will add a custom inline option to force svg upload if requested. (in logo and favicon) 43 $should_include_svg_inline_option = ! Files_Upload_Handler::is_enabled(); 44 45 $this->start_controls_section( 46 'section_' . $this->get_id(), 47 [ 48 'label' => $this->get_title(), 49 'tab' => $this->get_id(), 50 ] 51 ); 52 53 $this->add_control( 54 $this->get_id() . '_refresh_notice', 55 [ 56 'type' => Controls_Manager::RAW_HTML, 57 'raw' => esc_html__( 'Changes will be reflected in the preview only after the page reloads.', 'elementor' ), 58 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info', 59 ] 60 ); 61 62 $this->add_control( 63 'site_name', 64 [ 65 'label' => esc_html__( 'Site Name', 'elementor' ), 66 'default' => get_option( 'blogname' ), 67 'placeholder' => esc_html__( 'Choose name', 'elementor' ), 68 'label_block' => true, 69 'export' => false, 70 ] 71 ); 72 73 $this->add_control( 74 'site_description', 75 [ 76 'label' => esc_html__( 'Site Description', 'elementor' ), 77 'default' => get_option( 'blogdescription' ), 78 'placeholder' => esc_html__( 'Choose description', 'elementor' ), 79 'label_block' => true, 80 'export' => false, 81 ] 82 ); 83 84 $this->add_control( 85 'site_logo', 86 [ 87 'label' => esc_html__( 'Site Logo', 'elementor' ), 88 'type' => Controls_Manager::MEDIA, 89 'should_include_svg_inline_option' => $should_include_svg_inline_option, 90 'default' => [ 91 'id' => $custom_logo_id, 92 'url' => $custom_logo_src ? $custom_logo_src[0] : '', 93 ], 94 'description' => esc_html__( 'Suggested image dimensions: 350 × 100 pixels.', 'elementor' ), 95 'export' => false, 96 ] 97 ); 98 99 $this->add_control( 100 'site_favicon', 101 [ 102 'label' => esc_html__( 'Site Favicon', 'elementor' ), 103 'type' => Controls_Manager::MEDIA, 104 'should_include_svg_inline_option' => $should_include_svg_inline_option, 105 'default' => [ 106 'id' => $site_icon_id, 107 'url' => $site_icon_src ? $site_icon_src[0] : '', 108 ], 109 'description' => esc_html__( 'Suggested favicon dimensions: 512 × 512 pixels.', 'elementor' ), 110 'export' => false, 111 ] 112 ); 113 114 $this->end_controls_section(); 115 } 116 117 public function on_save( $data ) { 118 if ( 119 ! isset( $data['settings']['post_status'] ) || 120 Document::STATUS_PUBLISH !== $data['settings']['post_status'] || 121 // Should check for the current action to avoid infinite loop 122 // when updating options like: "blogname" and "blogdescription". 123 strpos( current_action(), 'update_option_' ) === 0 124 ) { 125 return; 126 } 127 128 if ( isset( $data['settings']['site_name'] ) ) { 129 update_option( 'blogname', $data['settings']['site_name'] ); 130 } 131 132 if ( isset( $data['settings']['site_description'] ) ) { 133 update_option( 'blogdescription', $data['settings']['site_description'] ); 134 } 135 136 if ( isset( $data['settings']['site_logo'] ) ) { 137 set_theme_mod( 'custom_logo', $data['settings']['site_logo']['id'] ); 138 } 139 140 if ( isset( $data['settings']['site_favicon'] ) ) { 141 update_option( 'site_icon', $data['settings']['site_favicon']['id'] ); 142 } 143 } 144 }