File: /www/wwwroot/www.scdc-marine.com/wp-content/themes/heku-cms/HekuClass/Admin/AdminLoader.php
<?php
namespace Heku\HekuClass\Admin;
/**
* @package Heku\HekuClass\SettingsLoader
* @subpackage Classes/SettingLoader
* @author Heku Daleconan <http://www.daleconan.com>
* @copyright Copyright (c) 2022-2023, Heku Daleconan
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
*/
class AdminLoader {
/**
* 类实现单例模式,类的独生子女
*/
private static $instance;
/**
* 依赖注入的接口 Instance 方法
* 目标是 保证 init() 初始化方法 只执行一次
*
* @return self 唯一实例化的本类
*/
public static function instance(){
if ( ! isset( self::$instance ) && ! ( self::$instance instanceof AdminLoader )) {
self::$instance = new AdminLoader;
self::$instance->init();
}
return self::$instance;
}
public function init(){
// 加载模板
$this->load_templates();
if( is_admin() ){
do_action( 'heku_admin_actions' );
// CMB2 自定义 列表图标选择 组件
add_action( 'cmb2_render_radio_image', array( $this, 'cmb2_radio_image_callback' ), 10, 5 );
add_filter( 'cmb2_list_input_attributes', array( $this, 'cmb2_radio_image_attributes' ), 10, 4 );
wp_enqueue_script( 'heku_admin_js',HEKU_THEME_URI.'/assets/admin/admin.js?v='.HEKU_VERSION, array('jquery','jquery-ui-sortable','jquery-ui-draggable','jquery-ui-droppable',), HEKU_VERSION, true );
wp_enqueue_style( 'heku_admin_css', HEKU_THEME_URI.'/assets/admin/admin.css?v='.HEKU_VERSION, HEKU_VERSION, null);
}
}
public function load_templates(){
// 全局 自定义 参数,页面设置
Cmb2MainOptions::instance();
// post 文章页面内 自定义参数
Cmb2Post::instance();
// page 自定义单页面内 自定义参数
Cmb2Page::instance();
// News 新闻页面内 自定义参数
Cmb2News::instance();
// 分类页,标签页,自定义参数
Cmb2Taxonomies::instance();
// 首页 SEO 参数和后台 页面等 SEO有关 自定义参数 和动作
Cmb2SEO::instance();
// 菜单页面自定义参数
Cmb2NavMenu::instance();
// 自定义 富文本
$post = new Editor();
$post->init();
}
// CMB2 图标选择插件
public function cmb2_radio_image_callback($field, $escaped_value, $object_id, $object_type, $field_type_object){
echo $field_type_object->radio();
}
// CMB2 自定义 type 类型 radio_image 时候的 后台处理方式 列表图标组件
public function cmb2_radio_image_attributes($args, $defaults, $field, $cmb){
if ($field->args['type'] == 'radio_image' && isset($field->args['images'])) {
foreach ($field->args['images'] as $field_id => $image) {
if ($field_id == $args['value']) {
$image = trailingslashit($field->args['images_path']) . $image;
$args['label'] = '<img src="' . $image . '" alt="' . $args['value'] . '" title="' . $args['label'] . '" /><br><span>'.$args['label'].'</span>';
}
}
}
return $args;
}
}