Viewing File: /home/fshjisk/mimikoparis/wp-content/plugins/content-control/classes/Site/Widgets.php

<?php

namespace JP\CC\Site;

use JP\CC\Helpers;
use JP\CC\Widget;
use JP\CC\Is;

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * Class JP\CC\Site\Widgets
 */
class Widgets {

	/**
	 * Initialize Widgets
	 */
	public static function init() {
		add_action( 'sidebars_widgets', array( __CLASS__, 'exclude_widgets' ) );
	}

	/**
	 * Checks for and excludes widgets based on their chosen options.
	 *
	 * @param array $widget_areas An array of widget areas and their widgets.
	 *
	 * @return array The modified $widget_area array.
	 */
	public static function exclude_widgets( $widget_areas ) {

		if ( is_admin() || Helpers::is_customize_preview() ) {
			return $widget_areas;
		}

		foreach ( $widget_areas as $widget_area => $widgets ) {

			if ( ! empty( $widgets ) && 'wp_inactive_widgets' != $widget_area ) {

				foreach ( $widgets as $position => $widget_id ) {

					$options = Widget::get_options( $widget_id );

					// If not accessible then exclude this item.
					$exclude = ! Is::accessible( $options['which_users'], $options['roles'], 'widget' );

					$exclude = apply_filters( 'jp_cc_should_exclude_widget', $exclude, $options, $widget_id );

					// unset non-visible item
					if ( $exclude ) {
						unset( $widget_areas[ $widget_area ][ $position ] );
					}

				}
			}
		}

		return $widget_areas;
	}

}
Back to Directory File Manager