PluginProbe ʕ •ᴥ•ʔ
Advanced Custom Fields: Extended / 0.9.2.7
Advanced Custom Fields: Extended v0.9.2.7
0.9.2.7 0.9.2.6 0.9.2.5 0.8.6 0.8.6.1 0.8.6.3 0.8.6.5 0.8.6.6 0.8.6.7 0.8.6.8 0.8.6.9 0.8.7 0.8.7.1 0.8.7.2 0.8.7.3 0.8.7.4 0.8.7.5 0.8.7.6 0.8.8 0.8.8.1 0.8.8.10 0.8.8.11 0.8.8.2 0.8.8.3 0.8.8.4 0.8.8.5 0.8.8.6 0.8.8.7 0.8.8.8 0.8.8.9 0.8.9 0.8.9.1 0.8.9.2 0.8.9.3 0.8.9.4 0.8.9.5 0.9 0.9.0.1 0.9.0.2 0.9.0.3 0.9.0.4 0.9.0.5 0.9.0.6 0.9.0.7 0.9.0.8 0.9.0.9 0.9.1 0.9.1.1 0.9.2 0.9.2.1 0.9.2.2 0.9.2.3 0.9.2.4 trunk 0.5 0.5.1 0.5.2 0.5.2.1 0.5.2.3 0.5.5 0.5.5.1 0.5.8 0.5.8.1 0.6 0.6.0.1 0.6.0.2 0.6.1 0.6.3 0.6.5 0.6.7 0.6.7.2 0.7 0.7.0.3 0.7.5 0.7.5.5 0.7.8 0.7.9 0.7.9.3 0.7.9.4 0.7.9.9.8 0.7.9.9.9 0.8 0.8.1 0.8.2 0.8.3 0.8.3.1 0.8.4 0.8.4.1 0.8.4.5 0.8.4.6 0.8.5 0.8.5.5
acf-extended / includes / modules / post-type / module-post-type-features.php
acf-extended / includes / modules / post-type Last commit date
module-post-type-features.php 3 months ago module-post-type-fields.php 3 years ago module-post-type-upgrades.php 3 years ago module-post-type.php 3 months ago
module-post-type-features.php
366 lines
1 <?php
2
3 if(!defined('ABSPATH')){
4 exit;
5 }
6
7
8 if(!class_exists('acfe_module_post_type_features')):
9
10 class acfe_module_post_type_features{
11
12 /**
13 * construct
14 */
15 function __construct(){
16
17 add_action('admin_footer-edit.php', array($this, 'admin_footer'));
18 add_action('pre_get_posts', array($this, 'admin_archive_posts'), 9); // use 9 to let developers use 10 to override
19 add_filter('edit_posts_per_page', array($this, 'admin_archive_ppp'), 10, 2);
20 add_action('pre_get_posts', array($this, 'front_archive_posts'), 9); // use 9 to let developers use 10 to override
21 add_filter('template_include', array($this, 'front_template'), 999);
22 add_filter('post_updated_messages', array($this, 'post_updated_messages'));
23 add_filter('enter_title_here', array($this, 'enter_title_here'), 10, 2);
24
25 }
26
27
28 /**
29 * admin_footer
30 *
31 * admin_footer-edit.php
32 */
33 function admin_footer(){
34
35 // verify permissions
36 if(!acf_current_user_can_admin()){
37 return;
38 }
39
40 // get current post type
41 global $typenow;
42 if(!$typenow){
43 return;
44 }
45
46 // get post type object
47 $post_type_object = get_post_type_object($typenow);
48
49 // check if it's a post type managed by acfe
50 if(!isset($post_type_object->acfe_archive_ppp)){
51 return;
52 }
53
54 // get item
55 $item = acfe_get_module('post_type')->get_item($typenow, 'db');
56 if(!$item){
57 return;
58 }
59
60 ?>
61 <script type="text/html" id="tmpl-acfe-edit-module">
62 <a href="<?php echo admin_url("post.php?post={$item['ID']}&action=edit"); ?>" class="page-title-action acfe-edit-module-button"><span class="dashicons dashicons-admin-generic"></span></a>
63 </script>
64 <script type="text/javascript">
65 (function($){
66 $('.wrap .page-title-action').before($('#tmpl-acfe-edit-module').html());
67 })(jQuery);
68 </script>
69 <?php
70
71 }
72
73
74 /**
75 * admin_archive_posts
76 *
77 * pre_get_posts
78 *
79 * @param $query
80 */
81 function admin_archive_posts($query){
82
83 global $pagenow;
84
85 if(!is_admin() || !$query->is_main_query() || $pagenow !== 'edit.php'){
86 return;
87 }
88
89 $post_type = $query->get('post_type');
90 $object = get_post_type_object($post_type);
91
92 $admin_order_by = acfe_get($object, 'acfe_admin_orderby');
93 $admin_order = acfe_get($object, 'acfe_admin_order');
94 $admin_meta_key = acfe_get($object, 'acfe_admin_meta_key');
95 $admin_meta_type = acfe_get($object, 'acfe_admin_meta_type');
96
97 if($admin_order_by && !acfe_maybe_get_REQUEST('orderby')){
98 $query->set('orderby', $admin_order_by);
99 }
100
101 if($admin_order && !acfe_maybe_get_REQUEST('order')){
102 $query->set('order', $admin_order);
103 }
104
105 if($admin_meta_key && !acfe_maybe_get_REQUEST('meta_key')){
106 $query->set('meta_key', $admin_meta_key);
107 }
108
109 if($admin_meta_type && !acfe_maybe_get_REQUEST('meta_type')){
110 $query->set('meta_type', $admin_meta_type);
111 }
112
113 }
114
115
116 /**
117 * admin_archive_ppp
118 *
119 * edit_posts_per_page
120 *
121 * @param $ppp
122 * @param $post_type
123 *
124 * @return mixed
125 */
126 function admin_archive_ppp($ppp, $post_type){
127
128 global $pagenow;
129 if($pagenow !== 'edit.php'){
130 return $ppp;
131 }
132
133 $object = get_post_type_object($post_type);
134 $admin_ppp = acfe_get($object, 'acfe_admin_ppp');
135 $user_ppp = get_user_option("edit_{$post_type}_per_page");
136
137 if(!$admin_ppp || !empty($user_ppp)){
138 return $ppp;
139 }
140
141 return $admin_ppp;
142
143 }
144
145
146 /**
147 * front_archive_posts
148 *
149 * pre_get_posts:9
150 *
151 * @param $query
152 */
153 function front_archive_posts($query){
154
155 if(is_admin() || !$query->is_main_query() || !is_post_type_archive()){
156 return;
157 }
158
159 $post_type = $query->get('post_type');
160 $object = get_post_type_object($post_type);
161
162 $archive_ppp = acfe_get($object, 'acfe_archive_ppp');
163 $archive_orderby = acfe_get($object, 'acfe_archive_orderby');
164 $archive_order = acfe_get($object, 'acfe_archive_order');
165 $archive_meta_key = acfe_get($object, 'acfe_archive_meta_key');
166 $archive_meta_type = acfe_get($object, 'acfe_archive_meta_type');
167
168 if($archive_ppp){
169 $query->set('posts_per_page', $archive_ppp);
170 }
171
172 if($archive_orderby){
173 $query->set('orderby', $archive_orderby);
174 }
175
176 if($archive_order){
177 $query->set('order', $archive_order);
178 }
179
180 if($archive_meta_key){
181 $query->set('meta_key', $archive_meta_key);
182 }
183
184 if($archive_meta_type){
185 $query->set('meta_type', $archive_meta_type);
186 }
187
188 }
189
190
191 /**
192 * front_template
193 *
194 * template_include
195 *
196 * @param $template
197 *
198 * @return mixed|string
199 */
200 function front_template($template){
201
202 if(!is_single() && !is_post_type_archive() && !is_home()){
203 return $template;
204 }
205
206 // Get_query_var
207 $query_var = get_query_var('post_type', false);
208
209 if(is_array($query_var) && !empty($query_var)){
210 $query_var = $query_var[0];
211 }
212
213 foreach(get_post_types(array(), 'objects') as $post_type){
214
215 // Get_query_var check
216 $is_query_var = $query_var && $query_var === $post_type->name;
217
218 // Get_post_type check
219 $get_post_type = get_post_type() === $post_type->name;
220
221 // Acfe_archive_template
222 $acfe_archive_template = isset($post_type->acfe_archive_template) && !empty($post_type->acfe_archive_template);
223
224 // Acfe_archive_template
225 $acfe_single_template = isset($post_type->acfe_single_template) && !empty($post_type->acfe_single_template);
226
227 // Global check
228 if(!$get_post_type || !$is_query_var || (!$acfe_archive_template && !$acfe_single_template)){
229 continue;
230 }
231
232 $rule = array();
233 $rule['is_archive'] = is_post_type_archive($post_type->name);
234 $rule['has_archive'] = $post_type->has_archive;
235 $rule['is_single'] = is_singular($post_type->name);
236
237 // Post Exception
238 if($post_type->name === 'post'){
239 $rule['is_archive'] = is_home();
240 $rule['has_archive'] = true;
241 }
242
243 // Archive
244 if($rule['has_archive'] && $rule['is_archive'] && $acfe_archive_template && ($locate = locate_template(array($post_type->acfe_archive_template)))){
245 return $locate;
246 }
247
248 // Single
249 elseif($rule['is_single'] && $acfe_single_template && ($locate = locate_template(array($post_type->acfe_single_template)))){
250 return $locate;
251 }
252
253 }
254
255 return $template;
256
257 }
258
259
260 /**
261 * post_updated_messages
262 *
263 * post_updated_messages
264 *
265 * @param $messages
266 *
267 * @return array|mixed
268 */
269 function post_updated_messages($messages){
270
271 // globals
272 global $post_type, $post_type_object, $post;
273
274 // post type not managed by acfe
275 if(!isset($post_type_object->acfe_archive_ppp)){
276 return $messages;
277 }
278
279 // vars
280 $viewable = is_post_type_viewable($post_type_object);
281 $preview_url = get_preview_post_link($post);
282 $permalink = get_permalink($post->ID);
283 if(!$permalink){
284 $permalink = '';
285 }
286
287 // default links
288 $preview_post_link_html = '';
289 $scheduled_post_link_html = '';
290 $view_post_link_html = '';
291
292 if($viewable){
293
294 $view_item = __('View post');
295 $preview_item = __('Preview post');
296
297 if(isset($post_type_object->labels->view_item)){
298 $view_item = $post_type_object->labels->view_item;
299 $preview_item = $post_type_object->labels->view_item;
300 }
301
302 $preview_post_link_html = sprintf(' <a target="_blank" href="%1$s">%2$s</a>', esc_url($preview_url), $preview_item);
303 $scheduled_post_link_html = sprintf(' <a target="_blank" href="%1$s">%2$s</a>', esc_url($permalink), $preview_item);
304 $view_post_link_html = sprintf(' <a href="%1$s">%2$s</a>', esc_url($permalink), $view_item);
305
306 }
307
308 $scheduled_date = sprintf(
309 __('%1$s at %2$s'),
310 date_i18n(_x('M j, Y', 'publish box date format'), strtotime($post->post_date)),
311 date_i18n(_x('H:i', 'publish box time format'), strtotime($post->post_date))
312 );
313
314 if(isset($post_type_object->labels->item_updated)){
315 $messages[ $post_type ][1] = $post_type_object->labels->item_updated . $view_post_link_html;
316 $messages[ $post_type ][4] = $post_type_object->labels->item_updated;
317 $messages[ $post_type ][7] = $post_type_object->labels->item_updated;
318 $messages[ $post_type ][8] = $post_type_object->labels->item_updated . $preview_post_link_html;
319 $messages[ $post_type ][10] = $post_type_object->labels->item_updated . $preview_post_link_html;
320 }
321
322 if(isset($post_type_object->labels->item_published)){
323 $messages[ $post_type ][6] = $post_type_object->labels->item_published . $view_post_link_html;
324 }
325
326 if(isset($post_type_object->labels->item_scheduled)){
327 $messages[ $post_type ][9] = $post_type_object->labels->item_scheduled . ' <strong>' . $scheduled_date . '</strong>' . $scheduled_post_link_html;
328 }
329
330 // return
331 return $messages;
332
333 }
334
335
336 /**
337 * enter_title_here
338 *
339 * enter_title_here
340 *
341 * @param $placeholder
342 * @param $post
343 *
344 * @return mixed
345 */
346 function enter_title_here($placeholder, $post){
347
348 if(isset($post->post_type)){
349
350 $post_type_obj = get_post_type_object($post->post_type);
351
352 if(isset($post_type_obj->labels->enter_title)){
353 return $post_type_obj->labels->enter_title;
354 }
355
356 }
357
358 return $placeholder;
359
360 }
361
362 }
363
364 new acfe_module_post_type_features();
365
366 endif;