class Mfn_Post_Type_Icons extends Mfn_Post_Type { // Declare properties here public $path_be; public $path_icons; /** * Mfn_Post_Type_Icons constructor */ public function __construct() { parent::__construct(); $upload_dir = wp_upload_dir(); $this->path_be = wp_normalize_path( $upload_dir['basedir'] . '/betheme' ); $this->path_icons = wp_normalize_path( $this->path_be . '/icons' ); add_action( 'init', array($this, 'register' )); add_action( 'init', array($this, 'make_dir' )); add_action( 'trashed_post', array($this, 'single_post_remove' )); if ( is_admin() ) { $this->fields = $this->set_fields(); } add_action( 'wp_footer', array($this, 'load_icons'), 1); add_action( 'admin_footer', array($this, 'load_icons'), 1); } /** * Set post type fields */ private function set_fields() { $unique_id = Mfn_Builder_Helper::unique_id(); return array( 'id' => 'mfn-meta-icons', 'title' => esc_html__('Icons Options', 'mfn-opts'), 'page' => 'icons', 'fields' => array( array( 'id' => 'mfn-icon-name', 'type' => 'text', 'title' => __('Name', 'mfn-opts'), 'desc' => 'Must be unique', 'std' => "My icon " . $unique_id, 'row_class' => 'hidden' ), array( 'id' => 'mfn-icon-prefix', 'type' => 'text', 'title' => __('Prefix', 'mfn-opts'), 'desc' => 'Must be unique', 'std' => "ci-" . $unique_id, 'row_class' => 'hidden' ), array( 'id' => 'mfn-icon-upload', 'type' => 'upload_icon', 'title' => __('Icon pack', 'mfn-opts'), 'desc' => __('Upload an Icomoon zip file', 'mfn-opts'), 'data' => 'icon' ), ), ); } /** * Register new post type and related taxonomy */ public function register() { $labels = array( 'name' => esc_html__('Icons', 'mfn-opts'), 'singular_name' => esc_html__('Icons', 'mfn-opts'), 'add_new' => esc_html__('Add New', 'mfn-opts'), 'add_new_item' => esc_html__('Add New Icons', 'mfn-opts'), 'edit_item' => esc_html__('Edit Icons', 'mfn-opts'), 'new_item' => esc_html__('New Icons', 'mfn-opts'), 'view_item' => esc_html__('View Icons', 'mfn-opts'), 'search_items' => esc_html__('Search Icons', 'mfn-opts'), 'not_found' => esc_html__('No icons found', 'mfn-opts'), ); $args = array( 'labels' => $labels, 'public' => false, 'show_ui' => true, 'show_in_menu' => apply_filters('betheme_dynamic_slug', 'betheme'), 'supports' => array('title'), ); register_post_type('icons', $args); } /** * Directories creation */ public function make_dir() { if( ! file_exists( $this->path_be ) ){ wp_mkdir_p( $this->path_be ); } if( ! file_exists( $this->path_icons ) ){ wp_mkdir_p( $this->path_icons ); } } /** * While trashing the post, remove the directory of icon */ public function single_post_remove( $post_id ) { if ( 'icons' === get_post_type( $post_id ) ){ $icon_name = get_post_field( 'mfn-icon-name-parsed', $post_id ); $src = $this->path_icons.'/'.$icon_name; $wp_filesystem = Mfn_Helper::filesystem(); $wp_filesystem->delete($src, true); wp_delete_post($post_id, true); } } /** * GET icons */ static function load_icons() { $css_link_files_string = ''; $args = array( 'post_type' => 'icons', 'post_status' => 'publish', 'posts_per_page' => '-1', 'order' => 'ASC' ); $icons_fetched = get_posts($args); foreach ( $icons_fetched as $icon ){ $is_style_available = get_post_field('mfn-icon-upload', $icon->ID); if( ! empty( $is_style_available ) ){ $css_link_files_string .= ''; } } echo $css_link_files_string; } /** * GET icons list */ static function get_list_of_icons() { $icon_list = []; $args = array( 'post_type' => 'icons', 'post_status' => 'publish', 'posts_per_page' => '-1', 'order' => 'ASC' ); $icons_fetched = get_posts($args); foreach ( $icons_fetched as $icon ){ $icons_fetched = get_post_field('mfn-icon-titles-array', $icon->ID); if( ! empty( $icons_fetched ) ) { $icon_list[] = get_post_field('mfn-icon-titles-array', $icon->ID); } } return $icon_list; } } new Mfn_Post_Type_Icons();