settings = array(
'plugin_path' => plugin_dir_path(__FILE__),
'plugin_url' => plugin_dir_url(__FILE__),
'plugin_base' => dirname(plugin_basename(__FILE__)),
'plugin_file' => __FILE__,
'plugin_version' => self::version,
'image_size_width' => 300,
'image_size_height' => 300,
'image_size_crop' => true,
);
$this->pirate_crew_load_textdomain();
$this->pirate_crew_start();
$this->pirate_crew_backend();
$this->pirate_crew_add_shortcodes();
}
/*--------------------------------------------------------------------*/
/* Load Textdomain
/*--------------------------------------------------------------------*/
public function pirate_crew_load_textdomain() {
load_plugin_textdomain('pirate-crew', false, $this->settings['plugin_base'] . '/language');
}
/*--------------------------------------------------------------------*/
/* Activation
/*--------------------------------------------------------------------*/
public static function activation() {
self::version_compare();
flush_rewrite_rules(); // Flush Rewrite-Regeln, so dass CPT und CT auf dem Front-End sofort vorhanden sind
}
/*--------------------------------------------------------------------*/
/* deactivate plugin
/*--------------------------------------------------------------------*/
public static function deactivation() {
flush_rewrite_rules(); // Flush Rewrite-Regeln, so dass CPT und CT auf dem Front-End sofort vorhanden sind
}
/*--------------------------------------------------------------------*/
/* Checking Versions
/*--------------------------------------------------------------------*/
private static function version_compare() {
$error = '';
if (version_compare(PHP_VERSION, self::php_version, '<')) {
$error = sprintf('Your version of PHP (%s) is too old. Please update at least to version %s.', PHP_VERSION, self::php_version);
}
if (version_compare($GLOBALS['wp_version'], self::wp_version, '<')) {
$error = sprintf('Your version of WordPress (%s) is too old. Please upgrade at least to version %s.', $GLOBALS['wp_version'], self::wp_version);
}
if (!empty($error)) {
deactivate_plugins(plugin_basename(__FILE__), false, true);
wp_die($error);
}
}
/*--------------------------------------------------------------------*/
/* Main
/*--------------------------------------------------------------------*/
public function pirate_crew_start() {
add_action('init', array( $this, 'create_member_support' ));
add_action('init', array( $this, 'pirate_crew_image_size' ));
add_action('wp_enqueue_scripts', array( $this, 'embed_front_script_styles' ));
}
/*--------------------------------------------------------------------*/
/* Define Image Size for crew member thumbnail
/*--------------------------------------------------------------------*/
public function pirate_crew_image_size(){
if ( function_exists( 'add_image_size' ) ) {
add_image_size('pirate_crew', $this->settings['image_size_width'], $this->settings['image_size_height'], $this->settings['image_size_crop']);
}
}
/*--------------------------------------------------------------------*/
/* Defines Shortcodes
/*--------------------------------------------------------------------*/
public function pirate_crew_add_shortcodes() {
add_shortcode('pirate', array( $this, 'pirate_team_member_shortcode' ));
add_shortcode('crew', array( $this, 'pirate_crew_shortcodes' ));
}
public function pirate_crew_shortcodes($atts) {
include('shortcodes/crew.php');
return $out;
}
public function pirate_team_member_shortcode($atts) {
require('shortcodes/member.php');
return $out;
}
/*--------------------------------------------------------------------*/
/* Register Scripts and CSS
/*--------------------------------------------------------------------*/
public function embed_front_script_styles() {
$my_theme = wp_get_theme();
$my_theme_name = $my_theme->get( 'Name' );
if (!in_array($my_theme_name, Pirate_Crew::$themeswithowncss)) {
wp_enqueue_script('pirate-crew', plugins_url('js/team.min.js', $this->settings['plugin_file']), array('jquery'), $this->settings['plugin_version'], true);
wp_enqueue_style('pirate-crew', plugins_url('css/team.css', $this->settings['plugin_file']), false, $this->settings['plugin_version'], 'all');
}
}
/*--------------------------------------------------------------------*/
/* Create Custom Post Type
/*--------------------------------------------------------------------*/
public function create_member_support() {
// Create pirate_crew_member post type
if (post_type_exists("pirate_crew_member")) {
return;
}
$labels = array(
'name' => __('Pirate Crew Member', 'pirate-crew'),
'singular_name' => __('Pirate Crew Member', 'pirate-crew'),
'menu_name' => __('Pirate Crews', 'pirate-crew'),
'add_new' => __('Add New Member', 'pirate-crew'),
'add_new_item' => __('Add New Member', 'pirate-crew'),
'new_item' => __('New Crew Member', 'pirate-crew'),
'edit_item' => __('Edit Crew Member', 'pirate-crew'),
'view_item' => __('View Crew Member', 'pirate-crew'),
'all_items' => __('Members', 'pirate-crew'),
'search_items' => __('Search Crew Members', 'pirate-crew'),
'not_found' => __('No crew members found.', 'pirate-crew'),
'not_found_in_trash' => __('No crew members found in trash.', 'pirate-crew')
);
$cp_args = array(
'labels' => $labels,
'description' => __('This is where you can create and manage crew members.', 'pirate-crew'),
'publicly_queryable' => false,
'show_ui' => true,
'show_in_menu' => true,
'capability_type' => 'post',
'supports' => array('title','editor', 'thumbnail' ),
'menu_icon' => 'dashicons-admin-users'
);
register_post_type('pirate_crew_member', $cp_args);
if (post_type_exists("pirate_crew")) {
return;
}
$labels = array(
'name' => __('Pirate Crew', 'pirate-crew'),
'singular_name' => __('Pirate Crew', 'pirate-crew'),
'menu_name' => __('Pirate Crews', 'pirate-crew'),
'add_new' => __('Add New Crew', 'pirate-crew'),
'add_new_item' => __('Add New Crew', 'pirate-crew'),
'new_item' => __('New Crew', 'pirate-crew'),
'edit_item' => __('Edit Crew', 'pirate-crew'),
'view_item' => __('View Crew', 'pirate-crew'),
'all_items' => __('Crews', 'pirate-crew'),
'search_items' => __('Search Crews', 'pirate-crew'),
'not_found' => __('No crews found.', 'pirate-crew'),
'not_found_in_trash' => __('No crews found in trash.', 'pirate-crew')
);
$cp_args = array(
'labels' => $labels,
'description' => __('This is where you can create and manage crews.', 'pirate-crew'),
'show_ui' => true,
"show_in_menu" => 'edit.php?post_type=pirate_crew_member',
'capability_type' => 'post',
'supports' => array('title')
);
register_post_type('pirate_crew', $cp_args);
}
/*--------------------------------------------------------------------*/
/* Admin Styles
/*--------------------------------------------------------------------*/
public function pirate_crew_backend() {
if (is_admin()) {
add_action('add_meta_boxes', array( $this, 'register_metaboxes' ));
add_action('save_post', array( $this, 'save_metabox_data' ), 10, 3);
add_action('admin_init', array( $this, 'meta_box_scripts' ));
add_action('admin_menu', array( $this, 'add_submenu_items' ), 12);
add_action('edit_form_after_title', array( $this, 'shortcode_preview' ));
add_filter('manage_pirate_crew_member_posts_columns' , array( $this, 'custom_columns_member' ));
add_action('manage_pirate_crew_member_posts_custom_column' , array( $this, 'custom_columns_member_data' ) , 10, 2 );
add_filter('manage_pirate_crew_posts_columns' , array( $this, 'custom_columns_team' ));
add_action('manage_pirate_crew_posts_custom_column' , array( $this, 'custom_columns_team_data' ) , 10, 2 );
add_filter('admin_post_thumbnail_size', array($this,'custom_admin_thumb_size'));
}
}
/*--------------------------------------------------------------------*/
/* Admin Thumb SIze
/*--------------------------------------------------------------------*/
function custom_admin_thumb_size($thumb_size){
global $post_type,$post;
if($post_type == 'pirate_crew_member'){
$thumb_size = "pirate_crew";
}
return $thumb_size;
}
/*--------------------------------------------------------------------*/
/* Crew Data
/*--------------------------------------------------------------------*/
function custom_columns_member($columns){
$columns = array(
'cb' => '',
'title' => __('Name','pirate-crew'),
'featured_image' => __('Photo','pirate-crew'),
'designation' => __('Position','pirate-crew'),
'date' => 'Date'
);
return $columns;
}
/*--------------------------------------------------------------------*/
/* Get Crew Member Data
/*--------------------------------------------------------------------*/
function custom_columns_member_data($column,$post_ID){
$options = $this->get_options('pirate_crew_member',$post_ID );
switch ( $column ) {
case 'featured_image':
echo the_post_thumbnail( 'thumbnail' );
break;
case 'designation':
echo $options['pirate-crew-designation'];
break;
}
}
/**
* Custom member column for team.
* @since 1.0
*/
function custom_columns_team($columns){
$columns = array(
'cb' => '',
'title' => __('Name','pirate-crew'),
'members' => __('Members','pirate-crew'),
'preset' => __('Preset','pirate-crew'),
'style' => __('Style','pirate-crew'),
'shortcode' =>__('Shortcode','pirate-crew')
);
return $columns;
}
/**
* Custom member column data for team.
* @since 1.0
*/
function custom_columns_team_data($column,$post_ID){
$options = $this->get_options('pirate_crew',$post_ID );
$post = get_post( $post_ID );
switch ( $column ) {
case 'members':
echo count($options['memberlist']);
break;
case 'preset':
echo $options['team-style'];
break;
case 'style':
echo $options['preset'];
break;
case 'shortcode':
printf('[crew id="%s"]',$post_ID);
break;
}
}
/*--------------------------------------------------------------------*/
/* Helper for Shortcodes
/*--------------------------------------------------------------------*/
public function shortcode_preview($post) {
if ('pirate_crew' == $post->post_type && 'publish' == $post->post_status) {
printf('
%1$s: [crew id="%2$s"]
%1$s: [pirate id="%2$s"]