-
Notifications
You must be signed in to change notification settings - Fork 0
/
vinerz-banners.php
145 lines (129 loc) · 5.25 KB
/
vinerz-banners.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
<?php
/*
Plugin Name: VinerzZ's Banners
Plugin URI: http://www.legiaodosherois.com.br/
Description: Sistema de banners simples
Author: Vinicius Tavares
Version: 1.0.0
Author URI: http://vinerz.net/
*/
require_once( __DIR__ . '/util.php' );
if( !class_exists('VBanners') ) {
class VBanners {
private static $__instance = NULL;
private function __clone() {}
protected function __construct() {
add_action( 'init', array(&$this, 'banners_posttype') );
add_action( 'init', array(&$this, 'cmb_initialize_cmb_meta_boxes'), 9999 );
add_filter( 'cmb_meta_boxes', array(&$this, 'banners_metaboxes') );
}
static public function getInstance() {
if(self::$__instance == NULL) self::$__instance = new VBanners;
return self::$__instance;
}
function banners_posttype() {
register_post_type(
'banner',
array(
'public' => true,
'publicy_queryable' => true,
'capability_type' => 'post',
'query_var' => true,
'hierarchical' => false,
'show_ui' => true,
'has_archive' => false,
'menu_position' => 5,
'menu_icon' => 'dashicons-images-alt2',
'with_front' => true,
'supports' => array( 'title', 'author' ),
'taxonomies' => array(),
'labels' => array(
'name' => 'Banners',
'singular_name' => 'Banner',
'add_new' => 'Adicionar Novo',
'add_new_item' => 'Adicionar Novo Banner',
'edit' => 'Editar',
'edit_item' => 'Editar Banner',
'new_item' => 'Novo Banner',
'view' => 'Ver Banner',
'view_item' => 'Ver Banner',
'search_items' => 'Pesquisar Banner',
'not_found' => 'Nenhum banner encontrado.',
'not_found_in_trash' => 'Nenhum banner encontrado na lixeira.'
),
)
);
}
function banners_metaboxes( array $meta_boxes ) {
$prefix = '_vin_';
$meta_boxes['banners_editor'] = array(
'id' => $prefix . 'banners_editor',
'title' => 'Painel de edição de Banner',
'pages' => array( 'banner' ),
'priority' => 'high',
'fields' => array(
array(
'name' => 'Imagem',
'id' => $prefix . 'cover',
'type' => 'file',
'description' => 'Escolha a imagem do Banner.'
),
array(
'name' => 'Descrição',
'description' => 'Escreva a descrição do banner',
'id' => $prefix . 'description',
'type' => 'wysiwyg',
'options' => array( 'textarea_rows' => 3 )
),
array(
'name' => 'Link',
'id' => $prefix . 'link',
'type' => 'text'
),
array(
'name' => 'Target',
'id' => $prefix . 'target',
'type' => 'radio',
'options' => array(
'_blank' => '_blank',
'_self' => '_self',
'_parent' => '_parent',
'_top' => '_top'
),
),
)
);
return $meta_boxes;
}
function cmb_initialize_cmb_meta_boxes() {
if ( ! class_exists( 'cmb_Meta_Box' ) )
require_once( __DIR__ . '/framework/init.php' );
}
function listBanners( $qty = 3 ) {
$args = array(
'post_type' => 'banner',
'posts_per_page' => (int) $qty,
);
$query = new WP_Query( $args );
$banners = $query->posts;
$result = array();
foreach( $banners as $banner ) {
$result[] = array(
'title' => $banner->post_title,
'image' => get_post_meta( $banner->ID, '_vin_cover', true ),
'desc' => get_post_meta( $banner->ID, '_vin_description', true ),
'link' => get_post_meta( $banner->ID, '_vin_link', true ),
'target' => get_post_meta( $banner->ID, '_vin_target', true )
);
}
return $result;
}
}
}
$vbanners = VBanners::getInstance();
if( !function_exists('vb_get_banners') ) {
function vb_get_banners() {
$vbanners = VBanners::getInstance();
return $vbanners->listBanners();
}
}