Files
2026-07-02 15:54:39 -06:00

112 lines
2.8 KiB
PHP

<?php
/**
* The main site editor module file.
*
* @package GeneratePress Pro
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // No direct access, please.
}
$overlays_dir = plugin_dir_path( __FILE__ );
require_once $overlays_dir . 'class-overlays.php';
require_once $overlays_dir . 'class-overlay.php';
require_once $overlays_dir . 'class-overlay-post-type.php';
require_once $overlays_dir . 'class-overlay-iframe-context.php';
require_once $overlays_dir . 'class-overlay-rest.php';
/**
* Get our templates.
*
* @param array $custom_args Custom arguments for the query.
*/
function generateblocks_pro_get_overlays( $custom_args = [] ) {
// Return empty array if overlays are disabled.
if ( ! generateblocks_pro_overlays_enabled() ) {
return array();
}
$args = array(
'post_type' => 'gblocks_overlay',
'no_found_rows' => true,
'post_status' => 'publish',
'numberposts' => 500, // phpcs:ignore
'fields' => 'ids',
'suppress_filters' => false,
'order' => 'ASC',
);
$args = array_merge( $args, $custom_args );
// Prevent Polylang from altering the query.
if ( function_exists( 'pll_get_post_language' ) ) {
$args['lang'] = '';
}
$posts = get_posts( $args );
return $posts;
}
/**
* Clear all overlay transient caches.
*
* @since 1.0.0
*/
function generateblocks_pro_clear_overlay_cache() {
delete_option( 'generateblocks_active_overlays' );
}
add_action( 'wp', 'generateblocks_pro_do_overlays' );
/**
* Execute our Overlay Panels.
*
* @since 2.3.0
*/
function generateblocks_pro_do_overlays() {
// Don't execute overlays if the feature is disabled.
if ( ! generateblocks_pro_overlays_enabled() ) {
return;
}
$cached_overlays = get_option( 'generateblocks_active_overlays', false );
if ( false !== $cached_overlays ) {
$posts = $cached_overlays;
} else {
$posts = generateblocks_pro_get_overlays();
update_option( 'generateblocks_active_overlays', $posts );
}
$instance = GenerateBlocks_Pro_Overlay::get_instance();
foreach ( $posts as $post_id ) {
$post_id = apply_filters( 'generateblocks_overlay_post_id', $post_id );
$instance->add_overlay( $post_id );
}
// Get all of the active templates.
$instance->init();
}
add_filter( 'generateblocks_overlay_panel', 'generateblocks_pro_overlay_content_filters' );
/**
* Apply content filters to our overlay panels.
*
* @since 2.3.0
* @param string $content The overlay panel content.
*/
function generateblocks_pro_overlay_content_filters( $content ) {
$content = shortcode_unautop( $content );
$content = do_shortcode( $content );
if ( function_exists( 'wp_filter_content_tags' ) ) {
$content = wp_filter_content_tags( $content );
} elseif ( function_exists( 'wp_make_content_images_responsive' ) ) {
$content = wp_make_content_images_responsive( $content );
}
return $content;
}