100 lines
3.0 KiB
PHP
100 lines
3.0 KiB
PHP
<?php
|
|
|
|
add_action( 'widgets_init', 'ux_blocks_widget' );
|
|
|
|
function ux_blocks_widget() {
|
|
register_widget( 'Flatsome_UX_Blocks_Widget' );
|
|
}
|
|
|
|
/**
|
|
* Recent_Posts widget class
|
|
*
|
|
* @since 2.8.0
|
|
*/
|
|
class Flatsome_UX_Blocks_Widget extends WP_Widget {
|
|
|
|
function __construct() {
|
|
$widget_ops = array( 'classname' => 'block_widget', 'description' => __('A widget that displays a Block ', 'flatsome'), 'customize_selective_refresh' => true);
|
|
|
|
$control_ops = array('id_base' => 'block_widget' );
|
|
|
|
parent::__construct( 'block_widget', __('Flatsome Blocks', 'flatsome'), $widget_ops, $control_ops );
|
|
}
|
|
|
|
function widget($args, $instance) {
|
|
|
|
$cache = wp_cache_get('block_widget', 'widget');
|
|
|
|
if ( !is_array($cache) )
|
|
$cache = array();
|
|
|
|
if ( ! isset( $args['widget_id'] ) )
|
|
$args['widget_id'] = $this->id;
|
|
|
|
if ( isset( $cache[ $args['widget_id'] ] ) ) {
|
|
echo $cache[ $args['widget_id'] ];
|
|
return;
|
|
}
|
|
|
|
ob_start();
|
|
extract($args);
|
|
?>
|
|
|
|
<?php echo $before_widget; ?>
|
|
|
|
<?php if (!empty($instance['title']) ) echo $before_title . $instance['title'] . $after_title; ?>
|
|
|
|
<?php if(!empty($instance['block'])) echo do_shortcode('[block id="'.$instance['block'].'"]'); ?>
|
|
|
|
<?php echo $after_widget; ?>
|
|
|
|
<?php
|
|
$cache[$args['widget_id']] = ob_get_flush();
|
|
wp_cache_set('block_widget', $cache, 'widget');
|
|
}
|
|
|
|
function update( $new_instance, $old_instance ) {
|
|
$instance = array();
|
|
$instance['title'] = strip_tags($new_instance['title']);
|
|
$instance['block'] = ( ! empty( $new_instance['block'] ) ) ? strip_tags( $new_instance['block'] ) : '';
|
|
|
|
$this->flush_widget_cache();
|
|
|
|
return $instance;
|
|
}
|
|
|
|
function flush_widget_cache() {
|
|
wp_cache_delete('block_widget', 'widget');
|
|
}
|
|
|
|
function form( $instance ) {
|
|
|
|
$blocks = array(false => '-- None --');
|
|
|
|
$posts = flatsome_get_post_type_items('blocks');
|
|
if($posts){
|
|
foreach ($posts as $value) {
|
|
$blocks[$value->post_name] = $value->post_title;
|
|
}
|
|
}
|
|
|
|
$title = isset( $instance['title'] ) ? esc_attr( $instance['title'] ) : '';
|
|
$instance['block'] = isset( $instance['block'] ) ? esc_attr( $instance['block'] ) : '';
|
|
|
|
?>
|
|
<p><label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:', 'flatsome' ); ?></label>
|
|
<input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo $title; ?>" /></p>
|
|
|
|
<p><label for="<?php echo $this->get_field_id( 'block' ); ?>"><?php _e( 'Block:', 'flatsome' ); ?></label>
|
|
<select class="widefat" name="<?php echo $this->get_field_name( 'block' ); ?>" id="<?php echo $this->get_field_id( 'block' ); ?>">
|
|
<?php foreach ($blocks as $key => $value) {
|
|
echo '<option '.selected( $instance['block'], $key).' value="'.$key.'">'.$value.'</option>';
|
|
} ?>
|
|
</select></p>
|
|
<p>You can edit blocks with the UX Builder if you hover them in the front-end.<br/><a href="http://docs.uxthemes.com/article/237-ux-builder-how-to-use-blocks" target="_blank">Learn more about Blocks</a></p>
|
|
<?php
|
|
}
|
|
}
|
|
|
|
?>
|