mirror of
https://github.com/lubuntu-team/lubuntu.me.git
synced 2025-02-23 00:01:07 +00:00
72 lines
2.0 KiB
PHP
72 lines
2.0 KiB
PHP
<?php
|
|
|
|
/**
|
|
* A simple shortcode that just renders a
|
|
*
|
|
* @param $attr
|
|
* @param string $content
|
|
*
|
|
* @return string
|
|
*/
|
|
function siteorigin_widget_shortcode( $attr, $content = '' ){
|
|
$attr = shortcode_atts( array(
|
|
'class' => false,
|
|
'id' => '',
|
|
), $attr, 'panels_widget' );
|
|
|
|
$attr[ 'class' ] = html_entity_decode( $attr[ 'class' ] );
|
|
|
|
global $wp_widget_factory;
|
|
if( ! empty( $attr[ 'class' ] ) && isset( $wp_widget_factory->widgets[ $attr[ 'class' ] ] ) ) {
|
|
$the_widget = $wp_widget_factory->widgets[ $attr[ 'class' ] ];
|
|
|
|
// Parse the value of the shortcode
|
|
preg_match( '/value="(.*?)"/', trim( $content ), $matches );
|
|
if( ! empty( $matches[1] ) ) {
|
|
$data = json_decode( html_entity_decode( $matches[1] ), true );
|
|
}
|
|
|
|
$widget_args = ! empty( $data[ 'args' ] ) ? $data[ 'args' ] : array();
|
|
$widget_instance = ! empty( $data[ 'instance' ] ) ? $data[ 'instance' ] : array();
|
|
|
|
$widget_args = wp_parse_args( array(
|
|
'before_widget' => '',
|
|
'after_widget' => '',
|
|
'before_title' => '<h3 class="widget-title">',
|
|
'after_title' => '</h3>',
|
|
), $widget_args );
|
|
|
|
ob_start();
|
|
$the_widget->widget( $widget_args, $widget_instance );
|
|
return ob_get_clean();
|
|
}
|
|
}
|
|
|
|
function siteorigin_widget_shortcode_register(){
|
|
global $shortcode_tags;
|
|
|
|
// Only load this as a fallback if Page Builder hasn't already registered it.
|
|
if( empty( $shortcode_tags[ 'siteorigin_widget' ] ) ) {
|
|
add_shortcode( 'siteorigin_widget', 'siteorigin_widget_shortcode' );
|
|
}
|
|
}
|
|
add_action( 'plugins_loaded', 'siteorigin_widget_shortcode_register', 15 );
|
|
|
|
/**
|
|
* Tell Page Builder we'll be using the custom siteorigin_widget shortcode
|
|
*
|
|
* @param $shortcode
|
|
* @param $widget
|
|
*
|
|
* @return string
|
|
*/
|
|
function siteorigin_widget_shortcode_panels_cache_shortcode( $shortcode, $widget ){
|
|
if( is_a( $widget, 'SiteOrigin_Widget' ) ) {
|
|
$shortcode = 'siteorigin_widget';
|
|
}
|
|
|
|
return $shortcode;
|
|
}
|
|
|
|
add_filter( 'siteorigin_panels_cache_shortcode', 'siteorigin_widget_shortcode_panels_cache_shortcode', 10, 2 );
|