File: /www/wwwroot/www.scdc-marine.com/wp-content/themes/heku-cms/HekuClass/Admin/Cmb2MainOptions.php
<?php
namespace Heku\HekuClass\Admin;
/**
* @package Heku\HekuClass\Admin
* @subpackage Classes/Cmb2MainOptions
* @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 Cmb2MainOptions {
/**
* 类实现单例模式,类的独生子女
*/
private static $instance;
/**
* 依赖注入的接口 Instance 方法
* 目标是 保证 init() 初始化方法 只执行一次
*
* @return self 唯一实例化的本类
*/
public static function instance() {
if ( ! isset( self::$instance ) ) {
self::$instance = new self;
self::$instance->init();
}
return self::$instance;
}
private function init() {
add_action('cmb2_admin_init',array($this,'main_options_page'),101,5);
}
//默认设置项
public static $default_settings = array(
'wrapper_width'=>'1100',
//打赏
'doge_accessKey'=>'',
'doge_secretKey'=>'',
//海报
'single_poster_default_img'=>'',
//评论
'comment_close'=>1,
'comment_use_image'=>1
);
/**
* 创建 Menu 设置 页面
*/
public function main_options_page(){
// 全局 参数设置 Global
$this->menu_global_options();
// 首页 图文设置 Index
$this->menu_index_options();
// 底部 图文设置 Footer
$this->menu_footer_options();
// 分类 排版设置
$this->menu_cat_model_options();
// 产品 排版设置
$this->menu_product_single_options();
// 新闻 排版设置
$this->menu_news_single_options();
}
/**
* 全局 参数 设置
*/
public function menu_global_options(){
$global_options = new_cmb2_box(array(
'id' => 'heku_options_page', // 列表的ID
'icon_url' => 'dashicons-admin-generic',
'option_key' => 'heku_global_options', // heku_get_option('global_options','index_partner_img')
'position' => 3,
'show_on' => array(
'options-page' => 'heku_main_options',
),
'object_types' => array( 'options-page' ),
'menu_title' => __('主 题 设 置','heku'),
'tab_group' => 'heku_template_options',
'tab_title' => __('全局设置','heku'),
));
// 全局设置 模块 '<div class="links-module cmb-row"> <h2 style="padding-left: 10px;">全局设置</h2>',
$global_options->add_field(array(
'before_row'=>'<div class="links-module cmb-row"> <h2 style="padding-left: 10px;">联系我们</h2>',
'name'=>__('公司名称','heku'),
'id'=>'global_company',
'type' => 'text',
'default' => '',
'desc'=>__(' 公司名称,顶部调用,<span class="heku-debug"> 调用ID:<code> global_company </code> </span>','heku')
));
$global_options->add_field(array(
'name'=>__('公司邮箱','heku'),
'id'=>'global_email',
'type' => 'text',
'default' => '',
'desc'=>__(' 公司邮箱,默认收件地址,顶部,侧边栏和联系我们页面调用,<span class="heku-debug"> 调用ID:<code> global_email </code> </span>','heku')
));
$global_options->add_field(array(
'name'=>__('公司地址','heku'),
'id'=>'global_address',
'type' => 'text',
'default' => '',
'desc'=>__(' 公司地址,联系我们页面和测边栏调用,<span class="heku-debug"> 调用ID:<code> global_address </code> </span>','heku')
));
$global_options->add_field(array(
'name'=>__('公司手机号码','heku'),
'id'=>'global_phone',
'type' => 'text',
'default' => '',
'desc'=>__(' 公司地址,测边栏和联系我们页面调用字段,<span class="heku-debug"> 调用ID:<code> global_phone </code> </span>','heku')
));
$global_options->add_field(array(
'name'=>__('公司固定电话','heku'),
'id'=>'global_telephone',
'type' => 'text',
'default' => '',
'after_row'=>'</div>',
'desc'=>__(' 公司固定电话,测边栏和联系我们页面调用字段,<span class="heku-debug"> 调用ID:<code> global_telephone </code> </span>','heku')
));
$global_options->add_field( array(
'name' => __( '导航 Logo 图标', 'heku' ),
'id' => 'logo_ico',
'type' => 'file',
'options' => array(
'url' => true,
),
'text' => array(
'add_upload_file_text' => __( '选择 网站 ICO 图片', 'heku' ),
),
'default' => HEKU_THEME_URI . '/assets/img/favicon.ico.png',
'query_args' => array(
'type' => array(
'image/svg+xml',
'image/gif',
'image/jpeg',
'image/png',
'image/ico',
),
),
'desc' => sprintf(__( ' Logo ICO 图片 ,建议使用 %s 格式的图片。%s ', 'heku' ),'<code> .ico </code>','<span class="heku-debug"> 字段ID:<code> logo_ico </code> </span> '),
));
// 全局设置 模块结束 'after_row'=>'</div>'
}
/**
* 首页 图文 设置
*/
public function menu_index_options(){
$heku_index = new_cmb2_box( array(
'id' => 'heku_template_options_page',
'object_types' => array( 'options-page' ),
'option_key' => 'heku_template_main',
'menu_title' => __('首页图文设置','heku'),
'parent_slug' => 'heku_main_options',
'tab_group' => 'heku_template_options',
'tab_title' => __('首页图文','b2'),
));
// 首页 图文 参数设置
$heku_index->add_field( array(
'before_row'=>'<div class=" cmb-row"> <h2 style="padding-left: 10px;margin-bottom: 0px;"></h2>',
'name' => __( '导航 Logo 图标', 'heku' ),
'id' => 'logo_pr_img',
'type' => 'file',
'options' => array(
'url' => true,
),
'text' => array(
'add_upload_file_text' => __( '选择 Logo 图片', 'heku' ),
),
'default' => HEKU_THEME_URI . '/assets/themes/images/logo-top-1.png',
'query_args' => array(
'type' => array(
'image/svg+xml',
'image/gif',
'image/jpeg',
'image/png',
),
),
'desc' => sprintf(__( ' Logo 图片 ,建议使用 %s 格式的图片。%s ', 'heku' ),'<code> .png </code>','<span class="heku-debug"> 字段ID:<code> logo_pr_img </code> </span> '),
));
$banner_group = $heku_index->add_field( array(
'id' => 'banner_fliter_group',
'type' => 'group',
'show_on_cb' => function( $cmb ) { $status = heku_get_option( 'template_main', 'fliter_group2' ); return '1' === '1'; },
'options' => array(
'group_title' => __( '筛选{#}', 'heku' ), // since version 1.1.4, {#} gets replaced by row number
'add_button' => __( '添加新 Banner 图片', 'heku' ),
'remove_button' => __( '删除 Banner 图片', 'heku' ),
'sortable' => true,
'closed' => true, // true to have the groups closed by default
'remove_confirm' => __( '确定要删除这个筛选吗?', 'heku' ), // Performs confirmation before removing group.
),
'description' => sprintf( __( ' Banner 轮播图片 + 轮播排版格式 <p> 注意拖动时候,列表第一个的排序修改是无效的,无法保存,请展开,使用内置的下移按钮修改排序。 %s </p>', 'b2' ),'<span class="heku-debug"> 分组ID:<code> banner_fliter_group </code> </span> ' ),
'after_row'=>'</div>',
));
// Banner group_field 轮播图的样式
$heku_index->add_group_field( $banner_group ,array(
'name' => sprintf(__(' Banner 图的简称 %s','heku'),'<span class="red">(必填)</span>'),
'id' => 'title',
'type' => 'text',
'desc' => __('给这个筛选起个名字','heku'),
'attributes' => array(
'required' => 'required',
),
));
$heku_index->add_group_field( $banner_group ,array(
'before_row'=>'<div class="cmb-row ">',
'name'=>__('显示在哪些地方','heku'),
'id'=>'banner_used',
'type' => 'multicheck_inline',
'desc' => '多选,首页高度自定义,配合 slider_type 展示样式选择',
'options' => array(
'home_banner' =>__('首页 Banner 背景','heku'),
'news_banner' => __( '新闻页 Banner背景', 'heku' ),
'post_banner' => __( '产品单独显示 Banner背景', 'heku' ),
'contact_banner' => __( '联系我们显示 Banner背景', 'heku' ),
),
'select_all_button' => false,
'default' => array('home_banner'),
'after_row'=>'</div>',
));
$slider = apply_filters('b2_admin_index_mudules_slider_settings', array(
'options'=>array(
'home_banner-1' => __('首页视频 Bnner 样式 home_banner-1','heku'),
'home_banner-2' => __('首页视频 Bnner 样式 home_banner-2','heku'),
'news_banner-1' => __('新闻分类 Bnner 样式 news_banner-1','heku'),
'post_banner-1' => __('产品分类 Bnner 样式 post_banner-1','heku'),
),
'images' => array(
'home_banner-1' => '/Assets/admin/images/slider-1.svg',
'home_banner-2' => '/Assets/admin/images/slider-2.svg',
'news_banner-1' => '/Assets/admin/images/slider-3.svg',
'post_banner-1' => '/Assets/admin/images/slider-3.svg',
)
));
$heku_index->add_group_field( $banner_group, array(
'name' => __( ' Banner 轮播图的样式 ', 'b2' ),
'id' => 'slider_type',
'type' => 'radio_image',
'classes' => 'model-picked',
'options' => $slider['options'],
'images_path' => HEKU_THEME_URI,
'images' => $slider['images'],
'default' => 'home_banner'
));
// Banner 轮播图的样式 结束
$heku_index->add_group_field($banner_group,array(
'before_row'=>'<div class="home_banner-1-module home_banner-2-module cmb-row set-hidden">',
'name'=>' Banner 展示 Class 类名',
'id'=>'banner_class1',
'type' => 'text',
'default' => '',
'desc'=>__('根据 Banner 图片的轮播样式,特殊位置的 Class 类名。<span class="heku-debug"> 字段ID:<code> banner_class1 </code> </span>', 'heku'),
'after_row'=>'</div>',
));
$heku_index->add_group_field($banner_group,array(
'before_row'=>'<div class="home_banner-1-module home_banner-2-module cmb-row set-hidden">',
'name'=>' Banner Url 链接',
'id'=>'banner_product_url',
'type' => 'text',
'default' => '',
'desc'=>__('根据 Banner 图片的轮播样式,具体调用展示不同数量的文字1。<span class="heku-debug"> 字段ID:<code> banner_product_url </code> </span>', 'heku'),
'after_row'=>'</div>',
));
$heku_index->add_group_field($banner_group,array(
'before_row'=>'<div class="home_banner-1-module news_banner-1-module home_banner-2-module cmb-row set-hidden">',
'name'=>' Banner 标题或描述 1',
'id'=>'banner_title1',
'type' => 'text',
'default' => '',
'desc'=>__('根据 Banner 图片的轮播样式,具体调用展示不同数量的文字1。<span class="heku-debug"> 字段ID:<code> banner_title1 </code> </span>', 'heku'),
'after_row'=>'</div>',
));
$heku_index->add_group_field( $banner_group,array(
'before_row'=>'<div class="home_banner-1-module news_banner-1-module home_banner-2-module cmb-row set-hidden">',
'name'=>' Banner 标题或描述 2',
'id'=>'banner_title2',
'type' => 'text',
'default' => '',
'desc'=> __('根据 Banner 图片的轮播样式,具体调用展示不同数量的文字2。 <span class="heku-debug"> 字段ID:<code> banner_title2 </code> </span>', 'heku'),
'after_row'=>'</div>',
));
$heku_index->add_group_field( $banner_group,array(
'before_row'=>'<div class="home_banner-1-module home_banner-2-module cmb-row set-hidden">',
'name'=>' Banner 描述 1',
'id'=>'banner_des1',
'type' => 'text',
'default' => '',
'desc'=> __('根据 Banner 图片的轮播样式,具体调用展示不同数量的文字2。 <span class="heku-debug"> 字段ID:<code> banner_des1 </code> </span>', 'heku'),
'after_row'=>'</div>',
));
$heku_index->add_group_field( $banner_group,array(
'before_row'=>'<div class="home_banner-1-module home_banner-2-module cmb-row set-hidden">',
'name' => '轮播图片( 特殊展示样式使用 )',
'desc' => '产品轮播图片,点击编辑特殊字段,图片尺寸建议1:1 ,尺寸建议60 X 60像素,; 调用ID: <code> product_imgs </code>',
'id' => 'product_imgs',
'type' => 'file_list',
'preview_size' => array( 100, 100 ),
'text' => array(
'add_upload_files_text' => '添加产品图片',
'remove_image_text' => '删除图片',
'file_text' => '文件:',
'file_download_text' => '下载文件',
'remove_text' => '删除',
),
'after_row'=>'</div>'
));
$heku_index->add_group_field( $banner_group, array(
'before_row'=>'<div class="home_banner-1-module home_banner-2-module cmb-row set-hidden">',
'name' => __( 'Banner 前景图片(产品)', 'heku' ),
'desc' => __( '某些 展示样式下使用,建议使用<code> image/png </code> 的透明图片,以适应展示需求。<span class="heku-debug"> 字段ID:<code> banner_pr_img1 </code> </span>', 'heku' ),
'id' => 'banner_pr_img1',
'type' => 'file',
'options' => array(
'url' => true,
),
'text' => array(
'add_upload_file_text' => __( '选择 Banner 图片', 'b2' ),
),
'query_args' => array(
'type' => array(
'image/svg+xml',
'image/gif',
'image/jpeg',
'image/png',
),
),
'after_row'=>'</div>',
));
$heku_index->add_group_field( $banner_group, array(
'before_row'=>'<div class="cmb-row">',
'name' => __( 'Banner 背景(图片)', 'heku' ),
'id' => 'banner_bg_img',
'type' => 'file',
'options' => array(
'url' => true,
),
'text' => array(
'add_upload_file_text' => __( '选择 Banner 图片', 'heku' ),
),
//'default' => HEKU_THEME_URI . '/Assets/admin/images/ed-video.png',
'query_args' => array(
'type' => array(
'image/svg+xml',
'image/gif',
'image/jpeg',
'image/png',
),
),
'desc' => sprintf(__( ' Banner 图片或是背景,建议使用 %s 格式的图片,以适应高分辨率屏幕。%s ', 'heku' ),'<code>.svg</code>','<span class="heku-debug"> 字段ID:<code> banner_bg_img </code> </span> '),
'after_row'=>'</div>',
));
$heku_index->add_group_field( $banner_group, array(
'before_row'=>'<div class="cmb-row ">',
'name' => __( 'Banner 背景(视频)', 'heku' ),
'id' => 'banner_bg_video',
'type' => 'file',
'options' => array(
'url' => true,
),
'text' => array(
'add_upload_file_text' => __( '选择 Banner 图片', 'heku' ),
),
//'default' => HEKU_THEME_URI . '/Assets/admin/images/ed-video.png',
'query_args' => array(
'type' => array(
'image/svg+xml',
'image/gif',
'image/jpeg',
'image/png',
),
),
'desc' => sprintf(__( ' Banner 图片或是背景,建议使用 %s 格式的图片,以适应高分辨率屏幕。%s ', 'heku' ),'<code>.svg</code>','<span class="heku-debug"> 字段ID:<code> banner_bg_video </code> </span> '),
'after_row'=>'</div>',
));
$heku_index->add_group_field( $banner_group, array(
'before_row'=>'<div class="home_banner-1-module home_banner-2-module cmb-row set-hidden">',
'name' => __(' 自定义 CSS 样式','b2'),
'id' => 'banner_customcss',
'default' => '.heku-admin-wrap{padding-top: 20px;}',
'type' => 'textarea_small',
'options' => array( 'disable_codemirror' => true ),
'desc' => '处理由于上传大小差异,文字差异导致的展现不协调,进行 css 样式覆盖和添加,注意 css 样式独有,不要破坏其它页面展示。<span class="heku-debug"> 字段ID:<code> banner_customcss </code> </span> ',
'after_row'=>'</div>',
));
// Banner group_field 设置
// 首页产品调用
$heku_index->add_field( array(
'before_row'=>'</div><div class=" cmb-row"> <h2 style="padding-left: 10px;margin-bottom: 0px;">首页产品调用</h2>',
'name' => __( '首页选择的产品 Posts', 'heku' ),
'desc' => __( '首页选择的产品,轮播', 'heku' ),
'id' => 'index_attached_posts',
'type' => 'custom_attached_posts',
'show_names' => false,
//'render_row_cb' => array( $this , 'yourprefix_render_row_cb' ),
'column' => true, // Output in the admin post-listing as a custom column. https://github.com/CMB2/CMB2/wiki/Field-Parameters#column
'options' => array(
'show_thumbnails' => true, // Show thumbnails on the left
'filter_boxes' => true, // Show a text box for filtering the results
'query_args' => array(
'posts_per_page' => 10,
'post_type' => array('post'),
),
),
'after_row'=>'</div>'
));
// 首页产品调用
// 首页合作伙伴
$heku_index->add_field( array(
'before_row'=>'<div class="cmb-row"> <h2 style="padding-left: 10px;margin-bottom: 10px;">首页合作伙伴调用</h2>',
'name' => '首页合作伙伴 Partner',
'desc' => '首页合作伙伴轮播图片,点击编辑特殊字段,图片尺寸建议1:1 ,尺寸建议60 X 60像素,; 调用ID: <code> index_partner_img </code>',
'id' => 'index_partner_img',
'type' => 'file_list',
'preview_size' => array( 100, 100 ),
'text' => array(
'add_upload_files_text' => '添加产品图片',
'remove_image_text' => '删除图片',
'file_text' => '文件:',
'file_download_text' => '下载文件',
'remove_text' => '删除',
),
'after_row'=>'</div>',
));
// 首页合作伙伴
// 首页 图文 参数设置
}
/**
* 底部 图文 设置 设置
*/
public function menu_footer_options(){
$heku_footer = new_cmb2_box( array(
'id' => 'heku_footer_menu_options',
'object_types' => array( 'options-page' ),
'option_key' => 'heku_footer_menu',
'menu_title' => __('底部图文设置','heku'),
'parent_slug' => 'heku_main_options',
'tab_group' => 'heku_template_options',
'tab_title' => __('底部图文','b2'),
));
}
/**
* 分类 排版 设置
*/
public function menu_cat_model_options(){
$cat_model = new_cmb2_box( array(
'id' => 'heku_cat_model_options',
'object_types' => array( 'options-page' ),
'option_key' => 'heku_cat_model',
'menu_title' => __('分类排版设置','heku'),
'parent_slug' => 'heku_main_options',
'tab_group' => 'heku_template_options',
'tab_title' => __('分类排版','b2'),
));
}
/**
* 产品单页 设置
*/
public function menu_product_single_options(){
$product_single = new_cmb2_box( array(
'id' => 'heku_product_single_options',
'object_types' => array( 'options-page' ),
'option_key' => 'heku_product_single',
'menu_title' => __('产品单页设置','heku'),
'parent_slug' => 'heku_main_options',
'tab_group' => 'heku_template_options',
'tab_title' => __('产品单页','b2'),
));
}
/**
* 新闻 文章单页 设置
*/
public function menu_news_single_options(){
$news_single = new_cmb2_box( array(
'id' => 'heku_news_single_options',
'object_types' => array( 'options-page' ),
'option_key' => 'heku_news_single',
'menu_title' => __('新闻单页设置','heku'),
'parent_slug' => 'heku_main_options',
'tab_group' => 'heku_template_options',
'tab_title' => __('新闻单页','b2'),
));
}
}