File "class_go_portfolio.php"
Full Path: /home/vantageo/public_html/cache/cache/cache/cache/cache/cache/cache/.wp-cli/wp-content/plugins/go_portfolio/class_go_portfolio.php
File size: 146.07 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Go Portfolio - WordPress Responsive Portfolio
*
* @package Go Portfolio - WordPress Responsive Portfolio
* @author Granth <granthweb@gmail.com>
* @link http://granthweb.com
* @copyright 2017 Granth
*/
/**
* Plugin main class
*
* @package Go Portfolio
* @author Granth <granthweb@gmail.com>
*/
class GW_Go_Portfolio {
protected static $plugin_version = '1.7.0';
protected $plugin_slug = 'go-portfolio';
protected static $plugin_prefix = 'gw_go_portfolio';
protected static $instance = null;
protected $screen_hooks = null;
/**
* Initialize the plugin
*/
private function __construct() {
/* Set the constants */
add_action( 'init', array( $this, 'define_constants' ) );
/* Load plugin text domain */
add_action( 'init', array( $this, 'load_plugin_textdomain' ) );
add_action( 'init', array( $this, 'add_thumbnail_support' ) );
/* Load the functions files */
add_action( 'init', array( $this, 'load_includes' ) );
/* Plugin version check */
add_action( 'init', array( $this, 'plugin_version_check' ) );
/* Register post types */
add_action( 'init', array( $this, 'register_custom_post_types' ) );
/* Register taxonomy for attachment */
add_action( 'init', array( $this, 'register_custom_tax' ) );
/* Meta boxes */
add_action( 'init', array( $this, 'create_meta_box' ), 9999 );
/* Admin notices */
add_action( 'admin_notices', array( $this, 'print_admin_notices' ) );
/* Add the options page and menu item */
add_action( 'admin_menu', array( $this, 'register_menu_pages' ) );
// Start output buffering
add_action( 'admin_init', array( $this, 'start_ob' ) );
/* Load admin styles and js */
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_styles' ) );
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts' ) );
/* Load public styles and js */
add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_styles' ) );
add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
/* Shortcodes */
add_shortcode( 'go_portfolio', array( $this, 'go_portfolio_shortcode' ) );
add_shortcode( 'gopf_meta', array( $this, 'go_portfolio_meta_shortcode' ) );
add_shortcode( 'gopf_list_terms', array( $this, 'go_portfolio_list_terms_shortcode' ) );
/* Ajax hooks */
add_action( 'wp_ajax_nopriv_go_portfolio_plugin_menu_page', array( $this, 'ajax_nopriv' ) );
add_action( 'wp_ajax_go_portfolio_plugin_menu_page', array( $this, 'plugin_menu_page' ) );
add_action( 'wp_ajax_nopriv_go_portfolio_reset_template_style', array( $this, 'ajax_nopriv' ) );
add_action( 'wp_ajax_go_portfolio_reset_template_style', array( $this, 'reset_template_style' ) );
/* Public ajax hooks */
add_action( 'wp_ajax_nopriv_go_portfolio_ajax_load_portfolio', array( $this, 'ajax_load_portfolio' ) );
add_action( 'wp_ajax_go_portfolio_ajax_load_portfolio', array( $this, 'ajax_load_portfolio' ) );
}
/**
* Return an instance of this class
*/
public static function get_instance() {
if ( self::$instance == null ) {
self::$instance = new self;
}
return self::$instance;
}
/**
* Get plugin prefix
*/
public static function plugin_prefix() {
return self::$plugin_prefix;
}
/**
* Fired when the plugin is activated
*/
public static function activate( $network_wide ) {
/* Load template files and save to db */
$templates = get_option( self::$plugin_prefix . '_templates' );
if ( !$templates ) {
$templates = self::load_templates();
if ( $templates ) { update_option ( self::$plugin_prefix . '_templates', $templates ); }
}
/* Load style files and save to db */
$styles = get_option( self::$plugin_prefix . '_styles' );
if ( !$styles ) {
$styles = self::load_styles();
if ( $styles ) { update_option ( self::$plugin_prefix . '_styles', $styles ); }
}
/* Create general settings db data with default values */
$general_settings = get_option( self::$plugin_prefix . '_general_settings' );
if ( !$general_settings ) {
/* Set default values */
$general_settings['responsivity']=1;
$general_settings['colw-min']='130px';
$general_settings['colw-max']='';
$general_settings['size1-min']='768px';
$general_settings['size1-max']='959px';
$general_settings['size2-min']='480px';
$general_settings['size2-max']='767px';
$general_settings['size3-min']='';
$general_settings['size3-max']='479px';
$general_settings['max-width']='400px';
$general_settings['max-width2']='';
update_option( self::$plugin_prefix . '_general_settings', $general_settings );
}
/* Save version info to db and generate static css file */
delete_option( self::$plugin_prefix . '_version' );
$get_plugin_version = self::plugin_version_check();
if ( !$get_plugin_version ) {
update_option ( self::$plugin_prefix . '_version', self::$plugin_version );
}
/* Update notices notices */
if ( isset( $notices ) ) { self::update_admin_notices ( $notices ); }
/* Flush rewrite rules */
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
/**
* Fired when the plugin is deactivated
*/
public static function deactivate() {
}
/**
* Fired when the plugin is uninstalled
*/
public static function uninstall( $network_wide ) {
/* Delete db data */
delete_option( self::$plugin_prefix . '_general_settings' );
delete_option( self::$plugin_prefix . '_cpts' );
delete_option( self::$plugin_prefix . '_cpts_hash' );
delete_option( self::$plugin_prefix . '_tax_hash' );
delete_option( self::$plugin_prefix . '_portfolios' );
delete_option( self::$plugin_prefix . '_templates' );
delete_option( self::$plugin_prefix . '_styles' );
delete_option( self::$plugin_prefix . '_version' );
delete_option( self::$plugin_prefix . '_notices' );
/* Flush rewrite rules */
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
/**
* Start output buffering
*
* @return void
*/
public function start_ob() {
ob_start();
}
/**
* Define constants
*/
public function define_constants() {
/* Set constant path to the plugin directory */
define( 'GW_GO_PORTFOLIO_DIR', plugin_dir_path( __FILE__ ) );
/* Set the constant path to the plugin directory URI */
define( 'GW_GO_PORTFOLIO_URI', plugin_dir_url( __FILE__ ) );
/* Set the constant path to the includes directory */
define( 'GW_GO_PORTFOLIO_INCLUDES', GW_GO_PORTFOLIO_DIR . trailingslashit( 'includes' ) );
}
/**
* Loads the initial files needed by the plugin
*/
public function load_includes() {
require_once( GW_GO_PORTFOLIO_INCLUDES . 'functions.php' );
require_once( GW_GO_PORTFOLIO_INCLUDES . 'class_gw_metabox.php' );
}
/**
* Load the plugin text domain for translation
*/
public function load_plugin_textdomain() {
load_plugin_textdomain( 'go_portfolio_textdomain', FALSE, dirname( plugin_basename( __FILE__ ) ) . '/lang/' );
}
/**
* Register and enqueue admin styles
*/
public function enqueue_admin_styles() {
if ( ! isset( $this->screen_hooks ) ) { return; }
$screen = get_current_screen();
if ( in_array( $screen->id, $this->screen_hooks ) ) {
global $wp_version;
/* Load version dependent styles */
if ( version_compare( $wp_version, 3.5, ">=" ) ) {
wp_enqueue_style( 'wp-color-picker' );
} else {
wp_enqueue_style( 'farbtastic' );
wp_enqueue_style( 'thickbox' );
}
/* Load plugin styles */
wp_enqueue_script( 'jquery-ui-sortable' );
wp_enqueue_style( $this->plugin_slug .'-admin-styles', GW_GO_PORTFOLIO_URI . 'admin/css/go_portfolio_admin_styles.css', array(), self::$plugin_version );
} else {
if ( isset( $screen->id ) && $screen->post_type && $screen->id == $screen->post_type ) {
wp_enqueue_style( $this->plugin_slug .'-admin-global-styles', GW_GO_PORTFOLIO_URI . 'admin/css/go_portfolio_admin_global_styles.css', array(), self::$plugin_version );
}
}
}
/**
* Register and enqueue admin js
*/
public function enqueue_admin_scripts() {
if ( ! isset( $this->screen_hooks ) ) { return; }
$screen = get_current_screen();
if ( in_array( $screen->id, $this->screen_hooks ) ) {
global $wp_version;
/* Load version dependent scripts */
if ( version_compare( $wp_version, 3.5, ">=" ) ) {
wp_enqueue_media();
wp_enqueue_script( $this->plugin_slug .'-admin-scripts', GW_GO_PORTFOLIO_URI . 'admin/js/go_portfolio_admin_scripts.js', array( 'jquery', 'wp-color-picker' ), self::$plugin_version );
} else {
wp_enqueue_script( 'farbtastic' );
wp_enqueue_script( 'thickbox' );
wp_enqueue_script( 'media-upload' );
wp_enqueue_script( $this->plugin_slug .'-admin-scripts', GW_GO_PORTFOLIO_URI . 'admin/js/go_portfolio_admin_scripts.js', array( 'jquery' ), self::$plugin_version );
}
}
}
/**
* Register and enqueue public styles
*/
public function enqueue_styles() {
global $post;
$general_settings = get_option( self::$plugin_prefix . '_general_settings' );
if ( !empty( $general_settings['plugin-pages-rule'] ) && $general_settings['plugin-pages'] && !empty( $post ) ) {
$page_ids = $general_settings['plugin-pages'];
if ( !empty( $page_ids ) ) {
$pages = trim( preg_replace( '/([^0-9][^,]{0})+/', ',', $page_ids ), ',' );
$pages = explode( ',', $pages );
if ( $general_settings['plugin-pages-rule'] == 'in' && !in_array( $post->ID, $pages ) ) return;
if ( $general_settings['plugin-pages-rule'] == 'not_in' && in_array( $post->ID, $pages ) ) return;
}
}
wp_enqueue_style( $this->plugin_slug .'-magnific-popup-styles', GW_GO_PORTFOLIO_URI . 'assets/plugins/magnific-popup/magnific-popup.css', array(), self::$plugin_version );
$zindex_value = isset( $general_settings['lb-zindex'] ) ? floatval( $general_settings['lb-zindex'] ) : '';
if ( $zindex_value != '' ) {
$mfp_css = '.mfp-bg { z-index:' . $zindex_value . ' !important;} .mfp-wrap { z-index:' . ( $zindex_value+1 ) . ' !important;}';
wp_add_inline_style( $this->plugin_slug .'-magnific-popup-styles', $mfp_css );
}
wp_enqueue_style( $this->plugin_slug .'-styles', GW_GO_PORTFOLIO_URI . 'assets/css/go_portfolio_styles.css', array(), self::$plugin_version );
if ( isset( $general_settings['responsivity'] ) ) {
$responsive_css = '@media only screen' . ( isset( $general_settings['size1-min'] ) && $general_settings['size1-min'] != '' ? ' and (min-width: ' . $general_settings['size1-min'] . ')' : '' ) . (
isset( $general_settings['size1-max'] ) && $general_settings['size1-max'] != '' ? ' and (max-width: ' . $general_settings['size1-max'] . ')' : '' ) . ' {
.gw-gopf-posts { letter-spacing:10px; }
.gw-gopf {
'. ( isset( $general_settings['max-width3'] ) && !empty( $general_settings['max-width3'] ) ? 'max-width:' . floatval( $general_settings['max-width3'] ) . 'px;' : '' ) .'
margin:0 auto;
}
.gw-gopf-1col .gw-gopf-col-wrap {
float:left !important;
margin-left:0 !important;
width:100%;
}
.gw-gopf-2cols .gw-gopf-col-wrap,
.gw-gopf-3cols .gw-gopf-col-wrap,
.gw-gopf-4cols .gw-gopf-col-wrap,
.gw-gopf-5cols .gw-gopf-col-wrap,
.gw-gopf-6cols .gw-gopf-col-wrap,
.gw-gopf-7cols .gw-gopf-col-wrap,
.gw-gopf-8cols .gw-gopf-col-wrap,
.gw-gopf-9cols .gw-gopf-col-wrap,
.gw-gopf-10cols .gw-gopf-col-wrap { width:50% !important; }
}
@media only screen' . ( isset( $general_settings['size2-min'] ) && $general_settings['size2-min'] != '' ? ' and (min-width: ' . $general_settings['size2-min'] . ')' : '' ) . (
isset( $general_settings['size2-max'] ) && $general_settings['size2-max'] != '' ? ' and (max-width: ' . $general_settings['size2-max'] . ')' : '' ) . ' {
.gw-gopf-posts { letter-spacing:20px; }
.gw-gopf {
'. ( isset( $general_settings['max-width2'] ) && !empty( $general_settings['max-width2'] ) ? 'max-width:' . floatval( $general_settings['max-width2'] ) . 'px;' : '' ) .'
margin:0 auto;
}
.gw-gopf-1col .gw-gopf-col-wrap,
.gw-gopf-2cols .gw-gopf-col-wrap,
.gw-gopf-3cols .gw-gopf-col-wrap,
.gw-gopf-4cols .gw-gopf-col-wrap,
.gw-gopf-5cols .gw-gopf-col-wrap,
.gw-gopf-6cols .gw-gopf-col-wrap,
.gw-gopf-7cols .gw-gopf-col-wrap,
.gw-gopf-8cols .gw-gopf-col-wrap,
.gw-gopf-9cols .gw-gopf-col-wrap,
.gw-gopf-10cols .gw-gopf-col-wrap {
float:left !important;
margin-left:0 !important;
width:100%;
}
/* RTL */
.gw-gopf-rtl.gw-gopf-1col .gw-gopf-col-wrap,
.gw-gopf-rtl.gw-gopf-2cols .gw-gopf-col-wrap,
.gw-gopf-rtl.gw-gopf-3cols .gw-gopf-col-wrap,
.gw-gopf-rtl.gw-gopf-4cols .gw-gopf-col-wrap,
.gw-gopf-rtl.gw-gopf-5cols .gw-gopf-col-wrap,
.gw-gopf-rtl.gw-gopf-6cols .gw-gopf-col-wrap,
.gw-gopf-rtl.gw-gopf-7cols .gw-gopf-col-wrap,
.gw-gopf-rtl.gw-gopf-8cols .gw-gopf-col-wrap,
.gw-gopf-rtl.gw-gopf-9cols .gw-gopf-col-wrap,
.gw-gopf-rtl.gw-gopf-10cols .gw-gopf-col-wrap { float:right !important; }
.gw-gopf-slider-type.gw-gopf-rtl.gw-gopf-1col .gw-gopf-col-wrap,
.gw-gopf-slider-type.gw-gopf-rtl.gw-gopf-2cols .gw-gopf-col-wrap,
.gw-gopf-slider-type.gw-gopf-rtl.gw-gopf-3cols .gw-gopf-col-wrap,
.gw-gopf-slider-type.gw-gopf-rtl.gw-gopf-4cols .gw-gopf-col-wrap,
.gw-gopf-slider-type.gw-gopf-rtl.gw-gopf-5cols .gw-gopf-col-wrap,
.gw-gopf-slider-type.gw-gopf-rtl.gw-gopf-6cols .gw-gopf-col-wrap,
.gw-gopf-slider-type.gw-gopf-rtl.gw-gopf-7cols .gw-gopf-col-wrap,
.gw-gopf-slider-type.gw-gopf-rtl.gw-gopf-8cols .gw-gopf-col-wrap,
.gw-gopf-slider-type.gw-gopf-rtl.gw-gopf-9cols .gw-gopf-col-wrap,
.gw-gopf-slider-type.gw-gopf-rtl.gw-gopf-10cols .gw-gopf-col-wrap { float:left !important; }
}
@media only screen' . ( isset( $general_settings['size3-min'] ) && $general_settings['size3-min'] != '' ? ' and (min-width: ' . $general_settings['size3-min'] . ')' : '' ) . (
isset( $general_settings['size3-max'] ) && $general_settings['size3-max'] != '' ? ' and (max-width: ' . $general_settings['size3-max'] . ')' : '' ) . ' {
.gw-gopf-posts { letter-spacing:30px; }
.gw-gopf {
'. ( isset( $general_settings['max-width'] ) && !empty( $general_settings['max-width'] ) ? 'max-width:' . floatval( $general_settings['max-width'] ) . 'px;' : '' ) .'
margin:0 auto;
}
.gw-gopf-1col .gw-gopf-col-wrap,
.gw-gopf-2cols .gw-gopf-col-wrap,
.gw-gopf-3cols .gw-gopf-col-wrap,
.gw-gopf-4cols .gw-gopf-col-wrap,
.gw-gopf-5cols .gw-gopf-col-wrap,
.gw-gopf-6cols .gw-gopf-col-wrap,
.gw-gopf-7cols .gw-gopf-col-wrap,
.gw-gopf-8cols .gw-gopf-col-wrap,
.gw-gopf-9cols .gw-gopf-col-wrap,
.gw-gopf-10cols .gw-gopf-col-wrap {
margin-left:0 !important;
float:left !important;
width:100%;
}
/* RTL */
.gw-gopf-rtl.gw-gopf-1col .gw-gopf-col-wrap,
.gw-gopf-rtl.gw-gopf-2cols .gw-gopf-col-wrap,
.gw-gopf-rtl.gw-gopf-3cols .gw-gopf-col-wrap,
.gw-gopf-rtl.gw-gopf-4cols .gw-gopf-col-wrap,
.gw-gopf-rtl.gw-gopf-5cols .gw-gopf-col-wrap,
.gw-gopf-rtl.gw-gopf-6cols .gw-gopf-col-wrap,
.gw-gopf-rtl.gw-gopf-7cols .gw-gopf-col-wrap,
.gw-gopf-rtl.gw-gopf-8cols .gw-gopf-col-wrap,
.gw-gopf-rtl.gw-gopf-9cols .gw-gopf-col-wrap,
.gw-gopf-rtl.gw-gopf-10cols .gw-gopf-col-wrap { float:right !important; }
.gw-gopf-slider-type.gw-gopf-rtl.gw-gopf-1col .gw-gopf-col-wrap,
.gw-gopf-slider-type.gw-gopf-rtl.gw-gopf-2cols .gw-gopf-col-wrap,
.gw-gopf-slider-type.gw-gopf-rtl.gw-gopf-3cols .gw-gopf-col-wrap,
.gw-gopf-slider-type.gw-gopf-rtl.gw-gopf-4cols .gw-gopf-col-wrap,
.gw-gopf-slider-type.gw-gopf-rtl.gw-gopf-5cols .gw-gopf-col-wrap,
.gw-gopf-slider-type.gw-gopf-rtl.gw-gopf-6cols .gw-gopf-col-wrap,
.gw-gopf-slider-type.gw-gopf-rtl.gw-gopf-7cols .gw-gopf-col-wrap,
.gw-gopf-slider-type.gw-gopf-rtl.gw-gopf-8cols .gw-gopf-col-wrap,
.gw-gopf-slider-type.gw-gopf-rtl.gw-gopf-9cols .gw-gopf-col-wrap,
.gw-gopf-slider-type.gw-gopf-rtl.gw-gopf-10cols .gw-gopf-col-wrap { float:left !important; }
}';
wp_add_inline_style( $this->plugin_slug .'-styles', $responsive_css );
}
$font_import = '';
if ( isset( $general_settings['primary-font-css'] ) && !empty( $general_settings['primary-font-css'] ) ) { $font_import = '@import url(' . $general_settings['primary-font-css'] . ');'; }
if ( isset( $general_settings['secondary-font-css'] ) && !empty( $general_settings['secondary-font-css'] ) ) { $font_import = '@import url(' . $general_settings['secondary-font-css'] . ');'; }
if ( !empty( $font_import ) ) wp_add_inline_style( $this->plugin_slug .'-styles', $font_import );
}
/**
* Register and enqueues public js
*/
public function enqueue_scripts() {
global $post;
$general_settings = get_option( self::$plugin_prefix . '_general_settings' );
if ( !empty( $general_settings['plugin-pages-rule'] ) && $general_settings['plugin-pages'] && !empty( $post ) ) {
$page_ids = $general_settings['plugin-pages'];
if ( !empty( $page_ids ) ) {
$pages = trim( preg_replace( '/([^0-9][^,]{0})+/', ',', $page_ids ), ',' );
$pages = explode( ',', $pages );
if ( $general_settings['plugin-pages-rule'] == 'in' && !in_array( $post->ID, $pages ) ) return;
if ( $general_settings['plugin-pages-rule'] == 'not_in' && in_array( $post->ID, $pages ) ) return;
}
}
$in_footer = empty( $general_settings['js-in-header'] );
$general_settings = get_option( self::$plugin_prefix . '_general_settings' );
wp_enqueue_script( $this->plugin_slug . '-magnific-popup-script', plugins_url( 'assets/plugins/magnific-popup/jquery.magnific-popup.min.js', __FILE__ ), array( 'jquery' ), self::$plugin_version, $in_footer );
wp_enqueue_script( $this->plugin_slug . '-isotope-script', plugins_url( 'assets/plugins/jquery.isotope.min.js', __FILE__ ), array( 'jquery' ), self::$plugin_version, $in_footer );
wp_enqueue_script( $this->plugin_slug . '-caroufredsel-script', plugins_url( 'assets/plugins/jquery.carouFredSel-6.2.1-packed.js', __FILE__ ), array( 'jquery' ), self::$plugin_version, $in_footer );
wp_enqueue_script( $this->plugin_slug . '-touchswipe-script', plugins_url( 'assets/plugins/jquery.touchSwipe.min.js', __FILE__ ), array( 'jquery' ), self::$plugin_version, $in_footer );
wp_enqueue_script( $this->plugin_slug . '-script', plugins_url( 'assets/js/go_portfolio_scripts.js', __FILE__ ), array( 'jquery' ), self::$plugin_version, $in_footer );
wp_localize_script( $this->plugin_slug . '-script', self::$plugin_prefix . '_settings', array(
'ajaxurl' => admin_url( 'admin-ajax.php' ),
'mobileTransition' => isset( $general_settings['disable-mobile-trans'] ) ? 'disabled': 'enabled'
)
);
}
/**
* Plugin version check
*/
public static function plugin_version_check() {
/* Save version info to db and generate static css file */
$saved_version = get_option( self::$plugin_prefix . '_version' );
if ( $saved_version ) {
if ( version_compare( $saved_version, self::$plugin_version, "!=" ) ) {
update_option ( self::$plugin_prefix . '_version', self::$plugin_version );
$templates = self::load_templates();
if ( $templates ) { update_option ( self::$plugin_prefix . '_templates', $templates ); }
$styles = self::load_styles();
if ( $styles ) { update_option ( self::$plugin_prefix . '_styles', $styles ); }
$notices[] = array (
'success' => true,
'permanent' => false,
'message' => sprintf( __( 'Go Portfolio - WordPress Responsive Portfolio plugin has been updated! Current version: %1$s', 'go_portfolio_textdomain' ), self::$plugin_version )
);
if ( version_compare( $saved_version, '1.4.0', "<" ) ) {
$notices[] = array (
'success' => true,
'permanent' => false,
'message' => sprintf( __( 'Please read <a href="%1$s" target="_blank">this</a> the plugin update information carefully!', 'go_portfolio_textdomain' ), 'http://www.go-plugins.com/portfolio/update-info/' )
);
}
if ( isset( $notices ) ) { self::update_admin_notices ( $notices ); }
}
return self::$plugin_version;
} else {
return false;
}
}
/**
* Add thumnbnail support for all post types
*/
public function add_thumbnail_support() {
global $_wp_theme_features;
$_wp_theme_features['post-thumbnails'] = true;
}
/**
* Register the administration menus for this plugin
*/
public function register_menu_pages() {
$general_settings = get_option( self::$plugin_prefix . '_general_settings' );
$capability = isset( $general_settings['capability'] ) ? $general_settings['capability'] : 'manage_options';
/* Main menu page */
$this->screen_hooks[] = add_menu_page(
__( 'Go Portfolio', 'go_portfolio_textdomain' ),
__( 'Go Portfolio', 'go_portfolio_textdomain' ),
$capability,
$this->plugin_slug,
array( $this, 'plugin_menu_page' ),
GW_GO_PORTFOLIO_URI . 'admin/images/icon_wp_nav.png'
);
/* Submenu page - Custom Post Types */
$this->screen_hooks[] = add_submenu_page(
$this->plugin_slug,
__( 'Custom Post Types', 'go_portfolio_textdomain' ) . ' | ' . __( 'Go Portfolio', 'go_portfolio_textdomain' ),
__( 'Custom Post Types', 'go_portfolio_textdomain' ),
$capability,
$this->plugin_slug . '-custom-post-types',
array( $this, 'plugin_submenu_page_ctps' )
);
/* Submenu page - General Settings */
$this->screen_hooks[] = add_submenu_page(
$this->plugin_slug,
__( 'General Settings', 'go_portfolio_textdomain' ) . ' | ' . __( 'Go Portfolio', 'go_portfolio_textdomain' ),
__( 'General Settings', 'go_portfolio_textdomain' ),
$capability,
$this->plugin_slug . '-settings',
array( $this, 'plugin_submenu_page_general_settings' )
);
/* Submenu page - Template & Style Editor */
$this->screen_hooks[] = add_submenu_page(
$this->plugin_slug,
__( 'Template & Style Editor', 'go_portfolio_textdomain' ) . ' | ' . __( 'Go Portfolio', 'go_portfolio_textdomain' ),
__( 'Template & Style Editor', 'go_portfolio_textdomain' ),
$capability,
$this->plugin_slug . '-editor',
array( $this, 'plugin_submenu_page_editor' )
);
/* Submenu page - Import & Export */
$this->screen_hooks[] = add_submenu_page(
$this->plugin_slug,
__( 'Import & Export', 'go_portfolio_textdomain' ) . ' | ' . __( 'Go Portfolio', 'go_portfolio_textdomain' ),
__( 'Import & Export', 'go_portfolio_textdomain' ),
$capability,
$this->plugin_slug . '-import-export',
array( $this, 'plugin_submenu_page_import_export' )
);
}
/**
* Main menu page
*/
public function plugin_menu_page() {
include_once( GW_GO_PORTFOLIO_INCLUDES. 'menu_page.php' );
}
/**
* Submenu page for Custom Post Types
*/
public function plugin_submenu_page_ctps() {
include_once( GW_GO_PORTFOLIO_INCLUDES. 'submenu_page_ctps.php' );
}
/**
* Submenu page for General settings
*/
public function plugin_submenu_page_general_settings() {
include_once( GW_GO_PORTFOLIO_INCLUDES. 'submenu_page_general_settings.php' );
}
/**
* Submenu page for Template & Style Editor
*/
public function plugin_submenu_page_editor() {
include_once( GW_GO_PORTFOLIO_INCLUDES. 'submenu_page_editor.php' );
}
/**
* Submenu page for Import & Export
*/
public function plugin_submenu_page_import_export() {
include_once( GW_GO_PORTFOLIO_INCLUDES. 'submenu_page_import_export.php' );
}
/**
* Print admin notices
*/
public function print_admin_notices() {
$new_current_notices = $current_notices = get_option( self::$plugin_prefix . '_notices', array() );
if ( $current_notices && !empty ( $current_notices ) ) {
foreach ( $current_notices as $nkey => $current_notice ) {
$output='<div class="' . ( isset( $current_notice['success'] ) && $current_notice['success'] == true ? 'updated' : 'error' ) . '">';
$output.='<p><strong>' . ( isset( $current_notice['message'] ) ? $current_notice['message'] : '' ) . '</strong></p>';
$output.='</div>';
echo $output;
if ( isset( $current_notice['permanent'] ) && $current_notice['permanent'] == false ) {
unset( $new_current_notices[$nkey] );
}
}
}
if ( $new_current_notices != $current_notices ) {
update_option ( self::$plugin_prefix . '_notices', $new_current_notices );
}
}
/**
* Update admin notices
*/
public static function update_admin_notices( $notices = array() ) {
if ( $notices && is_array( $notices ) && !empty( $notices ) ) {
$current_notices = get_option( self::$plugin_prefix . '_notices', array() );
$new_current_notices = array_merge( $notices, $current_notices );
if ( $new_current_notices != $current_notices ) {
update_option ( self::$plugin_prefix . '_notices', $new_current_notices );
}
}
}
/**
* Generate inline styles
*/
public static function generate_inline_styles( $portfolio ) {
include( GW_GO_PORTFOLIO_INCLUDES . 'generate_inline_style.php' );
}
/**
* Load templates from files
*/
public static function load_templates( $template_file=null ) {
/* Get param if set - read one certain json file or all files */
$template_file = $template_file ? $template_file : '*.json';
/* Read template files */
$directory = plugin_dir_path( __FILE__ ) . 'templates/templates/';
if ( is_dir( $directory ) ) {
$file_list = array();
$file_list = glob( $directory . $template_file );
if (!$file_list) {
if ( $dh = opendir( $directory ) ) {
while ( ( $file = readdir( $dh ) ) !== false ) {
if ( filetype( $directory . $file ) == 'file' ) {
if ( $template_file == '*.json' ) {
$fileinfo = pathinfo( $file );
if ( $fileinfo['extension'] == 'json' ) {
$file_list[] = $directory . $file;
}
} elseif ( $template_file == $file ) {
$file_list[] = $directory . $file;
}
}
}
closedir($dh);
}
}
if ( is_array( $file_list ) && !empty( $file_list ) ) {
sort( $file_list );
foreach ( $file_list as $filename ) {
$json_data = json_decode( file_get_contents( $filename ) ) ? json_decode( file_get_contents( $filename ) ) : null;
if ( $json_data ) {
$templates[$json_data->id] = array (
'name' => $json_data->name,
'description' => $json_data->name,
'json_file' => basename( $filename ),
'tpl_file' => $json_data->tpl_file
);
}
if ( file_exists( $directory . $json_data->tpl_file ) && is_file( $directory . $json_data->tpl_file ) ) {
$data = file_get_contents ( $directory . $json_data->tpl_file );
$templates[$json_data->id]['data'] = $data;
}
}
}
}
return isset( $templates ) ? $templates : null;
}
/**
* Load styles from files
*/
public static function load_styles( $style_file=null ) {
/* Get param if set - read one certain json file or all files */
$style_file = $style_file ? $style_file : '*.json';
/* Read style files */
$directory = plugin_dir_path( __FILE__ ) . 'templates/styles/';
if ( is_dir( $directory ) ) {
$file_list = array();
$file_list = glob( $directory . $style_file );
if (!$file_list) {
if ( $dh = opendir( $directory ) ) {
while ( ( $file = readdir( $dh ) ) !== false ) {
if ( filetype( $directory . $file ) == 'file' ) {
if ( $style_file == '*.json' ) {
$fileinfo = pathinfo( $file );
if ( $fileinfo['extension'] == 'json' ) {
$file_list[] = $directory . $file;
}
} elseif ( $style_file == $file ) {
$file_list[] = $directory . $file;
}
}
}
closedir($dh);
}
}
if ( is_array( $file_list ) && !empty( $file_list ) ) {
sort( $file_list );
foreach ( $file_list as $filename ) {
$json_data = json_decode( file_get_contents( $filename ) ) ? json_decode( file_get_contents( $filename ) ) : null;
if ( $json_data ) {
$styles[$json_data->id] = array (
'name' => $json_data->name,
'description' => $json_data->name,
'json_file' => basename( $filename ),
'css_file' => $json_data->css_file,
'class' => $json_data->class
);
if ( file_exists( $directory . $json_data->css_file ) && is_file( $directory . $json_data->css_file ) ) {
$data = file_get_contents ( $directory . $json_data->css_file );
$styles[$json_data->id]['data'] = $data;
};
if ( isset($json_data->effects) && is_array( $json_data->effects ) ) {
foreach ( $json_data->effects as $effect ) {
$styles[$json_data->id]['effects'][$effect->id] = $effect->name;
}
}
}
}
}
}
return isset( $styles ) ? $styles : null;
}
/**
* General AJAX callback function for users that are not logged in
*/
public function ajax_nopriv() {
die ( __( 'Oops, authorized persons only!', 'go_portfolio_textdomain' ) );
}
/**
* Reset a template or a style via AJAX
*/
public function reset_template_style() {
/* Reset a template */
$template = isset( $_GET['template'] ) ? $_GET['template'] : null;
if ( $template ) {
$templates = get_option( self::$plugin_prefix . '_templates' );
if ( isset( $templates[$template] ) ) {
print_r( $templates[$template]['data'] );
exit;
}
}
/* Reset a style */
$style = isset( $_GET['style'] ) ? $_GET['style'] : null;
if ( $style ) {
$styles = get_option( self::$plugin_prefix . '_styles' );
if ( isset( $styles[$style] ) ) {
print_r( $styles[$style]['data'] );
exit;
}
}
exit;
}
/**
* Register custom post types
*/
public function register_custom_post_types() {
/* Get custom post types from db */
$custom_post_types = get_option( self::$plugin_prefix . '_cpts' );
$cpts_hash = get_option( self::$plugin_prefix . '_cpts_hash' );
$new_cpts_hash = '';
/* Register cpts & custom taxonomy if enabled */
if ( function_exists( 'register_post_type' ) && function_exists( 'register_taxonomy' ) ) {
if ( isset( $custom_post_types ) && !empty( $custom_post_types ) ) {
foreach ( $custom_post_types as $custom_post_type ) {
$cpt_labels = array(
'name' => $custom_post_type['name'],
'singular_name' => $custom_post_type['singular_name'],
'add_new' => __( 'Add New', 'go_portfolio_textdomain' ),
'add_new_item' => sprintf( __( 'Add New %s', 'go_portfolio_textdomain' ), $custom_post_type['singular_name'] ),
'edit_item' => sprintf( __( 'Edit %s', 'go_portfolio_textdomain' ), $custom_post_type['singular_name'] ),
'new_item' => sprintf( __( 'New %s', 'go_portfolio_textdomain' ), $custom_post_type['singular_name'] ),
'all_items' => sprintf( __( 'All %s', 'go_portfolio_textdomain' ), $custom_post_type['name'] ),
'view_item' => sprintf( __( 'View %s', 'go_portfolio_textdomain' ), $custom_post_type['singular_name'] ),
'search_items' => sprintf( __( 'Search %s', 'go_portfolio_textdomain' ), $custom_post_type['name'] ),
'not_found' => sprintf( __( 'No %s found', 'go_portfolio_textdomain' ), $custom_post_type['name'] ),
'not_found_in_trash' => sprintf( __( 'No %s found in Trash', 'go_portfolio_textdomain' ), $custom_post_type['name'] ),
'parent_item_colon' => '',
'menu_name' => $custom_post_type['name']
);
$cpt_args = array(
'labels' => $cpt_labels,
'hierarchical' => false,
'public' => true,
'has_archive' => isset ( $custom_post_type['has-archive'] ) ? true : false,
'exclude_from_search' => isset ( $custom_post_type['search-exclude'] ) ? true : false,
'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields','comments','page-attributes', 'excerpt', 'revisions' ),
'menu_icon' => GW_GO_PORTFOLIO_URI . 'admin/images/icon_wp_nav.png'
);
$ctax_cat_labels = array(
'name' => sprintf( __( '%s Categories', 'go_portfolio_textdomain' ), $custom_post_type['singular_name'] ),
'singular_name' => sprintf( __( '%s Category', 'go_portfolio_textdomain' ), $custom_post_type['singular_name'] ),
'search_items' => sprintf( __( 'Search %s Categories', 'go_portfolio_textdomain' ), $custom_post_type['singular_name'] ),
'all_items' => sprintf( __( 'All %s Categories', 'go_portfolio_textdomain' ), $custom_post_type['singular_name'] ),
'parent_item' => sprintf( __( 'Parent %s Category', 'go_portfolio_textdomain' ), $custom_post_type['singular_name'] ),
'parent_item_colon' => sprintf( __( 'Parent %s Category:', 'go_portfolio_textdomain' ), $custom_post_type['singular_name'] ),
'edit_item' => sprintf( __( 'Edit %s Category', 'go_portfolio_textdomain' ), $custom_post_type['singular_name'] ),
'update_item' => sprintf( __( 'Update %s Category', 'go_portfolio_textdomain' ), $custom_post_type['singular_name'] ),
'add_new_item' => sprintf( __( 'Add New %s Category', 'go_portfolio_textdomain' ), $custom_post_type['singular_name'] ),
'new_item_name' => sprintf( __( 'New %s Category Name', 'go_portfolio_textdomain' ), $custom_post_type['singular_name'] ),
'menu_name' => sprintf( __( '%s Category', 'go_portfolio_textdomain' ), $custom_post_type['singular_name'] )
);
$ctax_cat_args = array(
'labels' => $ctax_cat_labels,
'hierarchical' => true,
'public' => true,
'query_var' => true,
'update_count_callback' => '_update_post_term_count'
);
$ctax_tag_labels = array(
'name' => sprintf( __( '%s Tags', 'go_portfolio_textdomain' ), $custom_post_type['singular_name'] ),
'singular_name' => sprintf( __( '%s Tag', 'go_portfolio_textdomain' ), $custom_post_type['singular_name'] ),
'search_items' => sprintf( __( 'Search %s Tags', 'go_portfolio_textdomain' ), $custom_post_type['singular_name'] ),
'all_items' => sprintf( __( 'All %s Tags', 'go_portfolio_textdomain' ), $custom_post_type['singular_name'] ),
'parent_item' => sprintf( __( 'Parent %s Tag', 'go_portfolio_textdomain' ), $custom_post_type['singular_name'] ),
'parent_item_colon' => sprintf( __( 'Parent %s Tag:', 'go_portfolio_textdomain' ), $custom_post_type['singular_name'] ),
'edit_item' => sprintf( __( 'Edit %s Tag', 'go_portfolio_textdomain' ), $custom_post_type['singular_name'] ),
'update_item' => sprintf( __( 'Update %s Tag', 'go_portfolio_textdomain' ), $custom_post_type['singular_name'] ),
'add_new_item' => sprintf( __( 'Add New %s Tag', 'go_portfolio_textdomain' ), $custom_post_type['singular_name'] ),
'new_item_name' => sprintf( __( 'New %s Tag Name', 'go_portfolio_textdomain' ), $custom_post_type['singular_name'] ),
'menu_name' => sprintf( __( '%s Tag', 'go_portfolio_textdomain' ), $custom_post_type['singular_name'] )
);
$ctax_tag_args = array(
'labels' => $ctax_tag_labels,
'hierarchical' => false,
'public' => true,
'query_var' => true,
'update_count_callback' => '_update_post_term_count'
);
if ( isset( $custom_post_type['enabled'] ) ) {
register_post_type( $custom_post_type['slug'], $cpt_args );
/* Register taxonomies */
if ( isset( $custom_post_type['custom-tax-cat'] ) || isset( $custom_post_type['custom-tax-tag'] ) ) {
$all_tax = get_taxonomies();
/* Check if taxonomy is already registered */
if ( isset( $all_tax ) && is_array( $all_tax ) ) {
/* Register category */
if ( isset( $custom_post_type['custom-tax-cat'] ) && !in_array( $custom_post_type['slug'] . '-cat', $all_tax ) ) {
register_taxonomy( $custom_post_type['slug'] . '-cat', array( $custom_post_type['slug'] ), $ctax_cat_args );
}
/* Register tag */
if ( isset( $custom_post_type['custom-tax-tag'] ) && !in_array( $custom_post_type['slug'] . '-tag', $all_tax ) ) {
register_taxonomy( $custom_post_type['slug'] . '-tag', array( $custom_post_type['slug'] ), $ctax_tag_args );
}
}
}
/* Register additional taxnomy for the cpt */
if ( isset( $custom_post_type['tax'] ) && !empty( $custom_post_type['tax'] ) ) {
foreach( $custom_post_type['tax'] as $add_tax ) {
register_taxonomy_for_object_type( $add_tax, $custom_post_type['slug'] );
}
}
apply_filters( 'manage_edit-'.$custom_post_type['slug'].'_columns', array ( $this, 'cpt_edit_columns' ), '' );
add_filter( 'manage_edit-'.$custom_post_type['slug'].'_columns', array ( $this, 'cpt_edit_columns' ) );
add_action( 'manage_'.$custom_post_type['slug'].'_posts_custom_column', array ( $this, 'cpt_custom_columns' ) );
}
/* Create hash from slugs */
$new_cpts_hash .= $custom_post_type['slug'];
}
/* Do flush rewrite if cpts has benn changed */
$new_cpts_hash = md5( $new_cpts_hash );
if ( !$cpts_hash || $cpts_hash != $new_cpts_hash ) {
update_option( self::$plugin_prefix . '_cpts_hash', $new_cpts_hash );
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
}
}
}
/**
* Register taxonomy for media
*/
public function register_custom_tax() {
$tax_hash = get_option( self::$plugin_prefix . '_tax_hash' );
$general_settings = get_option( self::$plugin_prefix . '_general_settings' );
if ( isset( $general_settings['enable_post_type']['attachment'] ) && function_exists( 'register_post_type' ) && function_exists( 'register_taxonomy' ) ) {
$ctax_cat_labels = array(
'name' => sprintf( __( '%s Categories', 'go_portfolio_textdomain' ), __( 'Media', 'go_portfolio_textdomain' ) ),
'singular_name' => sprintf( __( '%s Category', 'go_portfolio_textdomain' ), __( 'Media', 'go_portfolio_textdomain' ) ),
'search_items' => sprintf( __( 'Search %s Categories', 'go_portfolio_textdomain' ), __( 'Media', 'go_portfolio_textdomain' ) ),
'all_items' => sprintf( __( 'All %s Categories', 'go_portfolio_textdomain' ), __( 'Media', 'go_portfolio_textdomain' ) ),
'parent_item' => sprintf( __( 'Parent %s Category', 'go_portfolio_textdomain' ), __( 'Media', 'go_portfolio_textdomain' ) ),
'parent_item_colon' => sprintf( __( 'Parent %s Category:', 'go_portfolio_textdomain' ), __( 'Media', 'go_portfolio_textdomain' ) ),
'edit_item' => sprintf( __( 'Edit %s Category', 'go_portfolio_textdomain' ), __( 'Media', 'go_portfolio_textdomain' ) ),
'update_item' => sprintf( __( 'Update %s Category', 'go_portfolio_textdomain' ), __( 'Media', 'go_portfolio_textdomain' ) ),
'add_new_item' => sprintf( __( 'Add New %s Category', 'go_portfolio_textdomain' ), __( 'Media', 'go_portfolio_textdomain' ) ),
'new_item_name' => sprintf( __( 'New %s Category Name', 'go_portfolio_textdomain' ), __( 'Media', 'go_portfolio_textdomain' ) ),
'menu_name' => sprintf( __( '%s Category', 'go_portfolio_textdomain' ), __( 'Media', 'go_portfolio_textdomain' ) )
);
$ctax_cat_args = array(
'labels' => $ctax_cat_labels,
'hierarchical' => true,
'public' => true,
'query_var' => true,
'update_count_callback' => '_update_generic_term_count'
);
$ctax_tag_labels = array(
'name' => sprintf( __( '%s Tags', 'go_portfolio_textdomain' ), __( 'Media', 'go_portfolio_textdomain' ) ),
'singular_name' => sprintf( __( '%s Tag', 'go_portfolio_textdomain' ), __( 'Media', 'go_portfolio_textdomain' ) ),
'search_items' => sprintf( __( 'Search %s Tags', 'go_portfolio_textdomain' ), __( 'Media', 'go_portfolio_textdomain' ) ),
'all_items' => sprintf( __( 'All %s Tags', 'go_portfolio_textdomain' ), __( 'Media', 'go_portfolio_textdomain' ) ),
'parent_item' => sprintf( __( 'Parent %s Tag', 'go_portfolio_textdomain' ), __( 'Media', 'go_portfolio_textdomain' ) ),
'parent_item_colon' => sprintf( __( 'Parent %s Tag:', 'go_portfolio_textdomain' ), __( 'Media', 'go_portfolio_textdomain' ) ),
'edit_item' => sprintf( __( 'Edit %s Tag', 'go_portfolio_textdomain' ), __( 'Media', 'go_portfolio_textdomain' ) ),
'update_item' => sprintf( __( 'Update %s Tag', 'go_portfolio_textdomain' ), __( 'Media', 'go_portfolio_textdomain' ) ),
'add_new_item' => sprintf( __( 'Add New %s Tag', 'go_portfolio_textdomain' ), __( 'Media', 'go_portfolio_textdomain' ) ),
'new_item_name' => sprintf( __( 'New %s Tag Name', 'go_portfolio_textdomain' ), __( 'Media', 'go_portfolio_textdomain' ) ),
'menu_name' => sprintf( __( '%s Tag', 'go_portfolio_textdomain' ), __( 'Media', 'go_portfolio_textdomain' ) )
);
$ctax_tag_args = array(
'labels' => $ctax_tag_labels,
'hierarchical' => false,
'public' => true,
'query_var' => true,
'update_count_callback' => '_update_generic_term_count'
);
/* Check if taxonomy is already registered */
$all_tax = get_taxonomies();
if ( isset( $all_tax ) && is_array( $all_tax ) ) {
/* Register category */
if ( !in_array( 'media-cat', $all_tax ) ) {
register_taxonomy( 'media-cat', array( 'attachment' ), $ctax_cat_args );
}
/* Register tag */
if ( !in_array( 'media-tag', $all_tax ) ) {
register_taxonomy( 'media-tag', array( 'attachment' ), $ctax_tag_args );
}
}
/* Do flush rewrite if tax has benn changed */
if ( !$tax_hash ) {
update_option( self::$plugin_prefix . '_tax_hash', 'attachment' );
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
}
}
/**
* Colum header settings for custom post types
*/
public function cpt_edit_columns( $columns ) {
$columns = array(
'cb' => '<input type="checkbox" />',
'title' => __( 'Title', 'go_portfolio_textdomain' ),
'featured_image' => __( 'Featured Image', 'go_portfolio_textdomain' ),
'author' => __( 'Author', 'go_portfolio_textdomain' ),
'description' => __( 'Description', 'go_portfolio_textdomain' ),
'cat' => __( 'Categories', 'go_portfolio_textdomain' ),
'tag' => __( 'Tags', 'go_portfolio_textdomain' ),
'tax' => __( 'Other Taxonomies', 'go_portfolio_textdomain' ),
'date' => __( 'Date', 'go_portfolio_textdomain' ),
'comments' => '<div title="Comments" class="comment-grey-bubble"></div>'
);
return $columns;
}
/**
* Column settings for custom post types
*/
public function cpt_custom_columns( $column ) {
global $post;
$screen = get_current_screen();
$current_page = isset( $screen->parent_file ) ? $screen->parent_file : null;
$external_tax = array();
$taxonomies = get_object_taxonomies( $post->post_type, 'objects' );
if ( !empty( $taxonomies ) ) {
foreach( $taxonomies as $tax_key => $taxonomy ) {
/* Get categories */
if ( preg_match('/'.$post->post_type.'-cat$/', $tax_key ) ) {
$cat_terms = get_the_terms( $post->ID, $tax_key );
if ( isset( $cat_terms ) && !empty( $cat_terms ) ) {
foreach( $cat_terms as $cat_term_key => $cat_term ) {
if ( $current_page ) {
$cat_term_list[]='<a href="' . $current_page . '&' . $taxonomy->query_var . '=' . $cat_term->slug . '">' . $cat_term->name . '</a>';
};
}
}
$cat_list = isset ( $cat_term_list ) && !empty( $cat_term_list ) ? implode(', ', $cat_term_list ) : '';
}
/* Get tags */
if ( preg_match('/'.$post->post_type.'-tag$/', $tax_key ) ) {
$tag_terms = get_the_terms( $post->ID, $tax_key );
if ( isset( $tag_terms ) && !empty( $tag_terms ) ) {
foreach( $tag_terms as $tag_term_key => $tag_term ) {
if ( $current_page ) {
$tag_term_list[]='<a href="' . $current_page . '&' . $taxonomy->query_var . '=' . $tag_term->slug . '">' . $tag_term->name . '</a>';
};
}
}
$tag_list = isset ( $tag_term_list ) && !empty( $tag_term_list ) ? implode(', ', $tag_term_list ) : '';
}
if ( !preg_match('/'.$post->post_type.'-tag$/', $tax_key ) && !preg_match('/'.$post->post_type.'-cat$/', $tax_key ) ) {
$external_tax[$tax_key]=$taxonomy;
}
}
if ( isset( $external_tax ) && !empty( $external_tax ) ) {
foreach( $external_tax as $etax_key => $etax ) {
$tax_terms = get_the_terms( $post->ID, $etax_key );
if ( isset( $tax_terms ) && !empty( $tax_terms ) ) {
foreach( $tax_terms as $tax_term_key => $tax_term ) {
if ( $current_page ) {
$tax_term_list[]='<a href="' . $current_page . '&' . $etax->query_var . '=' . $tax_term->slug . '">' . $tax_term->name . '</a>';
};
}
}
$tax_list = isset ( $tax_term_list ) && !empty( $tax_term_list ) ? implode(', ', $tax_term_list ) : '';
$tax_term_list=array();
$term_list_by_tax[]=array(
'label' => $etax->labels->name,
'terms' => $tax_list
);
}
}
}
switch ( $column ) {
case 'description':
$content = $post->post_content;
$content = apply_filters( 'get_the_excerpt', '', 12 );
$content = apply_filters( 'the_content', $content );
echo $content;
break;
case 'featured_image':
echo get_the_post_thumbnail( $post->ID, array( 50, 50 ) );
break;
case 'author' :
echo get_post_meta( $post->ID , 'publisher' , true );
break;
case 'cat':
if ( !isset( $cat_list ) || empty( $cat_list ) ) {
echo '-';
} else {
echo $cat_list;
}
break;
case 'tag':
if ( !isset( $tag_list ) || empty( $tag_list ) ) {
echo '-';
} else {
echo $tag_list;
}
break;
case 'tax':
if ( !isset( $term_list_by_tax ) || empty( $term_list_by_tax ) ) {
echo '-';
} else {
foreach ( $term_list_by_tax as $term_list ) {
echo $term_list['label'].'<br>';
echo ( !empty( $term_list['terms'] ) ? $term_list['terms'] : '-' ) . '<br><br>';
}
}
break;
}
}
/**
* Create metabox
*/
public function create_meta_box() {
$post_types = array();
$custom_post_types = get_option( self::$plugin_prefix . '_cpts' );
$general_settings = get_option( self::$plugin_prefix . '_general_settings' );
$args = array(
'public' => true,
'_builtin' => false,
);
$output = 'objects';
$operator = 'and';
$all_custompost_types = get_post_types( $args, $output, $operator );
$post_type_list=array();
$custom_post_type_list=array();
/* Add plugin post types */
if ( $custom_post_types ) {
foreach ( $custom_post_types as $custom_post_type ) {
$post_type_list[] = $custom_post_type['slug'];
$custom_post_type_list[] = $custom_post_type['slug'];
}
}
/* Add other cpt is enabled */
if ( $all_custompost_types ) {
foreach ( $all_custompost_types as $all_cpt_key => $all_custompost_type ) {
if ( post_type_supports( $all_cpt_key, 'thumbnail' ) && !in_array ( $all_cpt_key, $custom_post_type_list ) && isset( $general_settings['enable_post_type'][$all_cpt_key] ) ) {
$post_type_list[] = $all_cpt_key;
}
}
}
/* Add regular blog post if enabled */
if ( isset( $general_settings['enable_post_type']['post'] ) ) { $post_type_list[] = 'post'; }
if ( isset( $general_settings['enable_post_type']['attachment'] ) ) { $post_type_list[] = 'attachment'; }
if ( isset( $general_settings['enable_post_type']['page'] ) ) { $post_type_list[] = 'page'; }
/* Create meta box fields */
$meta_box_fields = array(
/* Thumbnail options */
array(
'name' => __( 'Thumbnail type', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_thumb_type',
'type' => 'select',
'desc' => __( 'Select thumbnail type.', 'go_portfolio_textdomain' ),
'options' => array(
array( 'name' => __( 'Image', 'go_portfolio_textdomain' ), 'value' => 'image', 'data-children'=> 'image' ),
array( 'name' => __( 'Video', 'go_portfolio_textdomain' ), 'value' => 'video', 'data-children'=> 'video' ),
array( 'name' => __( 'Audio', 'go_portfolio_textdomain' ), 'value' => 'audio', 'data-children'=> 'audio' ),
),
'class' => 'regular-text',
'data-parent' => 'thumbnail-type'
),
/* Image Thumbnail */
array(
'name' => __( 'Thumbnail image', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_thumb_img_src',
'default' => '',
'desc' => __( 'Source of the Thumbnail image if you would like to set different image from the thumbnail image.', 'go_portfolio_textdomain' ),
'type' => 'img-upload',
'class' => '',
'wrapper-data-parent' => 'thumbnail-type',
'wrapper-data-children' => 'image'
),
array(
'name' => __( 'Video thumbnail type', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_thumb_video_type',
'type' => 'select',
'desc' => __( 'Select video type.', 'go_portfolio_textdomain' ),
'options' => array(
array( 'name' => __( 'Youtube video', 'go_portfolio_textdomain' ), 'value' => 'youtube_video', 'data-children'=> 'youtube-video' ),
array( 'name' => __( 'Vimeo video', 'go_portfolio_textdomain' ), 'value' => 'vimeo_video', 'data-children'=> 'vimeo-video' ),
array( 'name' => __( 'Screenr video', 'go_portfolio_textdomain' ), 'value' => 'screenr_video', 'data-children'=> 'screenr-video' ),
array( 'name' => __( 'Dailymotion video', 'go_portfolio_textdomain' ), 'value' => 'dailymotion_video', 'data-children'=> 'dailymotion-video' ),
array( 'name' => __( 'Metacafe video', 'go_portfolio_textdomain' ), 'value' => 'metacafe_video', 'data-children'=> 'metacafe-video' )
),
'class' => 'regular-text',
'data-parent' => 'thumbnail-video-type',
'wrapper-data-parent' => 'thumbnail-type',
'wrapper-data-children' => 'video'
),
/* Audio thumbail */
array(
'name' => __( 'Audio thumbnail type', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_thumb_audio_type',
'type' => 'select',
'desc' => __( 'Select audio type.', 'go_portfolio_textdomain' ),
'options' => array(
array( 'name' => __( 'Soundcloud audio', 'go_portfolio_textdomain' ), 'value' => 'soundcloud_audio', 'data-children'=> 'soundcloud-audio' ),
array( 'name' => __( 'Mixcloud audio', 'go_portfolio_textdomain' ), 'value' => 'mixcloud_audio', 'data-children'=> 'mixcloud-audio' ),
array( 'name' => __( 'Beatport audio', 'go_portfolio_textdomain' ), 'value' => 'beatport_audio', 'data-children'=> 'beatport-audio' ),
),
'class' => 'regular-text',
'data-parent' => 'thumbnail-audio-type',
'wrapper-data-parent' => 'thumbnail-type thumbnail-type',
'wrapper-data-children' => 'audio'
),
/* Youtube video thumbnail */
array(
'name' => __( 'Youtube video ID', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_thumbnail_youtube_video_id',
'default' => '',
'desc' => __( 'ID of the video.', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'regular-text',
'wrapper-data-parent' => 'thumbnail-type thumbnail-video-type',
'wrapper-data-children' => 'youtube-video'
),
array(
'name' => __( 'Height', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_thumbnail_youtube_video_h',
'default' => '',
'desc' => __( 'Height of the video (optional).', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'regular-text',
'wrapper-data-parent' => 'thumbnail-type thumbnail-video-type',
'wrapper-data-children' => 'youtube-video'
),
/* Vimeo video thumbnail */
array(
'name' => __( 'Vimeo video ID', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_thumbnail_vimeo_video_id',
'default' => '',
'desc' => __( 'ID of the video.', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'regular-text',
'wrapper-data-parent' => 'thumbnail-type thumbnail-video-type',
'wrapper-data-children' => 'vimeo-video'
),
array(
'name' => __( 'Height', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_thumbnail_vimeo_video_h',
'default' => '',
'desc' => __( 'Height of the video (optional).', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'regular-text',
'wrapper-data-parent' => 'thumbnail-type thumbnail-video-type',
'wrapper-data-children' => 'vimeo-video'
),
array(
'name' => __( 'Color', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_thumbnail_vimeo_video_c',
'default' => '',
'desc' => __( 'Vimeo control colors (if the video allows).', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'small-text',
'wrapper-data-parent' => 'thumbnail-type thumbnail-video-type',
'wrapper-data-children' => 'vimeo-video'
),
/* Screenr video thumbnail */
array(
'name' => __( 'Screenr video ID', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_thumbnail_screenr_video_id',
'default' => '',
'desc' => __( 'ID of the video.', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'regular-text',
'wrapper-data-parent' => 'thumbnail-type thumbnail-video-type',
'wrapper-data-children' => 'screenr-video'
),
array(
'name' => __( 'Height', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_thumbnail_screenr_video_h',
'default' => '',
'desc' => __( 'Height of the video (optional).', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'regular-text',
'wrapper-data-parent' => 'thumbnail-type thumbnail-video-type',
'wrapper-data-children' => 'screenr-video'
),
/* Dailymotion video thumbnail */
array(
'name' => __( 'Dailymotion video ID', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_thumbnail_dailymotion_video_id',
'default' => '',
'desc' => __( 'ID of the video.', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'regular-text',
'wrapper-data-parent' => 'thumbnail-type thumbnail-video-type',
'wrapper-data-children' => 'dailymotion-video'
),
array(
'name' => __( 'Height', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_thumbnail_dailymotion_video_h',
'default' => '',
'desc' => __( 'Height of the video (optional).', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'regular-text',
'wrapper-data-parent' => 'thumbnail-type thumbnail-video-type',
'wrapper-data-children' => 'dailymotion-video'
),
/* Metacafe video thumbnail */
array(
'name' => __( 'Metacafe video ID', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_thumbnail_metacafe_video_id',
'default' => '',
'desc' => __( 'ID of the video.', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'regular-text',
'wrapper-data-parent' => 'thumbnail-type thumbnail-video-type',
'wrapper-data-children' => 'metacafe-video'
),
array(
'name' => __( 'Height', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_thumbnail_metacafe_video_h',
'default' => '',
'desc' => __( 'Height of the video (optional).', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'regular-text',
'wrapper-data-parent' => 'thumbnail-type thumbnail-video-type',
'wrapper-data-children' => 'metacafe-video'
),
/* Soundcloud audio thumbnail */
array(
'name' => __( 'Soundcloud track ID', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_thumbnail_soundcloud_audio_id',
'default' => '',
'desc' => __( 'Track ID of the audio.', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'regular-text',
'wrapper-data-parent' => 'thumbnail-type thumbnail-type thumbnail-audio-type',
'wrapper-data-children' => 'soundcloud-audio'
),
array(
'name' => __( 'Height', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_thumbnail_soundcloud_audio_h',
'default' => '',
'desc' => __( 'Height of the audio (optional).', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'regular-text',
'wrapper-data-parent' => 'thumbnail-type thumbnail-audio-type',
'wrapper-data-children' => 'soundcloud-audio'
),
array(
'name' => __( 'Color', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_thumbnail_soundcloud_audio_c',
'default' => '',
'desc' => __( 'Color of the player.', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'small-text',
'wrapper-data-parent' => 'thumbnail-type thumbnail-type thumbnail-audio-type',
'wrapper-data-children' => 'soundcloud-audio'
),
/* Mixcloud audio lightbox */
array(
'name' => __( 'Mixcloud track URL', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_thumbnail_mixcloud_audio_id',
'default' => '',
'desc' => __( 'URL of the audio.', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'regular-text',
'wrapper-data-parent' => 'thumbnail-type thumbnail-type thumbnail-audio-type',
'wrapper-data-children' => 'mixcloud-audio'
),
array(
'name' => __( 'Height', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_thumbnail_mixcloud_audio_h',
'default' => '',
'desc' => __( 'Height of the audio (optional).', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'regular-text',
'wrapper-data-parent' => 'thumbnail-type thumbnail-audio-type',
'wrapper-data-children' => 'mixcloud-audio'
),
array(
'name' => __( 'Color', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_thumbnail_mixcloud_audio_c',
'default' => '',
'desc' => __( 'Color of the player.', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'small-text',
'wrapper-data-parent' => 'thumbnail-type thumbnail-type thumbnail-audio-type',
'wrapper-data-children' => 'mixcloud-audio'
),
/* Beatport audio thumbnail */
array(
'name' => __( 'Beatport track ID', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_thumbnail_beatport_audio_id',
'default' => '',
'desc' => __( 'Track ID of the audio.', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'regular-text',
'wrapper-data-parent' => 'thumbnail-type thumbnail-type thumbnail-audio-type',
'wrapper-data-children' => 'beatport-audio'
),
array(
'name' => __( 'Height', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_thumbnail_beatport_audio_h',
'default' => '',
'desc' => __( 'Height of the audio (optional).', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'regular-text',
'wrapper-data-parent' => 'thumbnail-type thumbnail-audio-type',
'wrapper-data-children' => 'beatport-audio'
),
/* Lightbox options */
array(
'name' => __( 'Hide overlay?', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_hide_overlay',
'desc' => __( 'Whether to hide overlay.', 'go_portfolio_textdomain' ),
'type' => 'checkbox',
'wrapper-data-parent' => 'thumbnail-type',
'wrapper-data-children' => 'image'
),
array(
'name' => __( 'Lighbox type', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_lighbox_type',
'type' => 'select',
'desc' => __( 'Select lighbox type.', 'go_portfolio_textdomain' ),
'options' => array(
array( 'name' => __( 'Image', 'go_portfolio_textdomain' ), 'value' => 'image', 'data-children'=> 'image_lb' ),
array( 'name' => __( 'Video', 'go_portfolio_textdomain' ), 'value' => 'video', 'data-children'=> 'video_lb' ),
array( 'name' => __( 'Audio', 'go_portfolio_textdomain' ), 'value' => 'audio', 'data-children'=> 'audio_lb' ),
array( 'name' => __( 'Other', 'go_portfolio_textdomain' ), 'value' => 'other', 'data-children'=> 'other_lb' ),
),
'class' => 'regular-text',
'data-parent' => 'lightbox-type',
'wrapper-data-parent' => 'thumbnail-type',
'wrapper-data-children' => 'image'
),
/* Image lighbox */
array(
'name' => __( 'Lightbox image', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_lightbox_img_src',
'default' => '',
'desc' => __( 'Source of the lightbox image if you would like to set different image from the thumbnail image.', 'go_portfolio_textdomain' ),
'type' => 'img-upload',
'class' => '',
'wrapper-data-parent' => 'lightbox-type',
'wrapper-data-children' => 'image_lb'
),
/* Video lighbox */
array(
'name' => __( 'Video lightbox type', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_lightbox_video_type',
'type' => 'select',
'desc' => __( 'Select video type.', 'go_portfolio_textdomain' ),
'options' => array(
array( 'name' => __( 'Youtube video', 'go_portfolio_textdomain' ), 'value' => 'youtube_video', 'data-children'=> 'youtube-video' ),
array( 'name' => __( 'Vimeo video', 'go_portfolio_textdomain' ), 'value' => 'vimeo_video', 'data-children'=> 'vimeo-video' ),
array( 'name' => __( 'Screenr video', 'go_portfolio_textdomain' ), 'value' => 'screenr_video', 'data-children'=> 'screenr-video' ),
array( 'name' => __( 'Dailymotion video', 'go_portfolio_textdomain' ), 'value' => 'dailymotion_video', 'data-children'=> 'dailymotion-video' ),
array( 'name' => __( 'Metacafe video', 'go_portfolio_textdomain' ), 'value' => 'metacafe_video', 'data-children'=> 'metacafe-video' )
),
'class' => 'regular-text',
'data-parent' => 'lightbox-video-type',
'wrapper-data-parent' => 'thumbnail-type lightbox-type',
'wrapper-data-children' => 'video_lb'
),
/* Audio lighbox */
array(
'name' => __( 'Audio lightbox type', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_lightbox_audio_type',
'type' => 'select',
'desc' => __( 'Select audio type.', 'go_portfolio_textdomain' ),
'options' => array(
array( 'name' => __( 'Soundcloud audio', 'go_portfolio_textdomain' ), 'value' => 'soundcloud_audio', 'data-children'=> 'soundcloud-audio' ),
array( 'name' => __( 'Mixcloud audio', 'go_portfolio_textdomain' ), 'value' => 'mixcloud_audio', 'data-children'=> 'mixcloud-audio' ),
array( 'name' => __( 'Beatport audio', 'go_portfolio_textdomain' ), 'value' => 'beatport_audio', 'data-children'=> 'beatport-audio' ),
),
'class' => 'regular-text',
'data-parent' => 'lightbox-audio-type',
'wrapper-data-parent' => 'thumbnail-type lightbox-type',
'wrapper-data-children' => 'audio_lb'
),
/* Youtube video lightbox */
array(
'name' => __( 'Youtube video ID', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_lightbox_youtube_video_id',
'default' => '',
'desc' => __( 'ID of the video.', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'regular-text',
'wrapper-data-parent' => 'thumbnail-type lightbox-type lightbox-video-type',
'wrapper-data-children' => 'youtube-video'
),
/* Vimeo video lightbox */
array(
'name' => __( 'Vimeo video ID', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_lightbox_vimeo_video_id',
'default' => '',
'desc' => __( 'ID of the video.', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'regular-text',
'wrapper-data-parent' => 'thumbnail-type lightbox-type lightbox-video-type',
'wrapper-data-children' => 'vimeo-video'
),
array(
'name' => __( 'Color', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_lightbox_vimeo_video_c',
'default' => '',
'desc' => __( 'Vimeo control colors (if the video allows).', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'small-text',
'wrapper-data-parent' => 'thumbnail-type lightbox-type lightbox-video-type',
'wrapper-data-children' => 'vimeo-video'
),
/* Screenr video lightbox */
array(
'name' => __( 'Screenr video ID', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_lightbox_screenr_video_id',
'default' => '',
'desc' => __( 'ID of the video.', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'regular-text',
'wrapper-data-parent' => 'thumbnail-type lightbox-type lightbox-video-type',
'wrapper-data-children' => 'screenr-video'
),
/* Dailymotion video lightbox */
array(
'name' => __( 'Dailymotion video ID', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_lightbox_dailymotion_video_id',
'default' => '',
'desc' => __( 'ID of the video.', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'regular-text',
'wrapper-data-parent' => 'thumbnail-type lightbox-type lightbox-video-type',
'wrapper-data-children' => 'dailymotion-video'
),
/* Metacafe video lightbox */
array(
'name' => __( 'Metacafe video ID', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_lightbox_metacafe_video_id',
'default' => '',
'desc' => __( 'ID of the video.', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'regular-text',
'wrapper-data-parent' => 'thumbnail-type lightbox-type lightbox-video-type',
'wrapper-data-children' => 'metacafe-video'
),
/* Soundcloud audio lightbox */
array(
'name' => __( 'Soundcloud track ID', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_lightbox_soundcloud_audio_id',
'default' => '',
'desc' => __( 'Track ID of the audio.', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'regular-text',
'wrapper-data-parent' => 'thumbnail-type lightbox-type lightbox-audio-type',
'wrapper-data-children' => 'soundcloud-audio'
),
array(
'name' => __( 'Color', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_lightbox_soundcloud_audio_c',
'default' => '',
'desc' => __( 'Color of the player.', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'small-text',
'wrapper-data-parent' => 'thumbnail-type lightbox-type lightbox-audio-type',
'wrapper-data-children' => 'soundcloud-audio'
),
/* Mixcloud audio lightbox */
array(
'name' => __( 'Mixcloud track URL', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_lightbox_mixcloud_audio_id',
'default' => '',
'desc' => __( 'URL of the audio.', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'regular-text',
'wrapper-data-parent' => 'thumbnail-type lightbox-type lightbox-audio-type',
'wrapper-data-children' => 'mixcloud-audio'
),
array(
'name' => __( 'Color', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_lightbox_mixcloud_audio_c',
'default' => '',
'desc' => __( 'Color of the player.', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'small-text',
'wrapper-data-parent' => 'thumbnail-type lightbox-type lightbox-audio-type',
'wrapper-data-children' => 'mixcloud-audio'
),
/* Beatport audio lightbox */
array(
'name' => __( 'Beatport track ID', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_lightbox_beatport_audio_id',
'default' => '',
'desc' => __( 'Track ID of the audio.', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'regular-text',
'wrapper-data-parent' => 'thumbnail-type lightbox-type lightbox-audio-type',
'wrapper-data-children' => 'beatport-audio'
),
/* Other lighbox */
array(
'name' => __( 'Other lightbox type', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_lightbox_other_type',
'type' => 'select',
'desc' => __( 'Select type.', 'go_portfolio_textdomain' ),
'options' => array(
array( 'name' => __( 'Custom iframe', 'go_portfolio_textdomain' ), 'value' => 'custom_iframe', 'data-children'=> 'custom-iframe' )
),
'class' => 'regular-text',
'data-parent' => 'lightbox-iframe-type',
'wrapper-data-parent' => 'thumbnail-type lightbox-type',
'wrapper-data-children' => 'other_lb'
),
/* Custom iframe lightbox */
array(
'name' => __( 'URL', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_lightbox_iframe_url',
'default' => '',
'desc' => __( 'Site URL.', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'regular-text',
'wrapper-data-parent' => 'thumbnail-type lightbox-type lightbox-iframe-type',
'wrapper-data-children' => 'custom-iframe'
),
array(
'name' => __( 'Height', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_lightbox_iframe_h',
'default' => '',
'desc' => __( 'Iframe height (optional).', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'small-text',
'wrapper-data-parent' => 'thumbnail-type lightbox-type lightbox-iframe-type',
'wrapper-data-children' => 'custom-iframe'
),
/* Lightbox button options */
array(
'name' => __( 'Hide lightbox button on overlay?', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_hide_lightbox_button',
'desc' => __( 'Whether to hide the lightbox button or circle on overlay.', 'go_portfolio_textdomain' ),
'type' => 'checkbox',
'wrapper-data-parent' => 'thumbnail-type',
'wrapper-data-children' => 'image'
),
array(
'name' => __( 'Hide read more button on overlay?', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_hide_link_button',
'desc' => __( 'Whether to hide the read more button or circle on overlay.', 'go_portfolio_textdomain' ),
'type' => 'checkbox',
'wrapper-data-parent' => 'thumbnail-type',
'wrapper-data-children' => 'image'
),
array(
'name' => __( 'Custom post link', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_post_link',
'default' => '',
'desc' => __( 'Whether to replace the default links which redirect to the post.', 'go_portfolio_textdomain' ),
'type' => 'text',
'class' => 'regular-text'
),
array(
'name' => __( 'Open link in new window?', 'go_portfolio_textdomain' ),
'id' => self::$plugin_prefix . '_post_link_target',
'desc' => __( 'Whether to open the link in new window.', 'go_portfolio_textdomain' ),
'type' => 'checkbox'
),
);
/* Add new metaboxes */
$add_nex_meta_boxes = new GW_Meta_Box( self::$plugin_prefix . '_options', __( 'Go Portfolio Options', 'go_portfolio_textdomain' ), $meta_box_fields, $post_type_list );
}
/**
* Post meta shortcode function
*/
public function go_portfolio_meta_shortcode( $atts, $content = null ) {
extract( shortcode_atts( array(
'key' => null,
'post_id' => null
), $atts ) );
$post_meta = get_post_meta( $post_id, '' );
$shortcode_content = isset( $post_meta[$key][0] ) && !empty( $post_meta[$key][0] ) ? $post_meta[$key][0] : '';
$shortcode_content = apply_filters( 'go_portfolio_meta_filter', $shortcode_content, $key, $post_id );
return $shortcode_content;
}
/**
* List post terms shortcode function
*/
public function go_portfolio_list_terms_shortcode( $atts, $content = null ) {
extract( shortcode_atts( array(
'taxonomy' => null,
'orderby' => 'name',
'order' => 'ASC',
'separator' => ', ',
'post_id' => null
), $atts ) );
$shortcode_content = '';
if ( $taxonomy && $post_id ) {
$post_terms = wp_get_post_terms( $post_id, $taxonomy,
array(
'orderby' => $orderby,
'order' => $order
)
);
};
if ( !is_wp_error($post_terms) && isset( $post_terms ) && !empty( $post_terms ) ) {
foreach ( $post_terms as $post_term ) {
$shortcode_content .= '<span data-id="' . $post_term->term_id . '" data-slug="' . $post_term->slug . '">' . $post_term->name . '</span>' . $separator;
}
}
$shortcode_content = trim( $shortcode_content, $separator );
$shortcode_content = apply_filters( 'go_portfolio_list_terms_sc_filter', $shortcode_content, $key, $post_id );
return $shortcode_content;
}
/**
* Load portfolio via ajax
*/
public function ajax_load_portfolio() {
if ( !isset( $_POST ) ) {
die ( __( 'Oops, authorized persons only!', 'go_portfolio_textdomain' ) );
} else {
$taxonomy = isset( $_POST['taxonomy'] ) ? $_POST['taxonomy'] : '';
$term_slug = isset( $_POST['term_slug'] ) ? $_POST['term_slug'] : '';
$post_per_page = isset( $_POST['post_per_page'] ) ? $_POST['post_per_page'] : 0;
$portfolio_id = isset( $_POST['portfolio_id'] ) ? $_POST['portfolio_id'] : 0;
$current_page = isset( $_POST['current_page'] ) ? floatval( $_POST['current_page'] ) : 0;
/* should be 0 */
$current_page = 0;
$portfolio_id = isset( $_POST['portfolio_id'] ) ? $_POST['portfolio_id'] : 0;
$exclude_ids = $loaded_ids = isset( $_POST['loaded_ids'] ) ? explode( ',', $_POST['loaded_ids'] ) : array();
$current_id = isset( $_POST['current_id'] ) ? floatval( $_POST['current_id'] ) : null;
if ($current_id) {
$post = get_post($current_id);
if ( isset( $post->ID ) && !empty( $post->ID ) ) {
$exclude_ids[]=$post->ID;
}
}
}
if ( $portfolio_id ) {
echo do_shortcode('[go_portfolio id="' . esc_attr( $portfolio_id ) . '" post_per_page="' . esc_attr( $post_per_page ) . '" taxonomy="' . esc_attr( $taxonomy ) . '" term_slug="' . esc_attr( $term_slug ) . '" current_page="' . esc_attr( $current_page ) . '" exclude_posts="' . esc_attr( isset( $loaded_ids ) && !empty( $loaded_ids ) ? implode( ',',$exclude_ids ) : '' ) . '"]');
}
exit;
}
/**
* Portfolio shortcode function
*/
public function go_portfolio_shortcode( $atts, $content = null ) {
extract( shortcode_atts( array(
'id' => null,
'margin_top' => '0',
'margin_bottom' => '0',
'current_page' => '1',
'exclude_posts' => '',
'taxonomy' => '',
'term_slug' => '',
'post_per_page' => null
), $atts ) );
$shortcode_content = null;
/* Check the id */
if ( !isset( $id ) ) {
/* If id is missing */
return '<p>' . __( 'You must set a portfolio id.', 'go_portfolio_textdomain' ) . '</p>';
} else {
/* If id is ok */
$id = sanitize_key( $id );
/* Get data from db */
$portfolios = get_option( self::$plugin_prefix . '_portfolios' );
$custom_post_types = get_option( self::$plugin_prefix . '_cpts' );
$templates = get_option( self::$plugin_prefix . '_templates' );
$styles = get_option( self::$plugin_prefix . '_styles' );
$css_style = '';
/* Check if portfolio exists and really registered */
if ( !empty( $portfolios ) ) {
foreach ( $portfolios as $portfolio_key => $portfolio ) {
/* Check if given id exist in plugin db */
if ( $portfolio['id'] == $id ) {
global $post;
$general_settings = get_option( self::$plugin_prefix . '_general_settings' );
if ( !empty( $general_settings['plugin-pages-rule'] ) && $general_settings['plugin-pages'] && !empty( $post ) ) {
$page_ids = $general_settings['plugin-pages'];
if ( !empty( $page_ids ) ) {
$pages = trim( preg_replace( '/([^0-9][^,]{0})+/', ',', $page_ids ), ',' );
$pages = explode( ',', $pages );
if ( $general_settings['plugin-pages-rule'] == 'in' && in_array( $post->ID, $pages ) || $general_settings['plugin-pages-rule'] == 'not_in' && !in_array( $post->ID, $pages ) ) {
ob_start();
echo '<style>';
self::generate_inline_styles( $portfolio );
echo '</style>';
$css_style = ob_get_clean();
}
}
} else {
ob_start();
echo '<style>';
self::generate_inline_styles( $portfolio );
echo '</style>';
$css_style = ob_get_clean();
}
/* Check if post type is registered */
$post_types = get_post_types( '', 'objects' );
if ( isset( $post_types[$portfolio['post-type']] ) ) {
$query_post_type = $portfolio['post-type'];
global $wp_query, $post;
$new_wp_query = null;
$new_wp_query = new WP_Query();
/* Set query post type */
$arg_post_type = isset( $portfolio['post-type'] ) && !empty( $portfolio['post-type'] ) ? $portfolio['post-type'] : 'post';
/* Set query taxonomy & terms */
$arg_tax = isset ( $portfolio['post-tax'][$arg_post_type] ) && !empty( $portfolio['post-tax'][$arg_post_type] ) ? $portfolio['post-tax'][$arg_post_type] : array();
$arg_terms = isset( $portfolio['post-term'][$arg_post_type][$arg_tax] ) && !empty( $portfolio['post-term'][$arg_post_type][$arg_tax] ) && !in_array( 'all', $portfolio['post-term'][$arg_post_type][$arg_tax] ) ? $portfolio['post-term'][$arg_post_type][$arg_tax] : array();
/* Set filter tax */
$filter_tax = isset ( $portfolio['filter-tax'][$arg_post_type] ) && !empty( $portfolio['filter-tax'][$arg_post_type] ) ? $portfolio['filter-tax'][$arg_post_type] : array();
/* For backward compatibility */
$filter_tax = empty( $filter_tax ) ? $arg_tax : $filter_tax;
$all_post_term_list = array();
/* Get current page info */
$current_page = floatval( isset( $current_page ) && !empty( $current_page ) ? $current_page : 1 );
/* Set query args */
$new_wp_query_args = array (
'post_type' => $portfolio['post-type'],
'posts_per_page' => isset( $portfolio['post-count'] ) && !empty( $portfolio['post-count'] ) ? $portfolio['post-count'] : '-1',
'cache_results' => false,
'post_status' => $arg_post_type == 'attachment' ? 'inherit' : 'publish',
'ignore_sticky_posts' => true,
'paged' => $current_page
);
/* post per page override */
if ( isset( $post_per_page ) && !empty( $post_per_page ) ) {
$new_wp_query_args['posts_per_page'] = $post_per_page;
}
/* Modify query args - exclude posts */
if ( isset( $exclude_posts ) && !empty( $exclude_posts ) ) {
$excluded_posts = explode(',', trim( $exclude_posts ) );
foreach( $excluded_posts as $key => $excluded_post ) {
$excluded_post = trim( floatval( $excluded_post ) );
if (!get_post( $excluded_post ) ) {
unset( $excluded_posts[$key] );
}
}
if ( isset( $portfolio['exclude-current'] ) ) { $excluded_posts[] = $post->ID; }
$new_wp_query_args['post__not_in'] = $excluded_posts;
} else {
if ( isset( $portfolio['exclude-current'] ) ) {
$new_wp_query_args['post__not_in'][] = $post->ID;
}
}
if ( isset( $new_wp_query_args['post__not_in'] ) && !empty( $new_wp_query_args['post__not_in'] ) ) {
$new_wp_query_args['post__not_in'] = array_unique( $new_wp_query_args['post__not_in'] );
}
/* Gallery visual builder mode */
if ( $arg_post_type == 'attachment' && isset( $portfolio['gallery-query-method'] ) && !empty( $portfolio['gallery-query-method'] ) && $portfolio['gallery-query-method'] == 'visual' ) {
if ( isset( $portfolio['inquery-items']['attachment'] ) && !empty( $portfolio['inquery-items']['attachment'] ) ) {
foreach ( $portfolio['inquery-items']['attachment'] as $portfolio_item_key => $portfolio_item ) {
$items[] = $portfolio_item_key;
}
$new_wp_query_args['post__in'] = $items;
if ( isset( $excluded_posts ) && isset( $items ) ) {
$new_items = array_diff( $items,$excluded_posts );
$new_wp_query_args['post__in'] = $new_items;
}
if ( !isset( $portfolio['orderby-vb'] ) || !isset( $portfolio['order-vb'] ) ) {
$new_wp_query_args['orderby'] = 'post__in';
} else {
$new_wp_query_args['orderby'] = $portfolio['orderby-vb'];
$new_wp_query_args['order'] = $portfolio['order-vb'];
if ( $portfolio['orderby-vb'] == 'post__in' && $portfolio['order-vb'] == 'DESC' ) $new_wp_query_args['post__in'] = array_reverse( $items);
}
}
}
/* Manual query mode */
if ( $arg_post_type != 'attachment' || $arg_post_type == 'attachment' && isset( $portfolio['gallery-query-method'] ) && !empty( $portfolio['gallery-query-method'] ) && $portfolio['gallery-query-method'] == 'manual' ) {
/* Modify query args - order */
$new_wp_query_args['orderby'] = $portfolio['orderby'];
$new_wp_query_args['order'] = $portfolio['order'];
/* Modify query args - taxnomy */
if ( isset( $arg_tax ) && !empty( $arg_tax ) && isset( $arg_terms ) && !empty( $arg_terms ) ) {
/* WPML tax term fix */
if( function_exists( 'icl_object_id' ) ) {
foreach( $arg_terms as $arg_term ) {
$arg_terms_translated[] = icl_object_id ( $arg_term, $arg_tax, true, ICL_LANGUAGE_CODE );
}
if ( isset( $arg_terms_translated ) && !empty( $arg_terms_translated ) ) { $arg_terms = $arg_terms_translated; }
}
$new_wp_query_args['tax_query'] = array(
array(
'taxonomy' => $arg_tax,
'field' => 'id',
'terms' => $arg_terms
)
);
}
}
if ( !empty( $taxonomy ) && !empty( $term_slug ) ) {
$new_wp_query_args['tax_query'] = array(
array(
'taxonomy' => $taxonomy,
'field' => 'slug',
'terms' => $term_slug
)
);
}
$new_wp_query_args = apply_filters( 'go_portfolio_query_filter', $new_wp_query_args, $portfolio['id'] );
$new_wp_query -> query( $new_wp_query_args );
$posts_count = $new_wp_query->found_posts;
$pages_count = $new_wp_query->max_num_pages;
$post_per_page = $new_wp_query->query['posts_per_page'];
/* Get template */
if ( isset( $portfolio['template'] ) && !empty( $portfolio['template'] ) ) {
$template_type = $portfolio['template'];
if ( isset( $portfolio['template-data'] ) && !empty( $portfolio['template-data'] ) ) {
$template = stripslashes( $portfolio['template-data'] );
} else {
$template = stripslashes( $templates[$portfolio['template']]['data'] );
}
} else {
return '<p>' . __( 'The template is missing.', 'go_portfolio_textdomain' ) . '</p>';
}
/* Set portfolio classes */
$layout_type = isset( $portfolio['layout-type'] ) && !empty( $portfolio['layout-type'] ) ? $portfolio['layout-type'] : 'grid';
/* 1. Slider layout */
if ( $layout_type == 'slider' ) {
$slider_data['auto']['play'] = isset( $portfolio['slider-autoplay'] ) && !empty( $portfolio['slider-autoplay'] ) ? true : false;
$slider_data['auto']['timeoutDuration'] = isset( $portfolio['slider-autoplay-timeout'] ) && !empty( $portfolio['slider-autoplay-timeout'] ) ? floatval( $portfolio['slider-autoplay-timeout'] ) : null;
$slider_data['auto']['pauseOnHover'] = true;
$slider_data['circular'] = isset( $portfolio['slider-infinite'] ) && !empty( $portfolio['slider-infinite'] ) ? true : false;
$slider_data['infinite'] = isset( $portfolio['slider-infinite'] ) && !empty( $portfolio['slider-infinite'] ) ? true : false;
$slider_data['direction'] = isset( $portfolio['slider-autoplay-direction'] ) && $portfolio['slider-autoplay-direction'] == 'right' ? 'right' : 'left';
$post_classes[] = 'gw-gopf-slider-type';
}
/* 2. Grid layout */
if ( $layout_type == 'grid' ) { $post_classes[] = 'gw-gopf-grid-type'; }
if ( isset( $portfolio['layout-direction'] ) && !empty( $portfolio['layout-direction'] ) ) { $post_classes[] = $portfolio['layout-direction']; }
if ( isset( $portfolio['column-layout'] ) && !empty( $portfolio['column-layout'] ) ) { $post_classes[]=$portfolio['column-layout']; }
if ( isset( $portfolio['style'] ) && !empty( $portfolio['style'] ) ) { $post_classes[]=$styles[$portfolio['style']]['class']; }
if ( isset( $portfolio['style'] ) && !empty( $portfolio['style'] ) && isset( $portfolio['effect-data'] ) && !empty( $portfolio['effect-data'] ) ) { $post_classes[]=$styles[$portfolio['style']]['class'] . '-' . $portfolio['effect-data']; }
$post_classes[] = isset( $portfolio['filter-type'] ) && $portfolio['filter-type'] == 'opacity' ? 'gw-gopf-filter-opacity' : '';
$post_classes[] = isset( $portfolio['pagination'] ) ? 'gw-gopf-pagination' : '';;
if ( !isset( $portfolio['filter-v-pos'] ) || ( isset( $portfolio['filter-v-pos'] ) && $portfolio['filter-v-pos'] == 'top') ) {
ob_start();
}
?>
<div id="<?php echo esc_attr( self::$plugin_prefix . '_' . $portfolio['id'] ); ?>" style="<?php echo esc_attr( ( isset( $margin_top ) ? 'margin-top:' . $margin_top . ';' : '' ) . ( isset( $margin_bottom ) ? 'margin-bottom:' . $margin_bottom . ';' : '' ) ); ?>">
<div class="gw-gopf gw-gopf-no-trans <?php echo esc_attr( implode( ' ', $post_classes ) ); ?>" data-url="<?php echo admin_url('admin-ajax.php'); ?>" data-id="<?php echo esc_attr( $portfolio_key ); ?>" data-cols="<?php echo isset( $portfolio['column-layout'] ) && !empty( $portfolio['column-layout'] ) ? floatval( str_replace( 'gw-gopf-', '', $portfolio['column-layout'] ) ) : 1; ?>" data-rowspace="<?php echo isset( $portfolio['v-space'] ) && !empty( $portfolio['v-space'] ) ? floatval( $portfolio['v-space'] ) : 0; ?>" data-rtl="<?php echo isset( $portfolio['layout-direction'] ) && $portfolio['layout-direction'] == 'gw-gopf-rtl' ? 'true' : 'false'; ?>" data-transenabled="<?php echo esc_attr( isset( $portfolio['trans-enabled'] ) ? 'true' : 'false' ); ?>" data-lbenabled="<?php echo esc_attr( !isset( $portfolio['disable-lightbox'] ) ? 'true' : 'false' ); ?>" data-lbgallery="<?php echo esc_attr( isset( $portfolio['lightbox-gallery'] ) ? 'true' : 'false' ); ?>" data-deep-linking="<?php echo esc_attr( isset( $portfolio['lightbox-deep-linking'] ) ? 'true' : 'false' ); ?>" data-filter-type="<?php echo esc_attr( isset( $portfolio['filter-type'] ) && $portfolio['filter-type'] == 'opacity' ? 'opacity' : 'isotope' ); ?>">
<?php ob_start(); ?>
<div class="gw-gopf-posts-wrap">
<?php
/* Print slider arrows */
if ( $layout_type == 'slider' ) :
?>
<div class="gw-gopf-slider-controls-wrap gw-gopf-clearfix<?php echo ( isset( $portfolio['slider-arrows-align'] ) && !empty( $portfolio['slider-arrows-align'] ) ? ' '. $portfolio['slider-arrows-align'] : '' ); ?>">
<div class="gw-gopf-slider-controls gw-gopf-clearfix">
<div class="gw-gopf-control-prev"><a href="#"><img src="<?php echo GW_GO_PORTFOLIO_URI . 'assets/images/icon_prev.png'; ?>" class="gw-gopf-retina" alt="<?php _e( 'Previous', 'go_portfolio_textdomain' ); ?>"></a></div>
<div class="gw-gopf-control-next"><a href="#"><img src="<?php echo GW_GO_PORTFOLIO_URI . 'assets/images/icon_next.png'; ?>" class="gw-gopf-retina" alt="<?php _e( 'Next', 'go_portfolio_textdomain' ); ?>"></a></div>
</div>
</div>
<?php endif; ?>
<div class="gw-gopf-posts-wrap-inner">
<div class="gw-gopf-posts gw-gopf-clearfix"<?php echo ( isset( $portfolio['column-layout'] ) && !empty( $portfolio['column-layout'] ) ? ' data-col="' . preg_replace('/[^0-9]/', '', $portfolio['column-layout'] ) . '"' : '' ); ?><?php echo ( $layout_type == 'slider' ? ' data-slider="' . esc_js( json_encode( $slider_data ) ) . '"' : '' ); ?>>
<?php
$all_post_ids = array();
/* Get thumbs sizes */
$thumbanail_size = isset( $portfolio['thumbnail-size'] ) && !empty( $portfolio['thumbnail-size'] ) ? $portfolio['thumbnail-size'] : 'full';
$lightbox_size = isset( $portfolio['lightbox-size'] ) && !empty( $portfolio['lightbox-size'] ) ? $portfolio['lightbox-size'] : 'full';
/* Loop */
while( $new_wp_query->have_posts() ) : $new_wp_query->the_post();
?>
<?php
/* Portfolio posts */
$all_post_ids[] = $post->ID;
/* Get post term list */
$post_term_list = array();
if ( !empty( $filter_tax ) ) { $post_terms = get_the_terms( $post->ID, $filter_tax ); }
if ( isset( $post_terms ) && !empty( $post_terms ) ) {
foreach ( $post_terms as $post_term ) {
$post_term_list[] = $post_term->slug;
$all_post_term_list[] = $post_term->term_id;
}
}
/* Set post & thumbnail types */
$post_meta = get_post_meta( $post->ID, '' );
/* WooCommerece settings */
if ( defined( 'WOOCOMMERCE_VERSION' ) && isset( $query_post_type ) && $query_post_type=='product' ) {
$woo_product = get_product( $post->ID );
$woo_is_variation = isset( $woo_product->product_type ) && ( $woo_product->product_type == 'variation' || $woo_product->product_type == 'variable' ) ? true : false;
if ( $woo_is_variation ) { $post = $woo_product->post; }
}
$thumbnail_type = isset( $post_meta['gw_go_portfolio_thumb_type'][0] ) && !empty( $post_meta['gw_go_portfolio_thumb_type'][0] ) ? $post_meta['gw_go_portfolio_thumb_type'][0] : 'image';
$lighbox_type = isset( $post_meta['gw_go_portfolio_lighbox_type'][0] ) && !empty( $post_meta['gw_go_portfolio_lighbox_type'][0] ) ? $post_meta['gw_go_portfolio_lighbox_type'][0] : 'image';
$has_overlay = isset( $portfolio['overlay'] ) && $thumbnail_type == 'image' && !isset( $post_meta['gw_go_portfolio_hide_overlay'][0] ) ? true : false;
$post_link = isset( $post_meta['gw_go_portfolio_post_link'][0] ) && !empty( $post_meta['gw_go_portfolio_post_link'][0] ) ? $post_meta['gw_go_portfolio_post_link'][0] : get_permalink();
/* Get template data */
$replaced_template = null;
$has_lighbox = true;
$force_img_thumb = true;
?>
<div id="<?php echo esc_attr( $post->ID ); ?>" class="gw-gopf-col-wrap" data-filter="<?php echo esc_attr( implode(' ', $post_term_list ) ); ?>">
<div class="gw-gopf-post-col<?php echo ( $has_overlay ? ' gw-gopf-has-overlay' : '' ); ?><?php echo ( isset( $portfolio['overlay-hover'] ) && $portfolio['overlay-hover']=='2' ? ' gw-gopf-post-overlay-hover' : '' ); ?>">
<?php
/* 1. Post link */
if ( isset( $template_data['post_link'] ) ) { unset( $template_data['post_link'] ); }
$template_data['post_link'] = $post_link;
/* 2. Post media */
if ( isset( $template_data['post_media'] ) ) { unset( $template_data['post_media'] ); }
/* 3. Post overlay */
$button_style_class = isset( $portfolio['overlay-style'] ) && $portfolio['overlay-style'] == '2' ? 'gw-gopf-btn gw-gopf-post-overlay-btn' : 'gw-gopf-circle gw-gopf-post-overlay-circle';
if ( isset( $portfolio['overlay-btn-style'] ) && !empty( $portfolio['overlay-btn-style'] ) ) { $button_style_class .= ' ' . $portfolio['overlay-btn-style']; }
$popup_height = null;
if ( $lighbox_type == 'image' ) {
$tn_id = null;
$tn_img_data = null;
$tn_img_file = null;
$lb_img_data = null;
$lb_img_file = null;
$lightbox_img_src = get_post_meta( $post->ID, 'gw_go_portfolio_lightbox_img_src' ,true );
$thumb_img_src = get_post_meta( $post->ID, 'gw_go_portfolio_thumb_img_src' ,true );
$matches=null;
preg_match( '/<img[^>]+src=[\'"]([^\'"]+)[\'"][^>]*>/i', $post->post_content, $matches );
if ( isset( $portfolio['first-img-thumb'] ) && $portfolio['first-img-thumb'] == 'force' && isset( $matches ) && !empty( $matches ) ) {
$lb_img_file = $matches[1];
} elseif ( isset( $lightbox_img_src[0] ) && !empty( $lightbox_img_src[0] ) ) {
$lb_img_file = $lightbox_img_src[0];
} elseif ( isset( $thumb_img_src[0] ) && !empty( $thumb_img_src[0] ) ) {
$lb_img_file = $thumb_img_src[0];
} elseif ( has_post_thumbnail() || $arg_post_type == 'attachment' ) {
global $wp_version;
if ( version_compare( $wp_version, 4.2, ">=" ) ) {
$tn_id = $arg_post_type == 'attachment' ? $post->ID : get_post_thumbnail_id( $post->ID );
} else {
$tn_id = $arg_post_type == 'attachment' ? $post->guid : get_post_thumbnail_id( $post->ID );
}
$lb_img_data = wp_get_attachment_image_src( $tn_id, $lightbox_size );
if ( $lb_img_data ) { $lb_img_file = $lb_img_data[0]; }
} elseif ( isset( $portfolio['first-img-thumb'] ) && $portfolio['first-img-thumb'] == 'fallback' && isset( $matches ) && !empty( $matches ) ) {
$lb_img_file = $matches[1];
}
$lighbox_link = isset( $lightbox_img_src[0] ) && strlen( $lightbox_img_src[0] ) ? $lightbox_img_src[0] : ( isset( $lb_img_file ) ? $lb_img_file : '#' );
$inner_lightbox_gallery = null;
if ( isset( $lightbox_img_src ) && is_array( $lightbox_img_src ) && count( $lightbox_img_src ) > 1 ) {
$inner_lightbox_gallery = $lightbox_img_src;
$inner_lightbox_gallery = array_filter( $inner_lightbox_gallery );
}
$lighbox_class = 'gw-gopf-magnific-popup';
if ( isset( $portfolio['overlay-style'] ) && $portfolio['overlay-style'] == '2' ) {
$button_content = isset( $portfolio['overlay-btn-link-image'] ) ? $portfolio['overlay-btn-link-image'] : '';
} elseif ( isset( $portfolio['overlay-style'] ) && $portfolio['overlay-style'] == '1' ) {
$button_content = '<img src="' . GW_GO_PORTFOLIO_URI . 'assets/images/icon_large.png" class="gw-gopf-retina" alt="' . __( 'Show more', 'go_portfolio_textdomain' ) . '">';
}
} elseif ( $lighbox_type == 'video' || $lighbox_type == 'audio' ) {
$lighbox_link = '#';
$lighbox_class = 'gw-gopf-magnific-popup-html';
if ( isset( $portfolio['overlay-style'] ) && $portfolio['overlay-style'] == '2' ) {
if ( $lighbox_type == 'video' ) {
$button_content = isset( $portfolio['overlay-btn-link-video'] ) ? $portfolio['overlay-btn-link-video'] : '';
} else {
$button_content = isset( $portfolio['overlay-btn-link-audio'] ) ? $portfolio['overlay-btn-link-audio'] : '';
}
} elseif ( isset( $portfolio['overlay-style'] ) && $portfolio['overlay-style'] == '1' ) {
if ( $lighbox_type == 'video' ) {
$button_content = '<img src="' . GW_GO_PORTFOLIO_URI . 'assets/images/icon_video.png" class="gw-gopf-retina" alt="' . __( 'Show more', 'go_portfolio_textdomain' ) . '">';
} else {
$button_content = '<img src="' . GW_GO_PORTFOLIO_URI . 'assets/images/icon_audio.png" class="gw-gopf-retina" alt="' . __( 'Show more', 'go_portfolio_textdomain' ) . '">';
}
}
$lighbox_content = '';
/* Video types */
if ( isset( $post_meta['gw_go_portfolio_lightbox_video_type'][0] ) && $post_meta['gw_go_portfolio_lightbox_video_type'][0]== 'youtube_video' && isset( $post_meta['gw_go_portfolio_lightbox_youtube_video_id'][0] ) ) {
$lighbox_link = '//www.youtube.com/watch?v=' . $post_meta['gw_go_portfolio_lightbox_youtube_video_id'][0];
} elseif ( isset( $post_meta['gw_go_portfolio_lightbox_video_type'][0] ) && $post_meta['gw_go_portfolio_lightbox_video_type'][0]== 'vimeo_video' && isset( $post_meta['gw_go_portfolio_lightbox_vimeo_video_id'][0] ) ) {
$color = isset( $post_meta['gw_go_portfolio_lightbox_vimeo_video_c'][0] ) && !empty( $post_meta['gw_go_portfolio_lightbox_vimeo_video_c'][0] ) ?
( mb_strlen( $post_meta['gw_go_portfolio_lightbox_vimeo_video_c'][0] = preg_replace( '/[^0-9a-f]/','', $post_meta['gw_go_portfolio_lightbox_vimeo_video_c'][0] ) ) == 6 ? $post_meta['gw_go_portfolio_lightbox_vimeo_video_c'][0] : '0' ) : '0';
$lighbox_link = '//vimeo.com/' . $post_meta['gw_go_portfolio_lightbox_vimeo_video_id'][0] . '?color=' . $color;
} elseif ( isset( $post_meta['gw_go_portfolio_lightbox_video_type'][0] ) && $post_meta['gw_go_portfolio_lightbox_video_type'][0]== 'screenr_video' && isset( $post_meta['gw_go_portfolio_lightbox_screenr_video_id'][0] ) ) {
$lighbox_link = 'http://www.screenr.com/embed/' . $post_meta['gw_go_portfolio_lightbox_screenr_video_id'][0];
} elseif ( isset( $post_meta['gw_go_portfolio_lightbox_video_type'][0] ) && $post_meta['gw_go_portfolio_lightbox_video_type'][0]== 'dailymotion_video' && isset( $post_meta['gw_go_portfolio_lightbox_dailymotion_video_id'][0] ) ) {
$lighbox_link = '//dailymotion.com/embed/video/' . $post_meta['gw_go_portfolio_lightbox_dailymotion_video_id'][0];
} elseif ( isset( $post_meta['gw_go_portfolio_lightbox_video_type'][0] ) && $post_meta['gw_go_portfolio_lightbox_video_type'][0]== 'metacafe_video' && isset( $post_meta['gw_go_portfolio_lightbox_metacafe_video_id'][0] ) ) {
$lighbox_link = 'http://www.metacafe.com/embed/' . $post_meta['gw_go_portfolio_lightbox_metacafe_video_id'][0];
}
/* Audio types */
if ( isset( $post_meta['gw_go_portfolio_lightbox_audio_type'][0] ) && $post_meta['gw_go_portfolio_lightbox_audio_type'][0]== 'soundcloud_audio' && isset( $post_meta['gw_go_portfolio_lightbox_soundcloud_audio_id'][0] ) ) {
$color = isset( $post_meta['gw_go_portfolio_lightbox_soundcloud_audio_c'][0] ) && !empty( $post_meta['gw_go_portfolio_lightbox_soundcloud_audio_c'][0] ) ?
( mb_strlen( $post_meta['gw_go_portfolio_lightbox_soundcloud_audio_c'][0] = preg_replace( '/[^0-9a-f]/','', $post_meta['gw_go_portfolio_lightbox_soundcloud_audio_c'][0] ) ) == 6 ? $post_meta['gw_go_portfolio_lightbox_soundcloud_audio_c'][0] : '0' ) : '0';
$lighbox_link = '//w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F'. $post_meta['gw_go_portfolio_lightbox_soundcloud_audio_id'][0] . '&color=' . $color . '&auto_play=true&show_artwork=true';
$popup_height = 166;
} elseif ( isset( $post_meta['gw_go_portfolio_lightbox_audio_type'][0] ) && $post_meta['gw_go_portfolio_lightbox_audio_type'][0]== 'mixcloud_audio' && isset( $post_meta['gw_go_portfolio_lightbox_mixcloud_audio_id'][0] ) ) {
$color = isset( $post_meta['gw_go_portfolio_lightbox_mixcloud_audio_c'][0] ) && !empty( $post_meta['gw_go_portfolio_lightbox_mixcloud_audio_c'][0] ) ?
( mb_strlen( $post_meta['gw_go_portfolio_lightbox_mixcloud_audio_c'][0] = preg_replace( '/[^0-9a-f]/','', $post_meta['gw_go_portfolio_lightbox_mixcloud_audio_c'][0] ) ) == 6 ? $post_meta['gw_go_portfolio_lightbox_mixcloud_audio_c'][0] : '0' ) : '0';
$lighbox_link = '//www.mixcloud.com/widget/iframe/?feed='. urlencode( trim( $post_meta['gw_go_portfolio_lightbox_mixcloud_audio_id'][0], '/' ) ) . '%2F&show_tracklist=&stylecolor=' . $color;
$popup_height = 480;
} elseif ( isset( $post_meta['gw_go_portfolio_lightbox_audio_type'][0] ) && $post_meta['gw_go_portfolio_lightbox_audio_type'][0]== 'beatport_audio' && isset( $post_meta['gw_go_portfolio_lightbox_beatport_audio_id'][0] ) ) {
$lighbox_link = 'http://embed.beatport.com/player?id=' . $post_meta['gw_go_portfolio_lightbox_beatport_audio_id'][0] . '&type=track&auto=1';
$popup_height = 166;
}
} elseif ( $lighbox_type == 'other' ) {
$lighbox_link = '#';
$lighbox_class = 'gw-gopf-magnific-popup-html';
if ( isset( $portfolio['overlay-style'] ) && $portfolio['overlay-style'] == '2' ) {
$button_content = isset( $portfolio['overlay-btn-link-video'] ) ? $portfolio['overlay-btn-link-video'] : '';
} elseif ( isset( $portfolio['overlay-style'] ) && $portfolio['overlay-style'] == '1' ) {
$button_content = '<img src="' . GW_GO_PORTFOLIO_URI . 'assets/images/icon_large.png" class="gw-gopf-retina" alt="' . __( 'Show more', 'go_portfolio_textdomain' ) . '">';
}
if ( isset( $post_meta['gw_go_portfolio_lightbox_other_type'][0] ) && $post_meta['gw_go_portfolio_lightbox_other_type'][0]== 'custom_iframe' && isset( $post_meta['gw_go_portfolio_lightbox_iframe_url'][0] ) ) {
$popup_height = isset( $post_meta['gw_go_portfolio_lightbox_iframe_h'][0] ) && !empty( $post_meta['gw_go_portfolio_lightbox_iframe_h'][0] ) ?
( floatval( $post_meta['gw_go_portfolio_lightbox_iframe_h'][0] ) != 0 ? floatval( $post_meta['gw_go_portfolio_lightbox_iframe_h'][0] ) : null ) : null;
$lighbox_link = isset( $post_meta['gw_go_portfolio_lightbox_iframe_url'][0] ) && !empty( $post_meta['gw_go_portfolio_lightbox_iframe_url'][0] ) ? $post_meta['gw_go_portfolio_lightbox_iframe_url'][0] : '#';
}
}
$lighbox_content = '';
/* Lightbox button links */
$post_lb_button_data_raw = '<a title="' . esc_attr( isset( $portfolio['lightbox-caption'] ) ? trim( get_the_title() ) : '' ) . '" data-id="' . $post->ID . '_' . $portfolio_key . '" href="' . $lighbox_link . '" data-content="' . $lighbox_content . '" data-mfp-src="' . $lighbox_link . '"' . ( isset( $inner_lightbox_gallery ) ? 'data-gallery="' . esc_attr( json_encode( $inner_lightbox_gallery ) ) . '"' : '' ) . ' class="' . $lighbox_class . ' gw-gopf-post-overlay gw-gopf-post-overlay-link"' . ( isset( $popup_height ) ? ' data-height="' . $popup_height . '"' : '' ) . '>';
$post_lb_button = '<a title="' . esc_attr( isset( $portfolio['lightbox-caption'] ) ? trim( get_the_title() ) : '' ) . '" data-id="' . $post->ID . '_' . $portfolio_key . '" href="' . $lighbox_link . '" data-content="' . $lighbox_content . '" data-mfp-src="' . $lighbox_link . '"' . ( isset( $inner_lightbox_gallery ) ? 'data-gallery="' . esc_attr( json_encode( $inner_lightbox_gallery ) ) . '"' : '' ) . ' class="' . $button_style_class . ' ' . $lighbox_class . '"' . ( isset( $popup_height ) ? ' data-height="' . $popup_height . '"' : '' ) . '>' . $button_content . '</a>';
/* Read more button links */
if ( isset( $portfolio['overlay-style'] ) && $portfolio['overlay-style'] == '2' ) {
$button_content = isset( $portfolio['overlay-btn-link-post'] ) ? $portfolio['overlay-btn-link-post'] : '';
} elseif ( isset( $portfolio['overlay-style'] ) && $portfolio['overlay-style'] == '1' ) {
$button_content = '<img src="' . GW_GO_PORTFOLIO_URI . 'assets/images/icon_link.png" class="gw-gopf-retina" alt="">';
}
$post_link_button_data_raw = '<a href="' . $template_data['post_link'] . '" class="gw-gopf-post-overlay gw-gopf-post-overlay-link"' . ( isset( $post_meta['gw_go_portfolio_post_link_target'][0] ) ? ' target="_blank"' : '' ) . '>';
$post_link_button = '<a href="' . $template_data['post_link'] . '" class="' . $button_style_class . '"' . ( isset( $post_meta['gw_go_portfolio_post_link_target'][0] ) ? ' target="_blank"' : '' ) . '>' . $button_content . '</a>';
/* Overlay and button */
if ( $has_overlay ) {
$template_data['post_overlay_buttons'] = '<div class="gw-gopf-post-overlay-bg"></div><div class="gw-gopf-post-overlay-inner">';
if ( isset( $portfolio['overlay-button-lb'] ) && !isset( $post_meta['gw_go_portfolio_hide_lightbox_button'][0] ) ) {
$template_data['post_overlay_buttons'] .= $post_lb_button;
}
if ( isset( $portfolio['overlay-button-link'] ) && !isset( $post_meta['gw_go_portfolio_hide_link_button'][0] ) ) {
$template_data['post_overlay_buttons'] .= $post_link_button;
}
$template_data['post_overlay_buttons'] .= '</div>';
}
/* 4. Image thumbnail */
$template_data['post_media'] = null;
if ( $thumbnail_type == 'image' ) {
$tn_id = null;
$tn_img_data = null;
$tn_img_file = null;
$lb_img_data = null;
$lb_img_file = null;
$fixed_img_height = null;
$img_ratio = null;
if ( isset( $portfolio['width'] ) && !empty( $portfolio['width'] ) && floatval( $portfolio['width'] ) > 0 && isset( $portfolio['height'] ) && !empty( $portfolio['height'] ) && floatval( $portfolio['height'] ) > 0 ) {
$img_ratio = floatval( $portfolio['height'] ) / floatval( $portfolio['width'] );
} else {
$fixed_img_height = isset( $portfolio['height'] ) && !empty( $portfolio['height'] ) && floatval( $portfolio['height'] ) > 0 ? floatval( $portfolio['height'] ) : null;
}
$thumb_img_src = get_post_meta( $post->ID, 'gw_go_portfolio_thumb_img_src' ,true );
if ( ( !isset( $portfolio['overlay-button-lb'] ) || isset( $post_meta['gw_go_portfolio_hide_lightbox_button'][0] ) )
&& ( !isset( $portfolio['overlay-button-link'] ) || isset( $post_meta['gw_go_portfolio_hide_link_button'][0] ) )
|| ( !isset( $portfolio['overlay'] ) || isset( $post_meta['gw_go_portfolio_hide_overlay'][0] ) ) ) {
if ( isset( $portfolio['media-link'] ) && $portfolio['media-link'] == 'lightbox' ) {
$template_data['post_media'] = $post_lb_button_data_raw . '</a>';
} elseif ( isset( $portfolio['media-link'] ) && $portfolio['media-link'] == 'link' ) {
$template_data['post_media'] = $post_link_button_data_raw . '</a>';
} else {
$template_data['post_media'] = '';
}
}
$matches = null;
$_img_src = '';
$_img_width = null;
$_img_height = null;
$_alt = '';
$regex = '/((?:(?!\s|=).)*)\s*?=\s*?["\']?((?:(?<=")(?:(?<=\\\\)"|[^"])*|(?<=\')(?:(?<=\\\\)\'|[^\'])*)|(?:(?!"|\')(?:(?!\/>|>|\s).)+))/';
preg_match_all( $regex, $post->post_content, $matches, PREG_SET_ORDER, 0 );
// Check if really exists
if ( !empty( $matches ) ) {
foreach( (array)$matches as $match ) {
if ( isset( $match[1] ) && isset( $match[2] ) ) {
$match[1] = trim( $match[1] );
switch( $match[1] ) {
case 'src':
$_img_src = trim( $match[2] );
break;
case 'width':
$_img_width = trim( $match[2] );
break;
case 'height':
$_img_height = trim( $match[2] );
break;
case 'alt':
$_alt = trim( $match[2] );
break;
}
}
}
}
// 1st img force
if ( isset( $portfolio['first-img-thumb'] ) && $portfolio['first-img-thumb'] == 'force' && !empty( $_img_src ) ) {
$img_w = null;
$img_h = null;
$_wrapper_img_ratio = null;
$real_img_ratio = null;
$tn_img_file = $lb_img_file = $_img_src;
// check if is it external
$id = null;
$tn_id = null;
$id = gw_get_attachment_id_from_url( $_img_src );
// Is self hosted image
if ( !empty( $id ) ) {
$tn_id = $id;
$tn_img_data = wp_get_attachment_image_src( $tn_id, $thumbanail_size );
$alt = get_post_meta( $tn_id, '_wp_attachment_image_alt', true );
if ( $alt == '') {
$attachment = get_post( $tn_id );
if ( !empty( $attachment ) ) $alt = $attachment->post_title;
}
if ( !empty( $alt ) ) $alt = trim( strip_tags( $alt ) );
if ( $tn_img_data ) {
$tn_img_file = $tn_img_data[0];
if ( $lb_img_data ) { $lb_img_file = $lb_img_data[0]; }
$real_img_ratio = '';
$img_w = '';
$img_h = '';
if ( isset( $tn_img_data[1] ) && isset( $tn_img_data[2] ) ) {
$img_w = floatval( $tn_img_data[1] );
$img_h = floatval( $tn_img_data[2] );
$real_img_ratio = $img_h / $img_w;
}
if ( isset( $img_ratio ) ) {
$_wrapper_img_ratio = $img_ratio;
} else {
$_wrapper_img_ratio = $real_img_ratio;
}
$template_data['post_media'] .= '<div class="gw-gopf-post-media-wrap-outer"><div class="gw-gopf-post-media-wrap" style="' . ( !empty( $fixed_img_height ) ? 'height:' . $fixed_img_height . 'px' : ( ( isset( $_wrapper_img_ratio ) ? ' height:0; padding-bottom:'. $_wrapper_img_ratio * 100 . '%' : '' ) ) ) . '">';
$template_data['post_media'] .= '<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="' . $alt . '" data-src="' . $tn_img_file . '" data-id="' . $tn_id . '" data-width="' . $img_w . '" data-height="' . $img_h . '" data-img-aspect-ratio="' . $real_img_ratio . '" data-view-aspect-ratio="' . $img_ratio . '" data-orientation="'. ( $img_ratio > $real_img_ratio ? 'landscape' : 'portrait' ) .'" data-x="true"' . ( !empty( $fixed_img_height ) ? ' data-fixh="'. $fixed_img_height .'"' : '' ) . '>';
$template_data['post_media'] .= '</div></div>';
$img_ratio = null;
$_wrapper_img_ratio = null;
}
} else {
$alt = '';
$tn_img_file = $_img_src;
if ( isset( $_alt ) ) $alt = trim( $_alt );
if ( isset( $_img_width ) && isset( $_img_height ) ) {
$img_w = floatval( $_img_width );
$img_h = floatval( $_img_height );
$real_img_ratio = $img_h / $img_w;
}
if ( isset( $img_ratio ) ) {
$_wrapper_img_ratio = $img_ratio;
} else {
$_wrapper_img_ratio = $real_img_ratio;
}
$template_data['post_media'] .= '<div class="gw-gopf-post-media-wrap-outer"><div class="gw-gopf-post-media-wrap" style="' . ( !empty( $fixed_img_height ) ? 'height:' . $fixed_img_height . 'px' : ( ( isset( $_wrapper_img_ratio ) ? ' height:0; padding-bottom:'. $_wrapper_img_ratio * 100 . '%' : '' ) ) ) . '">';
$template_data['post_media'] .= '<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="' . $alt . '" data-src="' . $tn_img_file . '" data-id="' . $tn_id . '" data-width="' . $img_w . '" data-height="' . $img_h . '" data-img-aspect-ratio="' . $real_img_ratio . '" data-view-aspect-ratio="' . $img_ratio . '" data-orientation="'. ( $img_ratio > $real_img_ratio ? 'landscape' : 'portrait' ) .'" data-x="true"' . ( !empty( $fixed_img_height ) ? ' data-fixh="'. $fixed_img_height .'"' : '' ) . '>';
$template_data['post_media'] .= '</div></div>';
$img_ratio = null;
$_wrapper_img_ratio = null;
}
// meta image
} elseif ( isset( $thumb_img_src[0] ) && !empty( $thumb_img_src[0] ) ) {
$_img_src = $thumb_img_src[0];
$id = null;
$tn_id = null;
$id = gw_get_attachment_id_from_url( $_img_src );
// Is self hosted image
if ( !empty( $id ) ) {
$tn_id = $id;
$tn_img_data = wp_get_attachment_image_src( $tn_id, $thumbanail_size );
$alt = get_post_meta( $tn_id, '_wp_attachment_image_alt', true );
if ( $alt == '') {
$attachment = get_post( $tn_id );
if ( !empty( $attachment ) ) $alt = $attachment->post_title;
}
if ( !empty( $alt ) ) $alt = trim( strip_tags( $alt ) );
if ( $tn_img_data ) {
$tn_img_file = $tn_img_data[0];
if ( $lb_img_data ) { $lb_img_file = $lb_img_data[0]; }
$real_img_ratio = '';
$img_w = '';
$img_h = '';
if ( isset( $tn_img_data[1] ) && isset( $tn_img_data[2] ) ) {
$img_w = floatval( $tn_img_data[1] );
$img_h = floatval( $tn_img_data[2] );
$real_img_ratio = $img_h / $img_w;
}
if ( isset( $img_ratio ) ) {
$_wrapper_img_ratio = $img_ratio;
} else {
$_wrapper_img_ratio = $real_img_ratio;
}
$template_data['post_media'] .= '<div class="gw-gopf-post-media-wrap-outer"><div class="gw-gopf-post-media-wrap" style="' . ( !empty( $fixed_img_height ) ? 'height:' . $fixed_img_height . 'px' : ( ( isset( $_wrapper_img_ratio ) ? ' height:0; padding-bottom:'. $_wrapper_img_ratio * 100 . '%' : '' ) ) ) . '">';
$template_data['post_media'] .= '<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="' . $alt . '" data-src="' . $tn_img_file . '" data-id="' . $tn_id . '" data-width="' . $img_w . '" data-height="' . $img_h . '" data-img-aspect-ratio="' . $real_img_ratio . '" data-view-aspect-ratio="' . $img_ratio . '" data-orientation="'. ( $img_ratio > $real_img_ratio ? 'landscape' : 'portrait' ) .'" data-x="true"' . ( !empty( $fixed_img_height ) ? ' data-fixh="'. $fixed_img_height .'"' : '' ) . '>';
$template_data['post_media'] .= '</div></div>';
$img_ratio = null;
$_wrapper_img_ratio = null;
}
} else {
$alt = '';
$tn_img_file = $_img_src;
if ( isset( $_alt ) ) $alt = trim( $_alt );
if ( isset( $_img_width ) && isset( $_img_height ) ) {
$img_w = floatval( $_img_width );
$img_h = floatval( $_img_height );
$real_img_ratio = $img_h / $img_w;
}
if ( isset( $img_ratio ) ) {
$_wrapper_img_ratio = $img_ratio;
} else {
$_wrapper_img_ratio = $real_img_ratio;
}
$template_data['post_media'] .= '<div class="gw-gopf-post-media-wrap-outer"><div class="gw-gopf-post-media-wrap" style="' . ( !empty( $fixed_img_height ) ? 'height:' . $fixed_img_height . 'px' : ( ( isset( $_wrapper_img_ratio ) ? ' height:0; padding-bottom:'. $_wrapper_img_ratio * 100 . '%' : '' ) ) ) . '">';
$template_data['post_media'] .= '<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="' . $alt . '" data-src="' . $tn_img_file . '" data-id="' . $tn_id . '" data-width="' . $img_w . '" data-height="' . $img_h . '" data-img-aspect-ratio="' . $real_img_ratio . '" data-view-aspect-ratio="' . $img_ratio . '" data-orientation="'. ( $img_ratio > $real_img_ratio ? 'landscape' : 'portrait' ) .'" data-x="true"' . ( !empty( $fixed_img_height ) ? ' data-fixh="'. $fixed_img_height .'"' : '' ) . '>';
$template_data['post_media'] .= '</div></div>';
$img_ratio = null;
$_wrapper_img_ratio = null;
}
// featured image
} elseif ( has_post_thumbnail() || $arg_post_type == 'attachment' ) {
global $wp_version;
if ( version_compare( $wp_version, 4.2, ">=" ) ) {
$tn_id = $arg_post_type == 'attachment' ? $post->ID : get_post_thumbnail_id( $post->ID );
} else {
$tn_id = $arg_post_type == 'attachment' ? $post->guid : get_post_thumbnail_id( $post->ID );
}
$tn_img_data = wp_get_attachment_image_src( $tn_id, $thumbanail_size );
$lb_img_data = wp_get_attachment_image_src( $tn_id, $lightbox_size );
$alt = '';
$alt = get_post_meta( $tn_id, '_wp_attachment_image_alt', true );
if ( $alt == '') {
$attachment = get_post( $tn_id );
if ( !empty( $attachment ) ) $alt = $attachment->post_title;
}
if ( !empty( $alt ) ) $alt = trim( strip_tags( $alt ) );
if ( $tn_img_data ) {
$tn_img_file = $tn_img_data[0];
if ( $lb_img_data ) { $lb_img_file = $lb_img_data[0]; }
$real_img_ratio = '';
$img_w = '';
$img_h = '';
if ( isset( $tn_img_data[1] ) && isset( $tn_img_data[2] ) ) {
$img_w = floatval( $tn_img_data[1] );
$img_h = floatval( $tn_img_data[2] );
$real_img_ratio = $img_h / $img_w;
}
if ( isset( $img_ratio ) ) {
$_wrapper_img_ratio = $img_ratio;
} else {
$_wrapper_img_ratio = $real_img_ratio;
}
$template_data['post_media'] .= '<div class="gw-gopf-post-media-wrap-outer"><div class="gw-gopf-post-media-wrap" style="' . ( !empty( $fixed_img_height ) ? ' height:' . $fixed_img_height . 'px' : ( ( isset( $_wrapper_img_ratio ) ? ' height:0; padding-bottom:'. $_wrapper_img_ratio * 100 . '%' : '' ) ) ) . '">';
$template_data['post_media'] .= '<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="' . $alt . '" data-src="' . $tn_img_file . '" data-id="' . $tn_id . '" data-width="' . $img_w . '" data-height="' . $img_h . '" data-img-aspect-ratio="' . $real_img_ratio . '" data-view-aspect-ratio="' . $img_ratio . '" data-orientation="'. ( $img_ratio > $real_img_ratio ? 'landscape' : 'portrait' ) .'"' . ( !empty( $fixed_img_height ) ? ' data-fixh="'. $fixed_img_height .'"' : '' ) . '>';
$template_data['post_media'] .= '</div></div>';
$img_ratio = null;
$_wrapper_img_ratio = null;
}
// 1st image fallback
}
if ( isset( $portfolio['first-img-thumb'] ) && $portfolio['first-img-thumb'] == 'fallback' && empty( $template_data['post_media'] ) && !empty( $_img_src ) ) {
$img_w = null;
$img_h = null;
$_wrapper_img_ratio = null;
$real_img_ratio = null;
$tn_img_file = $lb_img_file = $_img_src;
// check if is it external
$id = null;
$tn_id = null;
$id = gw_get_attachment_id_from_url( $_img_src );
// Is self hosted image
if ( !empty( $id ) ) {
$tn_id = $id;
$tn_img_data = wp_get_attachment_image_src( $tn_id, $thumbanail_size );
$alt = get_post_meta( $tn_id, '_wp_attachment_image_alt', true );
if ( $alt == '') {
$attachment = get_post( $tn_id );
if ( !empty( $attachment ) ) $alt = $attachment->post_title;
}
if ( !empty( $alt ) ) $alt = trim( strip_tags( $alt ) );
if ( $tn_img_data ) {
$tn_img_file = $tn_img_data[0];
if ( $lb_img_data ) { $lb_img_file = $lb_img_data[0]; }
$real_img_ratio = '';
$img_w = '';
$img_h = '';
if ( isset( $tn_img_data[1] ) && isset( $tn_img_data[2] ) ) {
$img_w = floatval( $tn_img_data[1] );
$img_h = floatval( $tn_img_data[2] );
$real_img_ratio = $img_h / $img_w;
}
if ( isset( $img_ratio ) ) {
$_wrapper_img_ratio = $img_ratio;
} else {
$_wrapper_img_ratio = $real_img_ratio;
}
$template_data['post_media'] .= '<div class="gw-gopf-post-media-wrap-outer"><div class="gw-gopf-post-media-wrap" style="' . ( !empty( $fixed_img_height ) ? 'height:' . $fixed_img_height . 'px' : ( ( isset( $_wrapper_img_ratio ) ? ' height:0; padding-bottom:'. $_wrapper_img_ratio * 100 . '%' : '' ) ) ) . '">';
$template_data['post_media'] .= '<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="' . $alt . '" data-src="' . $tn_img_file . '" data-id="' . $tn_id . '" data-width="' . $img_w . '" data-height="' . $img_h . '" data-img-aspect-ratio="' . $real_img_ratio . '" data-view-aspect-ratio="' . $img_ratio . '" data-orientation="'. ( $img_ratio > $real_img_ratio ? 'landscape' : 'portrait' ) .'" data-x="true"' . ( !empty( $fixed_img_height ) ? ' data-fixh="'. $fixed_img_height .'"' : '' ) . '>';
$template_data['post_media'] .= '</div></div>';
$img_ratio = null;
$_wrapper_img_ratio = null;
}
} else {
$alt = '';
$tn_img_file = $_img_src;
if ( isset( $_alt ) ) $alt = trim( $_alt );
if ( isset( $_img_width ) && isset( $_img_height ) ) {
$img_w = floatval( $_img_width );
$img_h = floatval( $_img_height );
$real_img_ratio = $img_h / $img_w;
}
if ( isset( $img_ratio ) ) {
$_wrapper_img_ratio = $img_ratio;
} else {
$_wrapper_img_ratio = $real_img_ratio;
}
$template_data['post_media'] .= '<div class="gw-gopf-post-media-wrap-outer"><div class="gw-gopf-post-media-wrap" style="' . ( !empty( $fixed_img_height ) ? 'height:' . $fixed_img_height . 'px' : ( ( isset( $_wrapper_img_ratio ) ? ' height:0; padding-bottom:'. $_wrapper_img_ratio * 100 . '%' : '' ) ) ) . '">';
$template_data['post_media'] .= '<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="' . $alt . '" data-src="' . $tn_img_file . '" data-id="' . $tn_id . '" data-width="' . $img_w . '" data-height="' . $img_h . '" data-img-aspect-ratio="' . $real_img_ratio . '" data-view-aspect-ratio="' . $img_ratio . '" data-orientation="'. ( $img_ratio > $real_img_ratio ? 'landscape' : 'portrait' ) .'" data-x="true"' . ( !empty( $fixed_img_height ) ? ' data-fixh="'. $fixed_img_height .'"' : '' ) . '>';
$template_data['post_media'] .= '</div></div>';
$img_ratio = null;
$_wrapper_img_ratio = null;
}
}
$template_data['post_media'] .='';
}
/* 5. Video & audio thumbnail */
if ( $thumbnail_type == 'video' || $thumbnail_type == 'audio' ) {
$height = null;
$video_type = isset( $post_meta['gw_go_portfolio_thumb_type'][0] ) && $post_meta['gw_go_portfolio_thumb_type'][0] == 'video' ? $post_meta['gw_go_portfolio_thumb_video_type'][0] : null;
$audio_type = isset( $post_meta['gw_go_portfolio_thumb_type'][0] ) && $post_meta['gw_go_portfolio_thumb_type'][0] == 'audio' ? $post_meta['gw_go_portfolio_thumb_audio_type'][0] : null;
$portfolio['width'] = isset( $portfolio['width'] ) && !empty( $portfolio['width'] ) ? floatval( $portfolio['width'] ) : null;
/* Video types */
if ( $video_type ) {
$media_ratio = $portfolio['width'] && !empty( $portfolio['width'] ) && $portfolio['height'] && !empty( $portfolio['height'] ) ? $portfolio['height'] / $portfolio['width'] : 0.5625;
if ( $video_type == 'youtube_video' ) {
$post_meta['gw_go_portfolio_thumbnail_youtube_video_h'][0] = isset( $post_meta['gw_go_portfolio_thumbnail_youtube_video_h'][0] ) && !empty( $post_meta['gw_go_portfolio_thumbnail_youtube_video_h'][0] ) ? floatval( $post_meta['gw_go_portfolio_thumbnail_youtube_video_h'][0] ) : null;
$height = $post_meta['gw_go_portfolio_thumbnail_youtube_video_h'][0] && !empty( $post_meta['gw_go_portfolio_thumbnail_youtube_video_h'][0] ) ? $post_meta['gw_go_portfolio_thumbnail_youtube_video_h'][0] : null;
$media_embed='<iframe src="//www.youtube.com/embed/' . ( isset( $post_meta['gw_go_portfolio_thumbnail_youtube_video_id'][0] ) ? $post_meta['gw_go_portfolio_thumbnail_youtube_video_id'][0] : '' ) . '?wmode=opaque" frameborder="0" height="100%" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>';
} elseif ( $video_type == 'vimeo_video' ) {
$post_meta['gw_go_portfolio_thumbnail_vimeo_video_h'][0] = isset( $post_meta['gw_go_portfolio_thumbnail_vimeo_video_h'][0] ) && !empty( $post_meta['gw_go_portfolio_thumbnail_vimeo_video_h'][0] ) ? floatval( $post_meta['gw_go_portfolio_thumbnail_vimeo_video_h'][0] ) : null;
$height = $post_meta['gw_go_portfolio_thumbnail_vimeo_video_h'][0] && !empty( $post_meta['gw_go_portfolio_thumbnail_vimeo_video_h'][0] ) ? $post_meta['gw_go_portfolio_thumbnail_vimeo_video_h'][0] : null;
$color = isset( $post_meta['gw_go_portfolio_thumbnail_vimeo_video_c'][0] ) && !empty( $post_meta['gw_go_portfolio_thumbnail_vimeo_video_c'][0] ) ?
( mb_strlen( $post_meta['gw_go_portfolio_thumbnail_vimeo_video_c'][0] = preg_replace( '/[^0-9a-f]/','', $post_meta['gw_go_portfolio_thumbnail_vimeo_video_c'][0] ) ) == 6 ? $post_meta['gw_go_portfolio_thumbnail_vimeo_video_c'][0] : '0' ) : '0';
$media_embed='<iframe src="//player.vimeo.com/video/' . ( isset( $post_meta['gw_go_portfolio_thumbnail_vimeo_video_id'][0] ) ? $post_meta['gw_go_portfolio_thumbnail_vimeo_video_id'][0] : '' ) . '?wmode=opaque&color=' . $color . '" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>';
} elseif ( $video_type == 'screenr_video' ) {
$post_meta['gw_go_portfolio_thumbnail_screenr_video_h'][0] = isset( $post_meta['gw_go_portfolio_thumbnail_screenr_video_h'][0] ) && !empty( $post_meta['gw_go_portfolio_thumbnail_screenr_video_h'][0] ) ? floatval( $post_meta['gw_go_portfolio_thumbnail_screenr_video_h'][0] ) : null;
$height = $post_meta['gw_go_portfolio_thumbnail_screenr_video_h'][0] && !empty( $post_meta['gw_go_portfolio_thumbnail_screenr_video_h'][0] ) ? $post_meta['gw_go_portfolio_thumbnail_screenr_video_h'][0] : null;
$media_embed='<iframe src="http://www.screenr.com/embed/' . ( isset( $post_meta['gw_go_portfolio_thumbnail_screenr_video_id'][0] ) ? $post_meta['gw_go_portfolio_thumbnail_screenr_video_id'][0] : '' ) . '"?wmode=opaque" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>';
} elseif ( $video_type == 'dailymotion_video' ) {
$post_meta['gw_go_portfolio_thumbnail_dailymotion_video_h'][0] = isset( $post_meta['gw_go_portfolio_thumbnail_dailymotion_video_h'][0] ) && !empty( $post_meta['gw_go_portfolio_thumbnail_dailymotion_video_h'][0] ) ? floatval( $post_meta['gw_go_portfolio_thumbnail_dailymotion_video_h'][0] ) : null;
$height = $post_meta['gw_go_portfolio_thumbnail_dailymotion_video_h'][0] && !empty( $post_meta['gw_go_portfolio_thumbnail_dailymotion_video_h'][0] ) ? $post_meta['gw_go_portfolio_thumbnail_dailymotion_video_h'][0] : null;
$video_embed='<iframe src="//www.dailymotion.com/embed/video/' . ( isset( $post_meta['gw_go_portfolio_thumbnail_dailymotion_video_id'][0] ) ? $post_meta['gw_go_portfolio_thumbnail_dailymotion_video_id'][0] : '' ) . '"?wmode=opaque" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>';
} elseif ( $video_type == 'metacafe_video' ) {
$post_meta['gw_go_portfolio_thumbnail_metacafe_video_h'][0] = isset( $post_meta['gw_go_portfolio_thumbnail_metacafe_video_h'][0] ) && !empty( $post_meta['gw_go_portfolio_thumbnail_metacafe_video_h'][0] ) ? floatval( $post_meta['gw_go_portfolio_thumbnail_metacafe_video_h'][0] ) : null;
$height = $post_meta['gw_go_portfolio_thumbnail_metacafe_video_h'][0] && !empty( $post_meta['gw_go_portfolio_thumbnail_metacafe_video_h'][0] ) ? $post_meta['gw_go_portfolio_thumbnail_metacafe_video_h'][0] : null;
$media_embed='<iframe src="http://www.metacafe.com/embed/' . ( isset( $post_meta['gw_go_portfolio_thumbnail_metacafe_video_id'][0] ) ? $post_meta['gw_go_portfolio_thumbnail_metacafe_video_id'][0] : '' ) . '"?wmode=opaque" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>';
}
}
/* Audio types */
if ( $audio_type ) {
$media_ratio = $portfolio['width'] && !empty( $portfolio['width'] ) && $portfolio['height'] && !empty( $portfolio['height'] ) ? $portfolio['height'] / $portfolio['width'] : 0.5625;
if ( isset( $post_meta['gw_go_portfolio_thumb_audio_type'][0] ) && $post_meta['gw_go_portfolio_thumb_audio_type'][0]== 'soundcloud_audio' && isset( $post_meta['gw_go_portfolio_thumbnail_soundcloud_audio_id'][0] ) ) {
$post_meta['gw_go_portfolio_thumbnail_soundcloud_audio_h'][0] = isset( $post_meta['gw_go_portfolio_thumbnail_soundcloud_audio_h'][0] ) && !empty( $post_meta['gw_go_portfolio_thumbnail_soundcloud_audio_h'][0] ) ? floatval( $post_meta['gw_go_portfolio_thumbnail_soundcloud_audio_h'][0] ) : null;
$height = $post_meta['gw_go_portfolio_thumbnail_soundcloud_audio_h'][0] && !empty( $post_meta['gw_go_portfolio_thumbnail_soundcloud_audio_h'][0] ) ? $post_meta['gw_go_portfolio_thumbnail_soundcloud_audio_h'][0] : null;
$color = isset( $post_meta['gw_go_portfolio_thumbnail_soundcloud_audio_c'][0] ) && !empty( $post_meta['gw_go_portfolio_thumbnail_soundcloud_audio_c'][0] ) ?
( mb_strlen( $post_meta['gw_go_portfolio_thumbnail_soundcloud_audio_c'][0] = preg_replace( '/[^0-9a-f]/','', $post_meta['gw_go_portfolio_thumbnail_soundcloud_audio_c'][0] ) ) == 6 ? $post_meta['gw_go_portfolio_thumbnail_soundcloud_audio_c'][0] : '0' ) : '0';
$media_embed = '<iframe src="//w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F'. $post_meta['gw_go_portfolio_thumbnail_soundcloud_audio_id'][0] . '&color=' . $color . '&show_artwork=true&wmode=opaque" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>';
} elseif ( isset( $post_meta['gw_go_portfolio_thumb_audio_type'][0] ) && $post_meta['gw_go_portfolio_thumb_audio_type'][0]== 'mixcloud_audio' && isset( $post_meta['gw_go_portfolio_thumbnail_mixcloud_audio_id'][0] ) ) {
$post_meta['gw_go_portfolio_thumbnail_mixcloud_audio_h'][0] = isset( $post_meta['gw_go_portfolio_thumbnail_mixcloud_audio_h'][0] ) && !empty( $post_meta['gw_go_portfolio_thumbnail_mixcloud_audio_h'][0] ) ? floatval( $post_meta['gw_go_portfolio_thumbnail_mixcloud_audio_h'][0] ) : null;
$height = $post_meta['gw_go_portfolio_thumbnail_mixcloud_audio_h'][0] && !empty( $post_meta['gw_go_portfolio_thumbnail_mixcloud_audio_h'][0] ) ? $post_meta['gw_go_portfolio_thumbnail_mixcloud_audio_h'][0] : null;
$color = isset( $post_meta['gw_go_portfolio_thumbnail_mixcloud_audio_c'][0] ) && !empty( $post_meta['gw_go_portfolio_thumbnail_mixcloud_audio_c'][0] ) ?
( mb_strlen( $post_meta['gw_go_portfolio_thumbnail_mixcloud_audio_c'][0] = preg_replace( '/[^0-9a-f]/','', $post_meta['gw_go_portfolio_thumbnail_mixcloud_audio_c'][0] ) ) == 6 ? $post_meta['gw_go_portfolio_thumbnail_mixcloud_audio_c'][0] : '0' ) : '0';
$media_embed = '<iframe src="//www.mixcloud.com/widget/iframe/?feed='. urlencode( trim( $post_meta['gw_go_portfolio_thumbnail_mixcloud_audio_id'][0], '/' ) ) . '%2F&show_tracklist=&stylecolor=' . $color . '&wmode=opaque" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>';
} elseif ( isset( $post_meta['gw_go_portfolio_thumb_audio_type'][0] ) && $post_meta['gw_go_portfolio_thumb_audio_type'][0]== 'beatport_audio' && isset( $post_meta['gw_go_portfolio_thumbnail_beatport_audio_id'][0] ) ) {
$post_meta['gw_go_portfolio_thumbnail_beatport_audio_h'][0] = isset( $post_meta['gw_go_portfolio_thumbnail_beatport_audio_h'][0] ) && !empty( $post_meta['gw_go_portfolio_thumbnail_beatport_audio_h'][0] ) ? floatval( $post_meta['gw_go_portfolio_thumbnail_beatport_audio_h'][0] ) : null;
$height = $post_meta['gw_go_portfolio_thumbnail_beatport_audio_h'][0] && !empty( $post_meta['gw_go_portfolio_thumbnail_beatport_audio_h'][0] ) ? $post_meta['gw_go_portfolio_thumbnail_beatport_audio_h'][0] : null;
$media_embed = '<iframe src="http://embed.beatport.com/player?id=' . $post_meta['gw_go_portfolio_thumbnail_beatport_audio_id'][0] . '&type=track&wmode=opaque" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>';
}
}
$media_mw_style = '';
if ( $height ) {
$media_mw_style = ' style="height:' . $height . 'px;"';
} else {
$media_mw_style = ' style="padding-bottom:' . $media_ratio * 100 . '%;"';
}
if ( empty( $template_data['post_media'] ) ) { $template_data['post_media'] = '<div class="gw-gopf-post-media-wrap"' . $media_mw_style . '">' . $media_embed . '</div>'; }
}
/* 6. Post title - Cut title if max length property is set */
$template_data['post_title'] = trim( get_the_title() );
$portfolio['title-length'] = floatval( $portfolio['title-length'] );
if ( isset( $portfolio['title-length'] ) && !empty( $portfolio['title-length'] ) ) {
if ( mb_strlen( $template_data['post_title'] ) > $portfolio['title-length'] ) { $template_data['post_title'] = mb_substr ( get_the_title(), 0, $portfolio['title-length'] ) . ''; }
}
/* 7. Post date */
$template_data['post_date'] = apply_filters( 'go_portfolio_date_format', date_i18n( get_option( 'date_format' ), get_post_time( 'U', true ) ), $portfolio['id'] );
/* 8. Post excerpt - custom excerpt */
$excerpt_src = isset( $portfolio['excerpt-src'] ) && !empty ( $portfolio['excerpt-src'] ) ? $portfolio['excerpt-src'] : 'content';
$post_content_src = $excerpt_src == 'content' ? $post->post_content : get_the_excerpt();
$strip_shortcodes = isset( $portfolio['excerpt-strip-sc'] ) ? true : false;
$strip_html = isset( $portfolio['excerpt-strip-html'] ) ? true : false;
$allowed_tags = isset( $portfolio['excerpt-allowed-tags'] ) ? trim( $portfolio['excerpt-allowed-tags'] ) : '';
$excerpt_more = isset( $portfolio['excerpt-more'] ) ? trim( $portfolio['excerpt-more'] ) : '...';
$loop_excerpt_length = isset( $portfolio['excerpt-length'] ) && !empty ( $portfolio['excerpt-length'] ) ? $portfolio['excerpt-length'] : null;
/* Post content without <!--more--> tag */
if ( !strpos( $post->post_content, '<!--more-->') ) {
$content = go_portfolio_wp_trim_excerpt( $post_content_src, $loop_excerpt_length, $excerpt_more, $strip_shortcodes, $strip_html, $allowed_tags );
} else {
/* Post content with <!--more--> tag */
if ( $portfolio['excerpt-src'] == 'content' ) {
$post_content_src = substr( $post_content_src, 0, strpos( $post_content_src, '<!--more-->' ) );
}
$content = go_portfolio_wp_trim_excerpt( $post_content_src, $loop_excerpt_length, $excerpt_more, $strip_shortcodes, $strip_html, $allowed_tags );
}
$template_data['post_excerpt'] = $content;
/* 9. Post button text */
if ( isset( $template_data['post_button_text'] ) ) { unset( $template_data['post_button_text'] ); }
$template_data['post_button_text'] = $portfolio['post-button-text'];
/* 10. Post button style */
if ( isset( $template_data['post_button_style'] ) ) { unset( $template_data['post_button_style'] ); }
$template_data['post_button_style'] = $portfolio['post_button_style'];
/* 11. Post link target */
$template_data['post_link_target'] = isset( $post_meta['gw_go_portfolio_post_link_target'][0] ) ? '_blank' : '_self';
/* 12. Post ID */
$template_data['post_id'] = $post->ID;
/* 13. Post author */
$template_data['post_author'] = get_the_author();
/* WooCommerce template parts */
if ( defined( 'WOOCOMMERCE_VERSION' ) && isset( $query_post_type ) && $query_post_type=='product' ) {
/* 14.1. Add to Cart button */
//$template_data['woo_add_to_cart'] = do_shortcode('[add_to_cart_url id="' . $post->ID . '"]');
$shop_page_url = get_permalink( woocommerce_get_page_id( 'shop' ) );
$template_data['woo_add_to_cart'] = $shop_page_url . '?add-to-cart=' . $post->ID;
if ( $woo_is_variation ) { $template_data['woo_add_to_cart'] = $post_link; }
/* 14.2. Price */
$sale_price = $woo_product->is_on_sale();
$regular_price = '';
$template_data['woo_price'] = $template_data['woo_price'] = $woo_product->get_price_html();
/* 14.3. On Sale */
if ( !empty ( $sale_price ) ) {
// for future use: $template_data['woo_on_sale'] = isset( $portfolio['woo_on_sale'] ) && !empty( $portfolio['woo_on_sale'] ) ? '<div class="gw-gopf-circle gw-gopf-woo-sale">' . $portfolio['woo_on_sale'] . '</div>': 'SALE';
$template_data['woo_on_sale'] = '<div class="gw-gopf-woo-sale">' . __( 'SALE', 'go_portfolio_textdomain' ) . '</div>';
} else {
$template_data['woo_on_sale'] = '';
}
}
/* Replace template */
$template = preg_replace( '/\r\n+|\r+|\n+|\t+/i', '', $template);
$template = preg_replace( '#<p>\s*+(<br\s*/*>)?\s*</p>#i', '', $template);
$replaced_template = $template;
foreach( $template_data as $key => $value ) {
$value = addcslashes ($value, '$');
$replaced_template = preg_replace( '/(\{\{)\s?('.$key.'+\s?)(\}\})/', $value, $replaced_template );
}
$replaced_template = preg_replace( '/(\{\{)\s?(.+\s?)(\}\})/', '', $replaced_template );
echo $replaced_template;
?>
</div>
</div>
<?php
endwhile;
$new_wp_query = null;
wp_reset_postdata();
?>
</div>
</div>
</div>
<?php
/* Pagination */
/* Get pagination type */
if ( isset( $portfolio['pagination-type'] ) && $portfolio['pagination-type'] == 'load-more' ) {
$load_more_button_text = isset( $portfolio['load-more-button-text'] ) && !empty( $portfolio['load-more-button-text'] ) ? $portfolio['load-more-button-text'] : 'Load More';
$load_more_button_loading_text = isset( $portfolio['load-more-button-loading-text'] ) && !empty( $portfolio['load-more-button-loading-text'] ) ? $portfolio['load-more-button-loading-text'] : 'Loading...';
$button_src = '<a href="#" class="gw-gopf-pagination-load-more' . esc_attr( isset( $portfolio['load-more-button-style'] ) && !empty( $portfolio['load-more-button-style'] ) ? ' ' . $portfolio['load-more-button-style'] : '' ) . '" data-original="' . esc_attr( $load_more_button_text ) . '" data-modified="' . esc_attr( $load_more_button_loading_text ) . '">' . $load_more_button_text . '</a>';
}
?>
<div class="gw-gopf-clearfix"></div>
<div class="gw-gopf-pagination-wrapper gw-gopf-clearfix<?php echo ( isset( $portfolio['pagination-align'] ) && !empty( $portfolio['pagination-align'] ) ? ' '. $portfolio['pagination-align'] : '' ); ?>" data-posts="<?php echo esc_attr( $posts_count );?>" data-posts-per-page="<?php echo esc_attr( $post_per_page );?>" data-loaded="<?php echo implode( ',', $all_post_ids ); ?>" data-pages="<?php echo esc_attr( $pages_count );?>" data-current-page="<?php echo esc_attr( $current_page );?>" data-current-id="<?php echo isset( $portfolio['exclude-current'] ) ? $post->ID : '' ; ?>">
<?php
if ( isset( $portfolio['pagination'] ) && $layout_type == 'grid' && $pages_count > 1 ) :
?>
<div class="gw-gopf-pagination">
<?php echo $button_src; ?>
</div>
<?php
endif;
?>
</div>
<?php
if ( !isset( $portfolio['filter-v-pos'] ) || ( isset( $portfolio['filter-v-pos'] ) && $portfolio['filter-v-pos'] == 'top') ) {
$portfolio_posts_content = ob_get_contents();
ob_end_clean();
}
?>
<?php
/* Portfolio filter */
$current_terms = array();
$filter_terms = array();
$term_count = array();
if ( !empty( $filter_tax ) && !empty( $arg_tax ) ) {
if ( $filter_tax == $arg_tax ) {
if ( isset( $arg_terms ) && empty( $arg_terms ) ) {
$filter_terms = $all_post_term_list;
if ( isset( $portfolio['post-type'] ) && $portfolio['post-type'] == 'attachment' && isset( $portfolio['gallery-query-method'] ) && $portfolio['gallery-query-method'] == 'visual' ) {
$current_terms = get_terms( $filter_tax, 'include=' . implode ( ',', $filter_terms ) );
$term_count = array_count_values( $filter_terms );
} else {
$current_terms = get_terms( $filter_tax, '' );
}
} else {
$current_terms = get_terms( $filter_tax, 'include=' . implode ( ',', $arg_terms ) );
$filter_terms = $all_post_term_list;
}
} else {
$current_terms = get_terms( $filter_tax, '' );
$filter_terms = $all_post_term_list;
}
}
if ( isset( $portfolio['filterable'] ) && $layout_type == 'grid' ) :
if ( isset( $current_terms ) && !empty( $current_terms ) && !isset( $current_terms->errors ) ) :
?>
<div data-tax="<?php echo esc_attr( $filter_tax ); ?>" class="gw-gopf-filter gw-gopf-clearfix <?php echo ( isset( $portfolio['filter-align'] ) && !empty( $portfolio['filter-align'] ) ? ' '. $portfolio['filter-align'] : '' ); ?>">
<div class="gw-gopf-cats">
<span data-count="<?php echo esc_attr( $posts_count ); ?>" class="gw-gopf-current"><a href="#"<?php echo ( isset( $portfolio['filter-current-tag-style'] ) && !empty( $portfolio['filter-current-tag-style'] ) ? 'class="' . $portfolio['filter-current-tag-style'] . '"' : '' ); ?>><?php echo ( isset( $portfolio['filter-all-text'] ) && !empty( $portfolio['filter-all-text'] ) ? $portfolio['filter-all-text'] : 'All' ); ?></a></span><?php
foreach ( $current_terms as $current_term ) :
?><span data-count="<?php echo esc_attr( isset( $term_count[$current_term->term_id] ) ? $term_count[$current_term->term_id] : $current_term->count ); ?>" data-filter="<?php echo esc_attr( $current_term->slug ); ?>" class="<?php echo isset( $filter_terms ) && is_array( $filter_terms ) && in_array($current_term->term_id, $filter_terms) ? '' : ( !isset( $portfolio['pagination'] ) || isset( $portfolio['pagination'] ) && empty( $portfolio['post-count'] ) ? 'gw-gopf-hidden' : '' ) ?>"><a href="#"<?php echo ( isset( $portfolio['filter-tag-style'] ) && !empty( $portfolio['filter-tag-style'] ) ? 'class="' . $portfolio['filter-tag-style'] . '"' : '' ); ?>><?php echo $current_term->name; ?></a></span><?php
endforeach;
?>
</div>
</div>
<div class="gw-gopf-clearfix"></div>
<?php
endif;
endif;
/* /Portfolio filter */
?>
<?php
if ( !isset( $portfolio['filter-v-pos'] ) || ( isset( $portfolio['filter-v-pos'] ) && $portfolio['filter-v-pos'] == 'top') ) {
echo $portfolio_posts_content;
}
?>
</div>
</div>
<?php
/* return shorcode */
$shortcode_content = ob_get_contents();
$shortcode_content = do_shortcode( $shortcode_content );
$shortcode_content = preg_replace( '/\r\n+|\r+|\n+|\t+/i', '', $shortcode_content);
$shortcode_content = preg_replace( '#<p>\s*+(<br\s*/*>)?\s*</p>#i', '', $shortcode_content);
ob_end_clean();
return $css_style . $shortcode_content;
break;
} else {
/* If custom post type doesn't exist */
return '<p>' . sprintf( __( 'Post type with a slug of "%s" is not registered.', 'go_portfolio_textdomain' ), $portfolio['post-type'] ) . '</p>';
}
}
}
}
/* If the id doesn't exist */
return '<p>' . sprintf( __( 'Portfolio with an id of "%s" is not defined.', 'go_portfolio_textdomain' ), $id ) . '</p>';
}
}
}