| Server IP : 3.93.235.159 / Your IP : 216.73.216.140 Web Server : Apache System : Linux ip-172-26-0-169 5.10.0-46-cloud-amd64 #1 SMP Debian 5.10.262-1 (2026-07-31) x86_64 User : bitnami ( 1000) PHP Version : 8.2.9 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /bitnami/wordpress/wp-content/plugins/hello-plus/modules/theme/components/ |
Upload File : |
<?php
namespace HelloPlus\Modules\Theme\Components;
use HelloPlus\Includes\Utils;
use HelloPlus\Modules\Admin\Classes\Menu\Pages\Setup_Wizard;
use HelloPlus\Modules\TemplateParts\Documents\{
Ehp_Document_Base,
Ehp_Footer,
Ehp_Header
};
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
class Theme_Overrides {
public function admin_config( array $config ): array {
if ( ! Setup_Wizard::has_site_wizard_been_completed() || has_filter( 'hello-plus-theme/template-parts' ) ) {
return $config;
}
$config['siteParts']['siteParts'] = [];
$header = Ehp_Header::get_active_document();
$footer = Ehp_Footer::get_active_document();
$elementor_active = Utils::is_elementor_active();
$edit_with_elementor = $elementor_active ? '&action=elementor' : '';
if ( $header ) {
$config['siteParts']['siteParts'][] = [
'title' => __( 'Header', 'hello-plus' ),
'link' => get_edit_post_link( $header[0], 'admin' ) . $edit_with_elementor,
];
}
if ( $footer ) {
$config['siteParts']['siteParts'][] = [
'title' => __( 'Footer', 'hello-plus' ),
'link' => get_edit_post_link( $footer[0], 'admin' ) . $edit_with_elementor,
];
}
return $config;
}
public function localize_settings( $data ) {
$data['close_modal_redirect_hello_plus'] = admin_url( 'edit.php?post_type=elementor_library&tabs_group=library&elementor_library_type=' );
return $data;
}
public function display_default_header( bool $display ): bool {
return $this->display_default_header_footer( $display, 'header' );
}
public function display_default_footer( bool $display ): bool {
return $this->display_default_header_footer( $display, 'footer' );
}
protected function display_default_header_footer( bool $display, string $location ): bool {
if ( ! Utils::is_elementor_active() ) {
return $display;
}
if ( ! Utils::elementor()->preview->is_preview_mode() ) {
switch ( $location ) {
case 'header':
return 0 >= Ehp_Header::get_published_post_count() ? $display : false;
case 'footer':
return 0 >= Ehp_Footer::get_published_post_count() ? $display : false;
default:
return $display;
}
}
$preview_post_id = filter_input( INPUT_GET, 'elementor-preview', FILTER_VALIDATE_INT );
$document = Utils::elementor()->documents->get( $preview_post_id );
if ( $document instanceof Ehp_Document_Base && $document::LOCATION === $location ) {
return false;
}
return $display;
}
protected function get_active_document_by_part_type( string $part_type = '' ): array {
$active_document = [];
switch ( $part_type ) {
case 'header':
$active_document = Ehp_Header::get_active_document();
break;
case 'footer':
$active_document = Ehp_Footer::get_active_document();
break;
}
return $active_document;
}
protected function get_edit_part_link( string $part_type = '', string $fallback_link = '' ): string {
$elementor_active = Utils::is_elementor_active();
$edit_with_elementor = $elementor_active ? '&action=elementor' : '';
$active_document = $this->get_active_document_by_part_type( $part_type );
$edit_link = $fallback_link;
$pro_part = Utils::get_pro_part( $part_type );
if ( $pro_part ) {
$edit_link = get_edit_post_link( $pro_part, 'admin' ) . $edit_with_elementor;
} elseif ( ! empty( $active_document ) ) {
$edit_link = get_edit_post_link( $active_document[0], 'admin' ) . $edit_with_elementor;
}
return $edit_link;
}
protected function get_add_new_part_link( string $part_type = '' ): string {
$library_type = 'ehp-' . $part_type;
$add_new_link = admin_url( "edit.php?post_type=elementor_library&tabs_group=library&elementor_library_type={$library_type}" );
if ( Utils::has_pro() ) {
$add_new_link = \Elementor\Plugin::instance()->app->get_base_url() . '#/site-editor/templates/' . $part_type;
}
return $add_new_link;
}
public function site_parts_filter( array $site_parts = [] ): array {
$elementor_active = Utils::is_elementor_active();
// If Elementor is not active or if Elementor Pro is active, let the theme handle the logic.
if ( ! $elementor_active ) {
return $site_parts;
}
foreach ( $site_parts['siteParts'] as &$part ) {
$part_type = $part['id'] ?? '';
if ( ! in_array( $part_type, [ 'header', 'footer' ], true ) ) {
continue;
}
$has_active_document = $this->get_active_document_by_part_type( $part_type );
if ( $has_active_document ) {
$part['sublinks'] = [
[
'title' => __( 'Edit', 'hello-plus' ),
'link' => $this->get_edit_part_link( $part_type, $part['link'] ),
],
[
'title' => __( 'Add New', 'hello-plus' ),
'link' => $this->get_add_new_part_link( $part_type ),
],
];
} else {
$part['sublinks'] = [];
$part['link'] = $this->get_add_new_part_link( $part_type );
$part['showSublinks'] = false;
}
}
return $site_parts;
}
public function __construct() {
add_filter( 'hello-plus-theme/settings/hello_theme', '__return_false' );
add_filter( 'hello-plus-theme/settings/hello_style', '__return_false' );
add_filter( 'hello-plus-theme/customizer/enable', Setup_Wizard::has_site_wizard_been_completed() ? '__return_false' : '__return_true' );
add_filter( 'hello-plus-theme/rest/admin-config', [ $this, 'admin_config' ] );
add_filter( 'elementor/editor/localize_settings', [ $this, 'localize_settings' ] );
add_filter( 'hello-plus-theme/display-default-header', [ $this, 'display_default_header' ], 100 );
add_filter( 'hello-plus-theme/display-default-footer', [ $this, 'display_default_footer' ], 100 );
add_filter( 'hello-plus-theme/template-parts', [ $this, 'site_parts_filter' ], 100 );
}
}