Php 将一个插件的子类扩展到另一个插件
我正在使用[插件:可视化工具:图表和图形] 在这个插件中有一个类 class Visualizer_Module_Frontend extends Visualizer_Module {Php 将一个插件的子类扩展到另一个插件,php,function,class,overriding,extend,Php,Function,Class,Overriding,Extend,我正在使用[插件:可视化工具:图表和图形] 在这个插件中有一个类 class Visualizer_Module_Frontend extends Visualizer_Module { const NAME = __CLASS__; private $_charts = array(); public function __construct( Visualizer_Plugin $plugin ) { parent::__construct( $plugin ); $
const NAME = __CLASS__;
private $_charts = array();
public function __construct( Visualizer_Plugin $plugin ) {
parent::__construct( $plugin );
$this->_addAction( 'wp_enqueue_scripts', 'enqueueScripts' );
$this->_addShortcode( 'visualizer', 'renderChart' );
// add do_shortocde hook for widget_text filter
if ( !has_filter( 'widget_text', 'do_shortcode' ) ) {
add_filter( 'widget_text', 'do_shortcode' );
}
// add do_shortcode hook for term_description filter
if ( !has_filter( 'term_description', 'do_shortcode' ) ) {
add_filter( 'term_description', 'do_shortcode' );
}
}
public function enqueueScripts() {
wp_register_script( 'visualizer-google-jsapi', '//www.google.com/jsapi', array(), null, true );
wp_register_script( 'visualizer-render', VISUALIZER_ABSURL . 'js/render.js', array( 'visualizer-google-jsapi', 'jquery' ), Visualizer_Plugin::VERSION, true );
}
public function renderChart( $atts ) {
$atts = shortcode_atts( array(
'id' => false, // chart id
'class' => false, // chart class
'series' => false, // series filter hook
'data' => false, // data filter hook
'settings' => false, // data filter hook
), $atts );
// if empty id or chart does not exists, then return empty string
if ( !$atts['id'] || !( $chart = get_post( $atts['id'] ) ) || $chart->post_type != Visualizer_Plugin::CPT_VISUALIZER ) {
return '';
}
$id = 'visualizer-' . $atts['id'];
$class = apply_filters( Visualizer_Plugin::FILTER_CHART_WRAPPER_CLASS, $atts['class'], $atts['id'] );
$class = !empty( $class ) ? ' class="' . $class . '"' : '';
$type = get_post_meta( $chart->ID, Visualizer_Plugin::CF_CHART_TYPE, true );
// faetch and update settings
$settings = get_post_meta( $chart->ID, Visualizer_Plugin::CF_SETTINGS, true );
if ( empty( $settings['height'] ) ) {
$settings['height'] = '400';
}
// handle series filter hooks
$series = apply_filters( Visualizer_Plugin::FILTER_GET_CHART_SERIES, get_post_meta( $chart->ID, Visualizer_Plugin::CF_SERIES, true ), $chart->ID, $type );
if ( !empty( $atts['series'] ) ) {
$series = apply_filters( $atts['series'], $series, $chart->ID, $type );
}
// handle settings filter hooks
$settings = apply_filters( Visualizer_Plugin::FILTER_GET_CHART_SETTINGS, $settings, $chart->ID, $type );
if ( !empty( $atts['settings'] ) ) {
$settings = apply_filters( $atts['settings'], $settings, $chart->ID, $type );
}
// handle data filter hooks
$data = apply_filters( Visualizer_Plugin::FILTER_GET_CHART_DATA, unserialize( $chart->post_content ), $chart->ID, $type );
if ( !empty( $atts['data'] ) ) {
$data = apply_filters( $atts['data'], $data, $chart->ID, $type );
}
// add chart to the array
$this->_charts[$id] = array(
'type' => $type,
'series' => $series,
'settings' => $settings,
'data' => $data,
);
// enqueue visualizer render and update render localizations
wp_enqueue_script( 'visualizer-render' );
wp_localize_script( 'visualizer-render', 'visualizer', array( 'charts' => $this->_charts ) );
return '<div id="' . $id . '"' . $class . '></div>';
} }
类Visualizer_模块\u前端扩展Visualizer_模块{
const NAME=\uuuuuu CLASS\uuuuuuuuu;
私有$_charts=array();
公共函数构造(可视化工具插件$Plugin){
父项::_构造($plugin);
$this->_addAction('wp_enqueue_scripts','enqueueScripts');
$this->_addShortcode('visualizer','renderChart');
//为widget\u文本过滤器添加do\u shortocde钩子
如果(!has_filter('widget_text','do_shortcode')){
添加_过滤器('widget_text','do_shortcode');
}
//为术语描述过滤器添加do_短代码钩子
如果(!has_filter('term_description','do_shortcode')){
添加_过滤器('term_description'、'do_shortcode');
}
}
公共函数排队脚本(){
wp_register_脚本('visualizer google jsapi','//www.google.com/jsapi',array(),null,true);
wp_register_脚本('visualizer render',visualizer ABSURL。'js/render.js',数组('visualizer google jsapi',jquery'),visualizer_Plugin::VERSION,true);
}
公共功能效果图(附件){
$atts=短码_atts(数组)(
'id'=>false,//图表id
'class'=>false,//图表类
'series'=>false,//series筛选器挂钩
'data'=>false,//数据筛选器挂钩
'settings'=>false,//数据筛选器挂钩
)(港币),;
//如果空id或图表不存在,则返回空字符串
如果(!$atts['id']| |!($chart=get_post($atts['id']))| |$chart->post_type!=可视化工具插件::CPT_可视化工具){
返回“”;
}
$id='visualizer-'。$atts['id'];
$class=apply_filters(可视化工具插件::FILTER_CHART_WRAPPER_class,$atts['class'],$atts['id']);
$class=!empty($class)?'class=“”.$class.”“:”;
$type=get\u post\u meta($chart->ID,Visualizer\u插件::CF\u chart\u type,true);
//faetch和更新设置
$settings=get\u post\u meta($chart->ID,可视化工具插件::CF\u settings,true);
if(空($settings['height'])){
$settings['height']='400';
}
//手柄系列过滤器挂钩
$series=apply_filters(可视化工具插件::FILTER_GET_CHART_series,GET_post_meta($CHART->ID,可视化工具插件::CF_series,true),$CHART->ID,$type);
如果(!空($atts['series'])){
$series=apply_过滤器($atts['series'],$series,$chart->ID,$type);
}
//句柄设置过滤器挂钩
$settings=apply\u过滤器(可视化工具插件::过滤器\u获取\u图表\u设置,$settings,$CHART->ID,$type);
如果(!empty($atts['settings'])){
$settings=apply_过滤器($atts['settings'],$settings,$chart->ID,$type);
}
//句柄数据过滤器挂钩
$data=apply_filters(可视化工具插件::FILTER_GET_CHART_data,取消序列化($CHART->post_内容),$CHART->ID,$type);
如果(!空($atts['data'])){
$data=apply_过滤器($atts['data'],$data,$chart->ID,$type);
}
//将图表添加到数组中
$this->\u图表[$id]=数组(
'type'=>$type,
“系列”=>$series,
“设置”=>$settings,
“数据”=>$data,
);
//排队可视化工具渲染和更新渲染本地化
wp_排队_脚本(“可视化工具渲染”);
wp_本地化_脚本('visualizer render','visualizer',数组('charts'=>$this->_charts));
返回“”;
} }
我想扩展这个类,以便重写函数renderChart()。
但是我想用另一个自定义插件来实现这一点。我不想在[plugin:Visualizer:Charts and graph]中进行任何编辑。无论做什么都应该在另一个自定义插件中。我不想在[plugin:Visualizer:Charts and graph]中进行任何编辑。无论做什么,都应该在另一个自定义插件中。