'elementor/admin/menu/register', function ( Admin_Menu_Manager $admin_menu ) {
$this->admin_menu_reorder( $admin_menu );
}, 800 );
add_action( 'elementor/admin/menu/after_register', function () {
$this->admin_menu_set_current();
} );
add_filter( 'admin_title', [ $this, 'admin_title' ], 10, 2 );
add_action( 'all_admin_notices', [ $this, 'replace_admin_heading' ] );
add_filter( 'post_row_actions', [ $this, 'post_row_actions' ], 10, 2 );
add_action( 'admin_footer', [ $this, 'admin_import_template_form' ] );
add_action( 'save_post', [ $this, 'on_save_post' ], 10, 2 );
add_filter( 'display_post_states', [ $this, 'remove_elementor_post_state_from_library' ], 11, 2 );
add_action( 'parse_query', [ $this, 'admin_query_filter_types' ] );
// Template filter by category.
add_action( 'restrict_manage_posts', [ $this, 'add_filter_by_category' ] );
// Template type column.
add_action( 'manage_' . self::CPT . '_posts_columns', [ $this, 'admin_columns_headers' ] );
add_action( 'manage_' . self::CPT . '_posts_custom_column', [ $this, 'admin_columns_content' ], 10, 2 );
// Template library bulk actions.
add_filter( 'bulk_actions-edit-elementor_library', [ $this, 'admin_add_bulk_export_action' ] );
add_filter( 'handle_bulk_actions-edit-elementor_library', [ $this, 'admin_export_multiple_templates' ], 10, 3 );
// Print template library tabs.
add_filter( 'views_edit-' . self::CPT, [ $this, 'admin_print_tabs' ] );
// Show blank state.
add_action( 'manage_posts_extra_tablenav', [ $this, 'maybe_render_blank_state' ] );
}
add_action( 'template_redirect', [ $this, 'block_template_frontend' ] );
// Remove elementor library templates from WP Sitemap
add_filter(
'wp_sitemaps_post_types',
function( $post_types ) {
return $this->remove_elementor_cpt_from_sitemap( $post_types );
}
);
}
/**
* @since 2.0.6
* @access public
*/
public function admin_columns_content( $column_name, $post_id ) {
if ( 'elementor_library_type' === $column_name ) {
/** @var Document $document */
$document = Plugin::$instance->documents->get( $post_id );
if ( $document && $document instanceof Library_Document ) {
$document->print_admin_column_type();
}
}
}
/**
* @since 2.0.6
* @access public
*/
public function admin_columns_headers( $posts_columns ) {
// Replace original column that bind to the taxonomy - with another column.
unset( $posts_columns['taxonomy-elementor_library_type'] );
$offset = 2;
$posts_columns = array_slice( $posts_columns, 0, $offset, true ) + [
'elementor_library_type' => esc_html__( 'Type', 'elementor' ),
] + array_slice( $posts_columns, $offset, null, true );
return $posts_columns;
}
public function get_current_tab_group( $default = '' ) {
//phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nonce verification is not required here.
$current_tabs_group = Utils::get_super_global_value( $_REQUEST, 'tabs_group' ) ?? '';
//phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nonce verification is not required here.
$type_slug = Utils::get_super_global_value( $_REQUEST, self::TAXONOMY_TYPE_SLUG );
if ( $type_slug ) {
$doc_type = Plugin::$instance->documents->get_document_type( $type_slug, '' );
if ( $doc_type ) {
$current_tabs_group = $doc_type::get_property( 'admin_tab_group' );
}
}
return $current_tabs_group;
}
private function get_library_title() {
$title = '';
if ( $this->is_current_screen() ) {
$current_tab_group = $this->get_current_tab_group();
if ( $current_tab_group ) {
$titles = [
'library' => esc_html__( 'Saved Templates', 'elementor' ),
'theme' => esc_html__( 'Theme Builder', 'elementor' ),
'popup' => esc_html__( 'Popups', 'elementor' ),
];
if ( ! empty( $titles[ $current_tab_group ] ) ) {
$title = $titles[ $current_tab_group ];
}
}
}
return $title;
}
private function is_current_screen() {
global $pagenow, $typenow;
return 'edit.php' === $pagenow && self::CPT === $typenow;
}
/**
* @param array $post_types
*
* @return array
*/
private function remove_elementor_cpt_from_sitemap( array $post_types ) {
unset( $post_types[ self::CPT ] );
return $post_types;
}
/**
* Template library local source constructor.
*
* Initializing the template library local source base by registering custom
* template data and running custom actions.
*
* @since 1.0.0
* @access public
*/
public function __construct() {
parent::__construct();
$this->add_actions();
}
}
Fatal error: Uncaught Error: Class 'Elementor\TemplateLibrary\Source_Local' not found in /home/sportuga/public_html/wp-content/plugins/elementor/modules/library/documents/library-document.php:47
Stack trace:
#0 /home/sportuga/public_html/wp-content/plugins/elementor/modules/library/documents/not-supported.php(31): Elementor\Modules\Library\Documents\Library_Document::get_properties()
#1 /home/sportuga/public_html/wp-content/plugins/elementor/core/base/document.php(274): Elementor\Modules\Library\Documents\Not_Supported::get_properties()
#2 /home/sportuga/public_html/wp-content/plugins/elementor/core/documents-manager.php(148): Elementor\Core\Base\Document::get_property('cpt')
#3 /home/sportuga/public_html/wp-content/plugins/elementor/modules/library/module.php(46): Elementor\Core\Documents_Manager->register_document_type('not-supported', 'Elementor\\Modul...')
#4 /home/sportuga/public_html/wp-content/plugins/elementor/core/base/module.php(85): Elementor\Modules\Library\Module->__construct()
#5 /home/sportuga/public_html/w in /home/sportuga/public_html/wp-content/plugins/elementor/modules/library/documents/library-document.php on line 47