*/ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } class Opalestate_Field_Iconpicker { /** * Current version number */ const VERSION = '1.0.0'; /** * Initialize the plugin by hooking into CMB2. */ public function __construct() { add_filter( 'cmb2_render_opal_iconpicker', [ $this, 'render_iconpicker' ], 10, 5 ); add_filter( 'cmb2_sanitize_opal_iconpicker', [ $this, 'sanitize' ], 10, 4 ); } public function get_icons() { $fontawesome_key = 'opalestate_fontawesome_data'; $icon_data = []; if ( false === ( $fontawesome_icons = get_transient( $fontawesome_key ) ) ) { $fontawesome = new Opalestate_Iconpicker_Fontawesome(); $fontawesome_icons = $fontawesome->get_icons(); set_transient( $fontawesome_key, $fontawesome_icons, 24 * 7 * HOUR_IN_SECONDS ); } $icon_data = array_merge( $icon_data, $fontawesome_icons ); return apply_filters( 'opalestate_get_font_data', $icon_data ); } /** * Render field. */ public function render_iconpicker( $field, $field_escaped_value, $field_object_id, $field_object_type, $field_type_object ) { $this->setup_admin_scripts(); $output = sprintf( ''; echo '

' . $field->args( 'description' ) . '

'; echo $output; } /** * Sanitize data. */ public function sanitize( $override_value, $value, $object_id, $field_args ) { return sanitize_text_field( $value ); } /** * Enqueue scripts and styles. */ public function setup_admin_scripts() { wp_register_style( 'fontawesome', OPALESTATE_PLUGIN_URL . 'assets/3rd/fontawesome/css/all.min.css', null, '5.11.2', false ); // Iconpicker. wp_register_style( 'fonticonpicker', plugins_url( 'assets/css/jquery.fonticonpicker.min.css', __FILE__ ), [], self::VERSION ); wp_register_style( 'fonticonpicker-grey-theme', plugins_url( 'assets/themes/grey-theme/jquery.fonticonpicker.grey.min.css', __FILE__ ), [ 'fontawesome' ], self::VERSION ); wp_enqueue_style( 'fonticonpicker' ); wp_enqueue_style( 'fonticonpicker-grey-theme' ); wp_enqueue_script( 'fonticonpicker', plugins_url( 'assets/js/jquery.fonticonpicker.min.js', __FILE__ ), [], '2.0.0' ); wp_enqueue_script( 'opalestate-fonticonpicker', plugins_url( 'assets/js/script.js', __FILE__ ), [ 'fonticonpicker' ], self::VERSION ); } } new Opalestate_Field_Iconpicker();