quadmenu/lib/class-widget.php
2025-01-20 16:38:41 +05:30

153 lines
3.8 KiB
PHP

<?php
namespace QuadLayers\QuadMenu;
if ( ! defined( 'ABSPATH' ) ) {
die( '-1' );
}
/**
* Widget Class ex QuadMenu_Widget
*/
class Widget extends \WP_Widget {
private static $instance;
function __construct() {
$widget_ops = array(
'classname' => 'widget_quadmenu_widget',
'description' => esc_html__( 'A widget that displays the menu in the sidebar.', 'quadmenu' ),
);
$control_ops = array(
'width' => 200,
'height' => 250,
'id_base' => 'quadmenu_widget',
);
parent::__construct( 'quadmenu_widget', esc_html__( 'QuadMenu Widget', 'quadmenu' ), $widget_ops, $control_ops );
}
function widget( $args, $instance ) {
extract( $args );
extract(
shortcode_atts(
array(
'menu' => '',
'theme' => '',
'layout' => 'inherit',
),
$instance
)
);
echo $before_widget;
$args = array(
'echo' => false,
'menu' => $menu,
'theme' => $theme,
'layout' => $layout,
'theme_location' => 'widget',
);
if ( wp_doing_ajax() ) {
$args['layout_classes'] = 'js';
}
echo quadmenu( $args );
echo $after_widget;
}
function update( $new_instance, $old_instance ) {
$instance = $old_instance;
$instance['theme'] = strip_tags( $new_instance['theme'] );
$instance['menu'] = strip_tags( $new_instance['menu'] );
$instance['layout'] = strip_tags( $new_instance['layout'] );
return $instance;
}
function themes( $current = false ) {
global $quadmenu_themes;
foreach ( $quadmenu_themes as $key => $theme ) {
?>
<option value="<?php echo esc_attr( $key ); ?>" <?php echo selected( $key, $current ); ?>><?php echo esc_html( $theme ); ?></option>
<?php
}
}
function menus( $current = false ) {
$menus = wp_get_nav_menus();
foreach ( $menus as $key => $menu ) {
?>
<option value="<?php echo esc_attr( $menu->term_id ); ?>" <?php echo selected( $menu->term_id, $current ); ?>><?php echo esc_html( $menu->name ); ?></option>
<?php
}
}
function layouts( $current = false ) {
$layouts = array(
'embed' => esc_html__( 'Embed', 'quadmenu' ),
'collapse' => esc_html__( 'Collapse', 'quadmenu' ),
'offcanvas' => esc_html__( 'Offcanvas', 'quadmenu' ),
'vertical' => esc_html__( 'Vertical', 'quadmenu' ),
'inherit' => esc_html__( 'Inherit', 'quadmenu' ),
);
foreach ( $layouts as $key => $layout ) {
?>
<option value="<?php echo esc_attr( $key ); ?>" <?php echo selected( $key, $current ); ?>><?php echo esc_html( $layout ); ?></option>
<?php
}
}
function form( $instance ) {
$defaults = array(
'location' => '',
'menu' => '',
'layout' => '',
'theme' => '',
);
$instance = wp_parse_args( (array) $instance, $defaults );
?>
<p>
<label for="<?php echo $this->get_field_id( 'menu' ); ?>"><?php esc_html_e( 'Menu', 'quadmenu' ); ?></label>
<select id="<?php echo $this->get_field_id( 'menu' ); ?>" name="<?php echo $this->get_field_name( 'menu' ); ?>" class="widefat">
<?php echo $this->menus( $instance['menu'] ); ?>
</select>
</p>
<p>
<label for="<?php echo $this->get_field_id( 'layout' ); ?>"><?php esc_html_e( 'Layout', 'quadmenu' ); ?></label>
<select id="<?php echo $this->get_field_id( 'layout' ); ?>" name="<?php echo $this->get_field_name( 'layout' ); ?>" class="widefat">
<?php echo $this->layouts( $instance['layout'] ); ?>
</select>
</p>
<p>
<label for="<?php echo $this->get_field_id( 'theme' ); ?>"><?php esc_html_e( 'Theme', 'quadmenu' ); ?></label>
<select id="<?php echo $this->get_field_id( 'theme' ); ?>" name="<?php echo $this->get_field_name( 'theme' ); ?>" class="widefat">
<?php echo $this->themes( $instance['theme'] ); ?>
</select>
</p>
<?php
}
public static function instance() {
if ( ! isset( self::$instance ) ) {
self::$instance = new self();
}
return self::$instance;
}
}