文件操作 - BlockEditor.php
返回文件管理
返回主菜单
删除本文件
文件: /home/www/public/wp-content/plugins/popup-maker/classes/Admin/BlockEditor.php
编辑文件内容
<?php /** * Admin BlockEditor * * @package PopupMaker * @copyright Copyright (c) 2024, Code Atlantic LLC */ /** * Class PUM_Admin_BlockEditor * * @since 1.10.0 */ class PUM_Admin_BlockEditor { public static $version = '1.0.0'; /** * Initialize */ public static function init() { // Always register block categories, regardless of block playground // Support both WordPress 5.8+ and older versions add_filter( 'block_categories_all', [ __CLASS__, 'register_block_categories' ], 10, 2 ); // add_filter( 'block_categories', [ __CLASS__, 'register_block_categories_legacy' ], 10, 2 ); // Bail early if the Block Playground is active and ahead of core. if ( defined( 'PUM_BLOCK_PLAYGROUND' ) && version_compare( PUM_BLOCK_PLAYGROUND, self::$version, '>' ) ) { return; } // TODO Test if this is needed in core or not. add_action( 'enqueue_block_editor_assets', [ 'PUM_Site_Assets', 'register_styles' ] ); add_action( 'enqueue_block_editor_assets', [ __CLASS__, 'register_editor_assets' ] ); add_action( 'enqueue_block_assets', [ __CLASS__, 'register_block_assets' ] ); add_action( 'wp_loaded', [ __CLASS__, 'add_attributes_to_registered_blocks' ], 999 ); } /** * Registers all block assets so that they can be enqueued through Gutenberg in * the corresponding context. * * Passes translations to JavaScript. * * @since 1.10.0 */ public static function register_editor_assets( $hook ) { if ( self::load_block_library() ) { wp_enqueue_script( 'popup-maker-block-library' ); } wp_enqueue_script( 'popup-maker-block-editor' ); } /** * Register block editor JavaScript. * * Block styles are automatically enqueued by WordPress via block.json: * - Frontend: On-demand when blocks are rendered * - Editor: Always available for block inserter previews * * We only manually enqueue the block editor JavaScript in admin. * * @see https://make.wordpress.org/core/2025/03/24/new-filter-should_load_block_assets_on_demand-in-6-8/ * * @param string $hook Current page hook. */ public static function register_block_assets( $hook ) { // Block editor JavaScript is admin-only. // Block styles load automatically via block.json on both frontend and editor. if ( ! is_admin() ) { return; } // Load block editor JavaScript when in popup editor. if ( self::load_block_library() ) { wp_enqueue_script( 'popup-maker-block-library' ); } } /** * Check if the block editor is active. * * @param int|null $post_id Post ID. * @return bool */ public static function is_block_editor_active( $post_id = null ) { // If no post ID is provided, attempt to get it from the global $pagenow. global $pagenow; // Check that we're on the post editing screen. if ( 'post.php' !== $pagenow && 'post-new.php' !== $pagenow ) { return false; } // Determine post type. $post_type = null; // phpcs:disable WordPress.Security.NonceVerification.Recommended if ( isset( $_GET['post_type'] ) ) { $post_type = sanitize_key( $_GET['post_type'] ); } elseif ( isset( $_GET['post'] ) ) { $post_id = (int) $_GET['post']; $post_type = get_post_type( $post_id ); } // phpcs:enable WordPress.Security.NonceVerification.Recommended if ( ! $post_type ) { return false; } return use_block_editor_for_post_type( $post_type ); } /** * Check if the block library should be loaded. * * @return bool */ private static function load_block_library() { return apply_filters( 'popup_maker/block_editor/load_block_library', self::is_block_editor_active() && pum_is_popup_editor() ); } /** * Register custom block categories. * * @param array $categories Array of block categories. * @param WP_Block_Editor_Context $editor_context Block editor context. * @return array Modified block categories. * @since 1.10.0 */ public static function register_block_categories( $categories, $editor_context ) { // Always add Popup Maker category for better discoverability $insert_index = 3; // https://pm.local/wp-admin/post.php?post=821&action=edit // If in the popup editor insert at index 0. if ( isset( $_GET['post'] ) && get_post_type( sanitize_text_field( wp_unslash( $_GET['post'] ) ) ) === 'popup' ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended $insert_index = 0; } array_splice( $categories, $insert_index, 0, [ [ 'slug' => 'popup-maker', 'title' => __( 'Popup Maker', 'popup-maker' ), 'icon' => pum_asset_url( 'mark.svg' ), ], ] ); return $categories; } /** * This is needed to resolve an issue with blocks that use the * ServerSideRender component. Registering the attributes only in js * can cause an error message to appear. Registering the attributes in * PHP as well, seems to resolve the issue. Ideally, this bug will be * fixed in the future. * * Reference: https://github.com/WordPress/gutenberg/issues/16850 * * @since 1.16.0 */ public static function add_attributes_to_registered_blocks() { global $wp_version; if ( version_compare( $wp_version, '5.0' ) === -1 ) { return; } $registered_blocks = WP_Block_Type_Registry::get_instance()->get_all_registered(); foreach ( $registered_blocks as $block ) { $block->attributes['openPopupId'] = [ 'type' => 'string', 'default' => '', ]; } } }
修改文件时间
将文件时间修改为当前时间的前一年
删除文件