<?php
/**
* My Library Shortcode
*
* @package Ocean_Extra
* @category Core
* @author OceanWP
*/
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if ( ! class_exists( 'OceanWP_Library_Shortcode' ) ) {
class OceanWP_Library_Shortcode {
/**
* Start things up
*/
public function __construct() {
add_shortcode( 'oceanwp_library', array( $this, 'library_shortcode' ) );
}
/**
* Registers the function as a shortcode
*/
public function library_shortcode( $atts, $content = null ) {
// Attributes
$atts = shortcode_atts( array(
'id' => '',
), $atts, 'oceanwp_library' );
ob_start();
if ( $atts[ 'id' ] ) {
$owp_post_type = get_post_type( intval( $atts[ 'id' ] ) );
$owp_post_status = get_post_status( intval( $atts[ 'id' ] ) );
if ( $owp_post_type !== 'oceanwp_library' || $owp_post_status !== 'publish' ) {
return;
}
// Check if the template is created with Elementor
$elementor = get_post_meta( $atts[ 'id' ], '_elementor_edit_mode', true );
// If Elementor
if ( class_exists( 'Elementor\Plugin' ) && $elementor ) {
echo Elementor\Plugin::instance()->frontend->get_builder_content_for_display( $atts[ 'id' ] );
}
// If Beaver Builder.
else if ( class_exists( 'FLBuilder' ) && ! empty( $atts[ 'id' ] ) ) {
echo do_shortcode( '[fl_builder_insert_layout id="' . $atts[ 'id' ] . '"]' );
}
// if SiteOrigin.
else if ( class_exists( 'SiteOrigin_Panels' ) && get_post_meta( $atts[ 'id' ], 'panels_data', true ) ) {
echo SiteOrigin_Panels::renderer()->render( $atts[ 'id' ] );
}
// Else
else {
// Get template content
$content = $atts[ 'id' ];
if ( ! empty( $content ) ) {
$template = get_post( intval( $content ) );
if ( is_object( $template ) && ! is_wp_error( $template ) ) {
$content = $template->post_content;
}
}
// If Gutenberg.
if ( ocean_is_block_template( $atts[ 'id' ] ) ) {
$content = apply_filters( 'oe_library_shortcode_template_content', do_blocks( $content ) );
}
// Display template content.
echo do_shortcode( $content );
}
}
return ob_get_clean();
}
}
}
new OceanWP_Library_Shortcode();
|