HEX
Server: nginx/1.28.1
System: Linux iZgw8b5bpgd4jyptfmmmxgZ 6.6.102-5.2.alnx4.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Nov 27 23:11:10 CST 2025 x86_64
User: www (1000)
PHP: 8.2.28
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot/www.scdc-marine.com/wp-content/themes/scdc-marine/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(){
            
        // News 新闻页面内 自定义参数
            
        Cmb2News::instance();


        if( is_admin() ){

            // 全局 自定义 参数,页面设置
            Cmb2MainOptions::instance();

            // post 文章页面内 自定义参数
            Cmb2Post::instance();

            // page 自定义单页面内 自定义参数
            Cmb2Page::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;
    }
}