plug_dir = plugins_url();
$this->self_closed = false;
$this->one_line = false;
$this->shortcodes = array();
$this->autoload();
// init assets list // useless
$this->assets = array(
'js' => array(),
'css' => array()
);
}
public function autoload() {
$shortcodes = get_option( 'wpgrade_shortcodes_list' );
if ( empty( $shortcodes ) ) {
$shortcodes = array(
'Arrow',
'Button',
'Columns',
'Heading',
'Icon',
'InfoBox',
'OpenTableReservations',
'ProgressBar',
'Quote',
'RestaurantMenu',
'Separator',
'Slider',
'Tabs',
'TeamMember',
'PixFields'
);
}
foreach ( $shortcodes as $file ) {
$file_name = 'WpGradeShortcode_' . $file . '.php';
$file_path = WPGRADE_SHORTCODES_PATH . '/shortcodes/' . $file_name;
if ( ! file_exists( $file_path ) ) {
continue;
}
include_once( $file_path );
$shortcode_class = 'WpGradeShortcode_' . $file;
$shortcode = new $shortcode_class();
// create a list of params needed for js to create the admin panel
$this->shortcodes[ $shortcode_class ]["name"] = $shortcode->name;
$this->shortcodes[ $shortcode_class ]["code"] = $shortcode->code;
$this->shortcodes[ $shortcode_class ]["self_closed"] = $shortcode->self_closed;
$this->shortcodes[ $shortcode_class ]["direct"] = $shortcode->direct;
$this->shortcodes[ $shortcode_class ]["one_line"] = $shortcode->one_line;
$this->shortcodes[ $shortcode_class ]["icon"] = $shortcode->icon;
if ( $shortcode->direct == false ) {
$this->shortcodes[ $shortcode_class ]["params"] = $shortcode->params;
}
}
}
public function get_shortcodes() {
return $this->shortcodes;
}
public function get_code() {
return $this->code;
}
public function load_backend_assets( $buttons ) {
if ( ! empty( $this->backend_assets ) ) {
$types = $this->backend_assets;
foreach ( $types as $type => $assets ) {
foreach ( $assets as $key => $asset ) {
$path = WPGRADE_SHORTCODES_URL . $asset['path'];
if ( $type == 'js' ) {
wp_enqueue_script( $asset['name'], $path, $asset['deps'], '2.3.9', true );
} elseif ( $type == 'css' ) {
wp_enqueue_style( $asset['name'], $path, $asset['deps'], '2.3.9' );
}
}
}
}
// do not modify buttons here ... we just add our scripts
return $buttons;
}
public function load_frontend_assets() {
if ( ! empty( $this->frontend_assets ) && $this->load_frontend_scripts == true ) {
$types = $this->frontend_assets;
foreach ( $types as $type => $assets ) {
foreach ( $assets as $key => $asset ) {
$path = WPGRADE_SHORTCODES_URL . $asset['path'];
if ( $type == 'js' ) {
wp_enqueue_script( $asset['name'], $path, $asset['deps'], '2.3.9', true );
} elseif ( $type == 'css' ) {
wp_enqueue_style( $asset['name'], $path, $asset['deps'], '2.3.9' );
}
}
}
}
}
public function get_clean_content( $content ) {
$content = preg_replace( '#
#', '', $content ); // remove our temp brs
return do_shortcode( $content );
}
public function render_param( $param ) {
$file_name = $param['type'] . '.php';
$file_path = WPGRADE_SHORTCODES_PATH . 'params/' . $file_name;
if ( ! file_exists( $file_path ) ) {
return '' . esc_html__( 'Inexistent param', 'pixcodes' ) . '';
}
ob_start();
include( $file_path );
return ob_get_clean();
}
}
global $wpgrade_shortcodes;
$wpgrade_shortcodes = new WpGradeShortcode();