oont-contents/plugins/ele-custom-skin/includes/admin-bar-menu.php
2025-02-08 15:10:23 +01:00

91 lines
No EOL
2.4 KiB
PHP

<?php
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
class ECS_Admin_Bar_Menu {
private static $admin_bar_edit_documents = [];
private static $wp_admin_bar=[];
public static function instance() {
if ( is_null( self::$_instance ) ) {
self::$_instance = new self();
}
return self::$_instance;
}
public function __construct() {
$this->init();
}
public function init() {
}
public static function add_document( $post_id ) {
if ( post_password_required( $post_id ) ) {
return '';
}
if ( ! get_post_meta( $post_id, '_elementor_edit_mode', true ) ) {
return '';
}
$document = \Elementor\Plugin::$instance->documents->get_doc_for_frontend( $post_id );
// Change the current post, so widgets can use `documents->get_current`.
\Elementor\Plugin::$instance->documents->switch_to_document( $document );
if ( $document->is_editable_by_current_user() ) {
self::$admin_bar_edit_documents[ $document->get_main_id() ] = $document;
}
\Elementor\Plugin::$instance->documents->restore_document();
}
private static function add_menu_in_admin_bar() {
if ( empty( self::$admin_bar_edit_documents ) ) {
return;
}
$queried_object_id = get_queried_object_id();
if ( is_singular() && isset( self::$admin_bar_edit_documents[ $queried_object_id ] ) ) {
$menu_args['href'] = self::$admin_bar_edit_documents[ $queried_object_id ]->get_edit_url();
unset( self::$admin_bar_edit_documents[ $queried_object_id ] );
}
foreach ( self::$admin_bar_edit_documents as $document ) {
self::$wp_admin_bar[] = [
'id' => 'wp-admin-bar-elementor_edit_doc_' . $document->get_main_id(),
'parent' => 'wp-admin-bar-elementor_edit_page-default',
'title' => sprintf( '<span class="elementor-edit-link-title">%s</span><span class="elementor-edit-link-type">%s</span>', $document->get_post()->post_title, $document::get_title() ),
'href' => $document->get_edit_url(),
] ;
}
}
public static function get_menu_args(){
self::add_menu_in_admin_bar();
return json_encode(self::$wp_admin_bar);
}
public static function write_js(){
if(is_admin_bar_showing()){
echo '<script src="'.ELECS_URL.'assets/js/ecs_admin_bar_menu.js"></script><script>';
echo 'ECS_update_admin_bar_menu('.self::get_menu_args().');';
echo '</script>';
}
}
}
add_action('wp_footer',function(){
ECS_Admin_Bar_Menu::write_js();
});