Version Description
- Added User Columns.
- Added before / after text for custom fields
- Added custom field type 'Numeric'.
- Added custom field sortables.
- Fixed domain path
- Fixed settings link
Download this release
Release Info
Developer | codepress |
Plugin | Admin Columns |
Version | 1.1 |
Comparing to | |
See all releases |
Code changes from version 1.0 to 1.1
- codepress-admin-columns.php +638 -339
- languages/codepress-admin-columns-nl_NL.mo +0 -0
- languages/codepress-admin-columns-nl_NL.po +2 -149
- readme.txt +32 -10
- screenshot-1.png +0 -0
- screenshot-2.png +0 -0
- screenshot-3.png +0 -0
codepress-admin-columns.php
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<?php
|
2 |
/*
|
3 |
Plugin Name: Codepress Admin Columns
|
4 |
-
Version: 1.
|
5 |
-
Description: This plugin makes it easy to
|
6 |
-
Author:
|
7 |
Author URI: http://www.codepress.nl
|
8 |
Plugin URI: http://www.codepress.nl/plugins/codepress-admin-columns/
|
9 |
Text Domain: codepress-admin-columns
|
@@ -26,7 +26,7 @@ along with this program; if not, write to the Free Software
|
|
26 |
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
27 |
*/
|
28 |
|
29 |
-
define( 'CPAC_VERSION', '1.
|
30 |
|
31 |
/**
|
32 |
* Init Class
|
@@ -73,7 +73,7 @@ class Codepress_Admin_Columns
|
|
73 |
$this->handle_requests();
|
74 |
$this->options = get_option('cpac_options');
|
75 |
$this->options_default = get_option('cpac_options_default');
|
76 |
-
|
77 |
// slug
|
78 |
$this->slug = 'codepress-admin-columns';
|
79 |
$this->textdomain = 'codepress-admin-columns';
|
@@ -81,14 +81,15 @@ class Codepress_Admin_Columns
|
|
81 |
// translations
|
82 |
load_plugin_textdomain( $this->textdomain, false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
|
83 |
|
84 |
-
//
|
85 |
add_action( 'admin_menu', array( &$this, 'settings_menu') );
|
86 |
add_action( 'admin_init', array( &$this, 'register_settings') );
|
87 |
add_action( 'admin_init', array( &$this, 'register_columns' ) );
|
88 |
add_action( 'admin_enqueue_scripts', array( &$this, 'admin_enqueue_scripts') );
|
89 |
-
add_action( 'manage_pages_custom_column', array( &$this, '
|
90 |
-
add_action( 'manage_posts_custom_column', array( &$this, '
|
91 |
-
add_action( '
|
|
|
92 |
add_filter( 'request', array( &$this, 'handle_requests_orderby_column') );
|
93 |
add_filter( 'plugin_action_links', array( &$this, 'add_settings_link'), 10, 2);
|
94 |
}
|
@@ -140,187 +141,142 @@ class Codepress_Admin_Columns
|
|
140 |
*/
|
141 |
public function register_columns()
|
142 |
{
|
|
|
143 |
foreach ( $this->post_types as $post_type ) {
|
144 |
|
145 |
// register column per post type
|
146 |
-
add_filter("manage_edit-{$post_type}_columns", array(&$this, '
|
147 |
|
148 |
// register column as sortable
|
149 |
-
add_filter( "manage_edit-{$post_type}_sortable_columns", array(&$this, '
|
150 |
}
|
|
|
|
|
|
|
|
|
151 |
}
|
152 |
|
153 |
/**
|
154 |
-
* Callback
|
155 |
*
|
156 |
* @since 1.0
|
157 |
*/
|
158 |
-
public function
|
159 |
{
|
160 |
global $post_type;
|
161 |
-
$columns = $this->set_column($columns, $post_type);
|
162 |
|
163 |
-
return $columns;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
164 |
}
|
165 |
|
166 |
/**
|
167 |
-
*
|
168 |
*
|
169 |
-
* @since 1.
|
170 |
*/
|
171 |
-
|
172 |
{
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
177 |
}
|
178 |
|
179 |
/**
|
180 |
-
*
|
181 |
*
|
182 |
-
*
|
183 |
-
|
184 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
185 |
*
|
186 |
-
*
|
187 |
*/
|
188 |
-
public function
|
189 |
{
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
$boxes = $this->get_column_options($post_type);
|
202 |
-
|
203 |
-
// class
|
204 |
-
$class = $this->is_menu_type_current($post_type) ? ' current' : ' hidden';
|
205 |
|
206 |
-
|
207 |
-
|
208 |
-
<th class='cpac_post_type' scope='row'>
|
209 |
-
{$label}
|
210 |
-
</th>
|
211 |
-
<td>
|
212 |
-
<h3 class='cpac_post_type hidden'>{$label}</h3>
|
213 |
-
{$boxes}
|
214 |
-
</td>
|
215 |
-
</tr>
|
216 |
-
";
|
217 |
-
}
|
218 |
-
|
219 |
-
// Post Type Menu
|
220 |
-
$menu = $this->get_post_type_menu();
|
221 |
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
<div id="general-cpac-settings" class="postbox">
|
232 |
-
<div title="Click to toggle" class="handlediv"><br></div>
|
233 |
-
<h3 class="hndle">
|
234 |
-
<span><?php _e('Admin Columns', $this->textdomain ); ?></span>
|
235 |
-
</h3>
|
236 |
-
<div class="inside">
|
237 |
-
<form method="post" action="options.php">
|
238 |
-
|
239 |
-
<?php settings_fields( 'cpac-settings-group' ); ?>
|
240 |
-
|
241 |
-
<table class="form-table">
|
242 |
-
|
243 |
-
<?php echo $rows ?>
|
244 |
-
|
245 |
-
<tr class="bottom" valign="top">
|
246 |
-
<th scope="row"></th>
|
247 |
-
<td>
|
248 |
-
<p class="submit">
|
249 |
-
<input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
|
250 |
-
</p>
|
251 |
-
</td>
|
252 |
-
</tr>
|
253 |
-
</table>
|
254 |
-
</form>
|
255 |
-
</div>
|
256 |
-
</div><!-- general-settings -->
|
257 |
-
|
258 |
-
<div id="restore-cpac-settings" class="postbox">
|
259 |
-
<div title="Click to toggle" class="handlediv"><br></div>
|
260 |
-
<h3 class="hndle">
|
261 |
-
<span><?php _e('Restore defaults', $this->textdomain) ?></span>
|
262 |
-
</h3>
|
263 |
-
<div class="inside">
|
264 |
-
<form method="post" action="">
|
265 |
-
<input type="submit" class="button" name="cpac-restore-defaults" value="<?php _e('Restore default settings', $this->textdomain ) ?>" onclick="return confirm('<?php _e("Warning! ALL saved admin columns data will be deleted. This cannot be undone. \'OK\' to delete, \'Cancel\' to stop", $this->textdomain); ?>');" />
|
266 |
-
</form>
|
267 |
-
<p class="description"><?php _e('This will delete all column settings and restore the default settings.', $this->textdomain); ?></p>
|
268 |
-
</div>
|
269 |
-
</div><!-- restore-cpac-settings -->
|
270 |
-
|
271 |
-
</div>
|
272 |
-
</div>
|
273 |
-
</div><!-- .postbox-container -->
|
274 |
-
|
275 |
-
<div class="postbox-container" style="width:20%;">
|
276 |
-
<div class="metabox-holder">
|
277 |
-
<div class="meta-box-sortables">
|
278 |
-
|
279 |
-
<div id="side-cpac-settings" class="postbox">
|
280 |
-
<div title="Click to toggle" class="handlediv"><br></div>
|
281 |
-
<h3 class="hndle">
|
282 |
-
<span><?php _e('Need support?', $this->textdomain) ?></span>
|
283 |
-
</h3>
|
284 |
-
<div class="inside">
|
285 |
-
<p><?php printf(__('If you are having problems with this plugin, please talk about them in the <a href="%s">Support forums</a>.', $this->textdomain), 'http://wordpress.org/tags/codepress-admin-columns' );?></p>
|
286 |
-
<p><?php printf(__("If you're sure you've found a bug, or have a feature request, please <a href='%s'>submit your feedback</a>.", $this->textdomain), 'http://www.codepress.nl/plugins/codepress-admin-columns#feedback');?></p>
|
287 |
-
</div>
|
288 |
-
</div><!-- side-cpac-settings -->
|
289 |
-
|
290 |
-
</div>
|
291 |
-
</div>
|
292 |
-
</div><!-- .postbox-container -->
|
293 |
-
|
294 |
-
</div>
|
295 |
-
<?php
|
296 |
}
|
297 |
-
|
298 |
/**
|
299 |
* Get a list of Column options per post type
|
300 |
*
|
301 |
* @since 1.0
|
302 |
*/
|
303 |
-
private function
|
304 |
{
|
305 |
// merge all columns
|
306 |
-
$display_columns = $this->get_merged_columns($
|
307 |
|
308 |
// define
|
309 |
$list = '';
|
310 |
|
311 |
// loop throught the active columns
|
312 |
if ( $display_columns ) {
|
313 |
-
foreach ( $display_columns as $
|
314 |
|
315 |
// add items to the list
|
316 |
-
$list .= $this->get_box($
|
317 |
|
318 |
}
|
319 |
}
|
320 |
|
321 |
// custom field button
|
322 |
$button_add_column = '';
|
323 |
-
if ( $this->get_postmeta_by_posttype($
|
324 |
$button_add_column = "<a href='javacript:;' class='cpac-add-customfield-column button'>+ " . __('Add Custom Field Column') . "</a>";
|
325 |
|
326 |
return "
|
@@ -339,60 +295,62 @@ class Codepress_Admin_Columns
|
|
339 |
*
|
340 |
* @since 1.0
|
341 |
*/
|
342 |
-
private function get_merged_columns($
|
343 |
{
|
344 |
//get saved database columns
|
345 |
-
$db_columns = $this->
|
346 |
-
|
347 |
-
// get wp default columns
|
348 |
-
$wp_default_columns = $this->get_wp_default_columns($post_type);
|
349 |
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
356 |
// loop throught the active columns
|
357 |
if ( $db_columns ) {
|
358 |
-
foreach ( $db_columns as $
|
359 |
|
360 |
// get column meta options from custom columns
|
361 |
-
if (
|
362 |
-
$db_columns[$
|
363 |
|
364 |
// add static options
|
365 |
else
|
366 |
-
$db_columns[$
|
367 |
|
368 |
-
unset($
|
369 |
}
|
370 |
}
|
371 |
|
372 |
// merge all
|
373 |
-
$display_columns = wp_parse_args($db_columns, $
|
374 |
-
|
375 |
return $display_columns;
|
376 |
}
|
377 |
-
|
378 |
-
|
379 |
/**
|
380 |
* Get checkbox
|
381 |
*
|
382 |
* @since 1.0
|
383 |
*/
|
384 |
-
private function get_box($post_type, $
|
385 |
{
|
386 |
$classes = array();
|
387 |
|
388 |
// set state
|
389 |
$state = isset($values['state']) ? $values['state'] : '';
|
390 |
|
391 |
-
// set sortorder
|
392 |
-
$sortorder = isset($values['sortorder']) && $values['sortorder'] == 'on' ? 'on' : '';
|
393 |
-
|
394 |
// class
|
395 |
-
$classes[] = "cpac-box-{$
|
396 |
if ( $state )
|
397 |
$classes[] = 'active';
|
398 |
if ( ! empty($values['options']['class']) )
|
@@ -400,7 +358,7 @@ class Codepress_Admin_Columns
|
|
400 |
$class = implode(' ', $classes);
|
401 |
|
402 |
// more box options
|
403 |
-
$more_options = $this->get_additional_box_options($post_type, $
|
404 |
$action = "<a class='cpac-action' href='#open'>open</a>";
|
405 |
|
406 |
// hide box options
|
@@ -414,8 +372,7 @@ class Codepress_Admin_Columns
|
|
414 |
<div class='cpac-type-options'>
|
415 |
|
416 |
<div class='cpac-checkbox'></div>
|
417 |
-
<input type='hidden' class='cpac-state' name='cpac_options[columns][{$post_type}][{$
|
418 |
-
<input type='hidden' name='cpac_options[columns][{$post_type}][{$key}][sortorder]' value='{$sortorder}'/>
|
419 |
<label class='main-label'>{$values['label']}</label>
|
420 |
</div>
|
421 |
<div class='cpac-meta-title'>
|
@@ -423,8 +380,8 @@ class Codepress_Admin_Columns
|
|
423 |
<span>{$values['options']['type_label']}</span>
|
424 |
</div>
|
425 |
<div class='cpac-type-inside'>
|
426 |
-
<label for='cpac_options[columns][{$post_type}][{$
|
427 |
-
<input type='text' name='cpac_options[columns][{$post_type}][{$
|
428 |
<br/>
|
429 |
{$more_options}
|
430 |
</div>
|
@@ -439,13 +396,13 @@ class Codepress_Admin_Columns
|
|
439 |
*
|
440 |
* @since 1.0
|
441 |
*/
|
442 |
-
private function get_additional_box_options($post_type, $
|
443 |
{
|
444 |
$fields = '';
|
445 |
|
446 |
// Custom Fields
|
447 |
-
if (
|
448 |
-
$fields .= $this->get_box_options_customfields($post_type, $
|
449 |
|
450 |
return $fields;
|
451 |
}
|
@@ -455,7 +412,7 @@ class Codepress_Admin_Columns
|
|
455 |
*
|
456 |
* @since 1.0
|
457 |
*/
|
458 |
-
private function get_box_options_customfields($post_type, $
|
459 |
{
|
460 |
// get post meta fields
|
461 |
$fields = $this->get_postmeta_by_posttype($post_type);
|
@@ -485,10 +442,13 @@ class Codepress_Admin_Columns
|
|
485 |
'library_id' => __('Media Library Icon', $this->textdomain),
|
486 |
'excerpt' => __('Excerpt'),
|
487 |
'array' => __('Multiple Values', $this->textdomain),
|
|
|
488 |
);
|
489 |
|
490 |
-
// add
|
491 |
-
$fieldtypes = apply_filters('cpac-field-types', $fieldtypes );
|
|
|
|
|
492 |
foreach ( $fieldtypes as $fkey => $fieldtype ) {
|
493 |
$fieldtype_options .= sprintf
|
494 |
(
|
@@ -499,12 +459,16 @@ class Codepress_Admin_Columns
|
|
499 |
);
|
500 |
}
|
501 |
|
|
|
|
|
|
|
|
|
502 |
if ( empty($field_options) )
|
503 |
return false;
|
504 |
|
505 |
// add remove button
|
506 |
$remove = '<p class="remove-description description">'.__('This field can not be removed', $this->textdomain).'</p>';
|
507 |
-
if ( $
|
508 |
$remove = "
|
509 |
<p>
|
510 |
<a href='javascript:;' class='cpac-delete-custom-field-box'>".__('Remove')."</a>
|
@@ -513,12 +477,18 @@ class Codepress_Admin_Columns
|
|
513 |
}
|
514 |
|
515 |
$inside = "
|
516 |
-
<label for='cpac_options[columns][{$post_type}][{$
|
517 |
-
<select name='cpac_options[columns][{$post_type}][{$
|
518 |
<br/>
|
519 |
-
<label for='cpac_options[columns][{$post_type}][{$
|
520 |
-
<select name='cpac_options[columns][{$post_type}][{$
|
521 |
<br/>
|
|
|
|
|
|
|
|
|
|
|
|
|
522 |
{$remove}
|
523 |
";
|
524 |
|
@@ -564,7 +534,20 @@ class Codepress_Admin_Columns
|
|
564 |
wp_enqueue_script( 'jquery-ui-sortable' );
|
565 |
wp_enqueue_script( 'cpac-admin', $this->plugin_url('/assets/js/admin-column.js'), array('jquery', 'jquery-ui-sortable'), CPAC_VERSION );
|
566 |
}
|
567 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
568 |
/**
|
569 |
* Get post types
|
570 |
*
|
@@ -651,9 +634,15 @@ class Codepress_Admin_Columns
|
|
651 |
|
652 |
// stores the default columns that are set by WP or set in the theme.
|
653 |
$wp_default_columns = array();
|
|
|
|
|
654 |
foreach ( $this->post_types as $post_type ) {
|
655 |
-
$wp_default_columns[$post_type] = $this->
|
656 |
}
|
|
|
|
|
|
|
|
|
657 |
update_option( 'cpac_options_default', $wp_default_columns );
|
658 |
}
|
659 |
|
@@ -720,20 +709,20 @@ class Codepress_Admin_Columns
|
|
720 |
*
|
721 |
* @since 1.0
|
722 |
*/
|
723 |
-
public function
|
724 |
{
|
725 |
-
$type = $
|
726 |
|
727 |
// Check for taxonomies, such as column-taxonomy-[taxname]
|
728 |
if ( strpos($type, 'column-taxonomy-') !== false )
|
729 |
$type = 'column-taxonomy';
|
730 |
|
731 |
// Check for custom fields, such as column-meta-[customfieldname]
|
732 |
-
if (
|
733 |
$type = 'column-meta';
|
734 |
|
735 |
// Hook
|
736 |
-
do_action('cpac-manage-column', $type, $
|
737 |
|
738 |
// Switch Types
|
739 |
$result = '';
|
@@ -787,9 +776,14 @@ class Codepress_Admin_Columns
|
|
787 |
$result = get_post($post_id)->post_name;
|
788 |
break;
|
789 |
|
|
|
|
|
|
|
|
|
|
|
790 |
// Taxonomy
|
791 |
case "column-taxonomy" :
|
792 |
-
$tax = str_replace('column-taxonomy-',''
|
793 |
$tags = get_the_terms($post_id, $tax);
|
794 |
$tarr = array();
|
795 |
if ( $tax == 'post_format' && empty($tags) ) {
|
@@ -805,7 +799,7 @@ class Codepress_Admin_Columns
|
|
805 |
|
806 |
// Custom Field
|
807 |
case "column-meta" :
|
808 |
-
$result = $this->get_column_value_custom_field($post_id, $
|
809 |
break;
|
810 |
|
811 |
// Attachment
|
@@ -814,7 +808,7 @@ class Codepress_Admin_Columns
|
|
814 |
break;
|
815 |
|
816 |
default :
|
817 |
-
$result = get_post_meta( $post_id, $
|
818 |
|
819 |
endswitch;
|
820 |
|
@@ -823,13 +817,66 @@ class Codepress_Admin_Columns
|
|
823 |
|
824 |
echo $result;
|
825 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
826 |
|
827 |
/**
|
828 |
* Get column value of post attachments
|
829 |
*
|
830 |
* @since 1.0
|
831 |
*/
|
832 |
-
private function get_column_value_attachments($post_id)
|
833 |
{
|
834 |
$result = '';
|
835 |
$attachments = get_posts(array(
|
@@ -851,11 +898,15 @@ class Codepress_Admin_Columns
|
|
851 |
*
|
852 |
* @since 1.0
|
853 |
*/
|
854 |
-
private function get_column_value_custom_field($post_id, $
|
855 |
{
|
856 |
-
$columns = $this->
|
857 |
-
|
858 |
-
|
|
|
|
|
|
|
|
|
859 |
|
860 |
// Get meta field value
|
861 |
$meta = get_post_meta($post_id, $field, true);
|
@@ -891,6 +942,9 @@ class Codepress_Admin_Columns
|
|
891 |
|
892 |
endswitch;
|
893 |
|
|
|
|
|
|
|
894 |
return $meta;
|
895 |
}
|
896 |
|
@@ -909,43 +963,18 @@ class Codepress_Admin_Columns
|
|
909 |
$retVal[] = $r_pieces;
|
910 |
}
|
911 |
}
|
912 |
-
|
913 |
-
|
914 |
-
|
915 |
-
/**
|
916 |
-
* Set Columns for Registering
|
917 |
-
*
|
918 |
-
* @since 1.0
|
919 |
-
*/
|
920 |
-
private function set_column($columns, $post_type)
|
921 |
-
{
|
922 |
-
$db_columns = $this->get_db_columns($post_type);
|
923 |
|
924 |
-
|
925 |
-
|
926 |
-
|
927 |
-
// set already loaded columns by plugins
|
928 |
-
$set_columns = $this->filter_preset_columns($columns, $post_type);
|
929 |
-
|
930 |
-
// loop through columns
|
931 |
-
foreach ( $db_columns as $key => $values ) {
|
932 |
-
|
933 |
-
// is active
|
934 |
-
if ( isset($values['state']) && $values['state'] == 'on' ){
|
935 |
-
|
936 |
-
// register format
|
937 |
-
$set_columns[$key] = $values['label'];
|
938 |
-
}
|
939 |
-
}
|
940 |
-
return $set_columns;
|
941 |
-
}
|
942 |
|
943 |
/**
|
944 |
* Set columns. These columns apply either for every post or set by a plugin.
|
945 |
*
|
946 |
* @since 1.0
|
947 |
*/
|
948 |
-
private function filter_preset_columns($columns, $
|
949 |
{
|
950 |
$options = $this->options_default;
|
951 |
|
@@ -953,7 +982,7 @@ class Codepress_Admin_Columns
|
|
953 |
return $columns;
|
954 |
|
955 |
// we use the wp default columns for filtering...
|
956 |
-
$db_columns = $options[$
|
957 |
|
958 |
// ... the ones that are set by plugins, theme functions and such.
|
959 |
$dif_columns = array_diff(array_keys($columns), array_keys($db_columns));
|
@@ -967,44 +996,19 @@ class Codepress_Admin_Columns
|
|
967 |
}
|
968 |
|
969 |
return $pre_columns;
|
970 |
-
}
|
971 |
|
972 |
/**
|
973 |
-
*
|
974 |
*
|
975 |
* @since 1.0
|
976 |
*/
|
977 |
-
private function
|
978 |
{
|
979 |
-
|
980 |
-
|
981 |
-
|
982 |
-
|
983 |
-
|
984 |
-
// loop through columns
|
985 |
-
foreach ( $db_columns as $key => $values ) {
|
986 |
-
|
987 |
-
// is active
|
988 |
-
if ( isset($values['sortorder']) && $values['sortorder'] == 'on' ){
|
989 |
-
|
990 |
-
// register format
|
991 |
-
$columns[$key] = $this->sanitize_string($values['label']);
|
992 |
-
}
|
993 |
-
}
|
994 |
-
return $columns;
|
995 |
-
}
|
996 |
-
|
997 |
-
/**
|
998 |
-
* Get WP default supported admin columns per post type.
|
999 |
-
*
|
1000 |
-
* @since 1.0
|
1001 |
-
*/
|
1002 |
-
private function get_wp_default_columns($post_type = 'post')
|
1003 |
-
{
|
1004 |
-
// load some dependencies
|
1005 |
-
require_once(ABSPATH . 'wp-admin\includes\template.php');
|
1006 |
-
require_once(ABSPATH . 'wp-admin\includes\class-wp-list-table.php');
|
1007 |
-
require_once(ABSPATH . 'wp-admin\includes\class-wp-posts-list-table.php');
|
1008 |
|
1009 |
// we need to change the current screen
|
1010 |
global $current_screen;
|
@@ -1016,12 +1020,53 @@ class Codepress_Admin_Columns
|
|
1016 |
// ...so we can get its columns
|
1017 |
$columns = WP_Posts_List_Table::get_columns();
|
1018 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1019 |
// we remove the checkbox column as an option...
|
1020 |
unset($columns['cb']);
|
1021 |
|
1022 |
// change to uniform format
|
1023 |
$uniform_columns = array();
|
1024 |
-
foreach ( $columns as $
|
1025 |
$hide_options = false;
|
1026 |
$type_label = $label;
|
1027 |
|
@@ -1030,8 +1075,8 @@ class Codepress_Admin_Columns
|
|
1030 |
$type_label = __('Comments', $this->textdomain);
|
1031 |
$hide_options = true;
|
1032 |
}
|
1033 |
-
|
1034 |
-
$uniform_colums[$
|
1035 |
'label' => $label,
|
1036 |
'state' => 'on',
|
1037 |
'options' => array(
|
@@ -1041,96 +1086,78 @@ class Codepress_Admin_Columns
|
|
1041 |
)
|
1042 |
);
|
1043 |
}
|
1044 |
-
|
1045 |
-
// reset current screen
|
1046 |
-
$current_screen = $org_current_screen;
|
1047 |
-
|
1048 |
return $uniform_colums;
|
1049 |
}
|
1050 |
-
|
1051 |
/**
|
1052 |
-
*
|
1053 |
*
|
1054 |
* @since 1.0
|
1055 |
*/
|
1056 |
-
private function
|
1057 |
{
|
1058 |
$custom_columns = array();
|
1059 |
|
1060 |
-
// default arguments
|
1061 |
-
$defaults = array(
|
1062 |
-
'label' => '',
|
1063 |
-
'sortorder' => '',
|
1064 |
-
'state' => '',
|
1065 |
-
|
1066 |
-
// options are static
|
1067 |
-
'options' => array(
|
1068 |
-
'type_label' => __('Custom', $this->textdomain),
|
1069 |
-
'hide_options' => false,
|
1070 |
-
'class' => 'cpac-box-custom',
|
1071 |
-
)
|
1072 |
-
);
|
1073 |
-
|
1074 |
// Thumbnail support
|
1075 |
if ( post_type_supports($post_type, 'thumbnail') ) {
|
1076 |
-
$custom_columns['column-featured_image'] =
|
1077 |
'label' => __('Featured Image', $this->textdomain),
|
1078 |
'options' => array(
|
1079 |
'type_label' => __('Image', $this->textdomain)
|
1080 |
)
|
1081 |
-
)
|
1082 |
}
|
1083 |
|
1084 |
// Excerpt support
|
1085 |
if ( post_type_supports($post_type, 'editor') ) {
|
1086 |
-
$custom_columns['column-excerpt'] =
|
1087 |
'label' => __('Excerpt', $this->textdomain),
|
1088 |
'options' => array(
|
1089 |
'type_label' => __('Excerpt', $this->textdomain)
|
1090 |
)
|
1091 |
-
)
|
1092 |
}
|
1093 |
|
1094 |
// Sticky support
|
1095 |
if ( $post_type == 'post' ) {
|
1096 |
-
$custom_columns['column-sticky'] =
|
1097 |
'label' => __('Sticky', $this->textdomain),
|
1098 |
'options' => array(
|
1099 |
'type_label' => __('Sticky', $this->textdomain)
|
1100 |
)
|
1101 |
-
)
|
1102 |
}
|
1103 |
|
1104 |
// Order support
|
1105 |
if ( post_type_supports($post_type, 'page-attributes') ) {
|
1106 |
-
$custom_columns['column-order'] =
|
1107 |
-
'label' => __('Page Order', $this->textdomain),
|
1108 |
-
'sortorder' => 'on',
|
1109 |
'options' => array(
|
1110 |
-
'type_label' => __('Order', $this->textdomain)
|
|
|
1111 |
)
|
1112 |
-
)
|
1113 |
}
|
1114 |
|
1115 |
// Page Template
|
1116 |
if ( $post_type == 'page' ) {
|
1117 |
-
$custom_columns['column-page-template'] =
|
1118 |
'label' => __('Page Template', $this->textdomain),
|
1119 |
-
'sortorder' => 'on',
|
1120 |
'options' => array(
|
1121 |
-
'type_label' => __('Page Template', $this->textdomain)
|
|
|
1122 |
)
|
1123 |
-
)
|
1124 |
}
|
1125 |
|
1126 |
// Post Formats
|
1127 |
if ( post_type_supports($post_type, 'post-formats') ) {
|
1128 |
-
$custom_columns['column-post_formats'] =
|
1129 |
'label' => __('Post Format', $this->textdomain),
|
1130 |
'options' => array(
|
1131 |
'type_label' => __('Post Format', $this->textdomain)
|
1132 |
)
|
1133 |
-
)
|
1134 |
}
|
1135 |
|
1136 |
// Taxonomy support
|
@@ -1138,57 +1165,157 @@ class Codepress_Admin_Columns
|
|
1138 |
if ( $taxonomies ) {
|
1139 |
foreach ( $taxonomies as $tax_slug => $tax ) {
|
1140 |
if ( $tax_slug != 'post_tag' && $tax_slug != 'category' && $tax_slug != 'post_format' ) {
|
1141 |
-
$custom_columns['column-taxonomy-'.$tax->name] =
|
1142 |
'label' => $tax->label,
|
1143 |
'options' => array(
|
1144 |
'type_label' => __('Taxonomy', $this->textdomain)
|
1145 |
)
|
1146 |
-
)
|
1147 |
}
|
1148 |
}
|
1149 |
}
|
1150 |
|
1151 |
// Post ID support
|
1152 |
-
$custom_columns['column-postid'] =
|
1153 |
-
'label' => 'ID',
|
1154 |
-
'sortorder' => 'on',
|
1155 |
'options' => array(
|
1156 |
'type_label' => 'ID',
|
|
|
1157 |
)
|
1158 |
-
)
|
1159 |
|
1160 |
// Slug support
|
1161 |
-
$custom_columns['column-page-slug'] =
|
1162 |
'label' => __('Slug', $this->textdomain),
|
1163 |
-
'sortorder' => 'on',
|
1164 |
'options' => array(
|
1165 |
'type_label' => __('Slug', $this->textdomain),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1166 |
)
|
1167 |
-
)
|
1168 |
|
1169 |
// Attachment support
|
1170 |
-
$custom_columns['column-attachment'] =
|
1171 |
'label' => __('Attachment', $this->textdomain),
|
1172 |
-
'sortorder' => 'on',
|
1173 |
'options' => array(
|
1174 |
-
'type_label' => __('Attachment', $this->textdomain)
|
|
|
1175 |
)
|
1176 |
-
)
|
1177 |
|
1178 |
// Custom Field support
|
1179 |
if ( $this->get_postmeta_by_posttype($post_type) ) {
|
1180 |
-
$custom_columns['column-meta-1'] =
|
1181 |
'label' => __('Custom Field', $this->textdomain),
|
1182 |
'field' => '',
|
1183 |
'field_type' => '',
|
|
|
|
|
1184 |
'options' => array(
|
1185 |
'type_label' => __('Field', $this->textdomain),
|
1186 |
-
'class' => 'cpac-box-metafield'
|
|
|
1187 |
)
|
1188 |
-
)
|
1189 |
}
|
1190 |
|
1191 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1192 |
}
|
1193 |
|
1194 |
/**
|
@@ -1196,14 +1323,14 @@ class Codepress_Admin_Columns
|
|
1196 |
*
|
1197 |
* @since 1.0
|
1198 |
*/
|
1199 |
-
private function
|
1200 |
{
|
1201 |
// get plugin options
|
1202 |
$options = $this->options;
|
1203 |
|
1204 |
// get saved columns
|
1205 |
-
if ( isset($options['columns'][$
|
1206 |
-
return $options['columns'][$
|
1207 |
|
1208 |
return false;
|
1209 |
}
|
@@ -1213,7 +1340,7 @@ class Codepress_Admin_Columns
|
|
1213 |
*
|
1214 |
* @since 1.0
|
1215 |
*/
|
1216 |
-
private function
|
1217 |
{
|
1218 |
// set
|
1219 |
$menu = '';
|
@@ -1225,16 +1352,16 @@ class Codepress_Admin_Columns
|
|
1225 |
$referer = $_REQUEST['cpac_type'];
|
1226 |
|
1227 |
// loop
|
1228 |
-
foreach ( $this->
|
1229 |
-
$label = $this->get_singular_name($
|
1230 |
-
$clean_label = $this->sanitize_string($
|
1231 |
|
1232 |
// divider
|
1233 |
$divider = $count++ == 1 ? '' : ' | ';
|
1234 |
|
1235 |
// current
|
1236 |
$current = '';
|
1237 |
-
if ( $this->is_menu_type_current($
|
1238 |
$current = ' class="current"';
|
1239 |
|
1240 |
// menu list
|
@@ -1258,9 +1385,7 @@ class Codepress_Admin_Columns
|
|
1258 |
* @since 1.0
|
1259 |
*/
|
1260 |
private function is_menu_type_current( $post_type )
|
1261 |
-
{
|
1262 |
-
//print_r($post_type);
|
1263 |
-
|
1264 |
// referer
|
1265 |
$referer = '';
|
1266 |
if ( ! empty($_REQUEST['cpac_type']) )
|
@@ -1292,10 +1417,18 @@ class Codepress_Admin_Columns
|
|
1292 |
*
|
1293 |
* @since 1.0
|
1294 |
*/
|
1295 |
-
private function get_singular_name( $
|
1296 |
{
|
1297 |
-
|
1298 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1299 |
return $label;
|
1300 |
}
|
1301 |
|
@@ -1306,25 +1439,59 @@ class Codepress_Admin_Columns
|
|
1306 |
*/
|
1307 |
public function handle_requests_orderby_column( $vars )
|
1308 |
{
|
1309 |
-
if ( isset( $vars['orderby'] ) ) {
|
1310 |
-
|
1311 |
-
$db_columns = $this->get_db_columns($vars['post_type']);
|
1312 |
|
1313 |
-
|
1314 |
-
|
1315 |
-
|
1316 |
-
// sanitizing label
|
1317 |
-
$label = $this->sanitize_string($db_columns['column-order']['label']);
|
1318 |
|
1319 |
-
//
|
1320 |
-
if ( $
|
1321 |
$vars['orderby'] = 'menu_order';
|
1322 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1323 |
}
|
1324 |
}
|
1325 |
return $vars;
|
1326 |
}
|
1327 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1328 |
/**
|
1329 |
* Sanitize label
|
1330 |
*
|
@@ -1339,7 +1506,7 @@ class Codepress_Admin_Columns
|
|
1339 |
}
|
1340 |
|
1341 |
/**
|
1342 |
-
* Get
|
1343 |
*
|
1344 |
* @since 1.0
|
1345 |
*/
|
@@ -1348,6 +1515,19 @@ class Codepress_Admin_Columns
|
|
1348 |
return plugins_url($file, __FILE__);
|
1349 |
}
|
1350 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1351 |
/**
|
1352 |
* Get a thumbnail
|
1353 |
*
|
@@ -1365,6 +1545,125 @@ class Codepress_Admin_Columns
|
|
1365 |
$image = str_replace( WP_CONTENT_DIR, WP_CONTENT_URL, $new);
|
1366 |
|
1367 |
return "<img src='{$image}' alt='' width='120' height='80' />";
|
1368 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1369 |
}
|
1370 |
?>
|
1 |
<?php
|
2 |
/*
|
3 |
Plugin Name: Codepress Admin Columns
|
4 |
+
Version: 1.1.1
|
5 |
+
Description: This plugin makes it easy to Manage Custom Columns for your Posts, Pages and Custom Post Type Screens.
|
6 |
+
Author: Codepress
|
7 |
Author URI: http://www.codepress.nl
|
8 |
Plugin URI: http://www.codepress.nl/plugins/codepress-admin-columns/
|
9 |
Text Domain: codepress-admin-columns
|
26 |
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
27 |
*/
|
28 |
|
29 |
+
define( 'CPAC_VERSION', '1.1.1' );
|
30 |
|
31 |
/**
|
32 |
* Init Class
|
73 |
$this->handle_requests();
|
74 |
$this->options = get_option('cpac_options');
|
75 |
$this->options_default = get_option('cpac_options_default');
|
76 |
+
|
77 |
// slug
|
78 |
$this->slug = 'codepress-admin-columns';
|
79 |
$this->textdomain = 'codepress-admin-columns';
|
81 |
// translations
|
82 |
load_plugin_textdomain( $this->textdomain, false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
|
83 |
|
84 |
+
// actions and hooks
|
85 |
add_action( 'admin_menu', array( &$this, 'settings_menu') );
|
86 |
add_action( 'admin_init', array( &$this, 'register_settings') );
|
87 |
add_action( 'admin_init', array( &$this, 'register_columns' ) );
|
88 |
add_action( 'admin_enqueue_scripts', array( &$this, 'admin_enqueue_scripts') );
|
89 |
+
add_action( 'manage_pages_custom_column', array( &$this, 'manage_posts_column_value'), 10, 2 );
|
90 |
+
add_action( 'manage_posts_custom_column', array( &$this, 'manage_posts_column_value'), 10, 2 );
|
91 |
+
add_action( 'manage_users_custom_column', array( &$this, 'manage_users_column_value'), 10, 3 );
|
92 |
+
add_action( 'admin_print_styles' , array( &$this, 'column_styles') );
|
93 |
add_filter( 'request', array( &$this, 'handle_requests_orderby_column') );
|
94 |
add_filter( 'plugin_action_links', array( &$this, 'add_settings_link'), 10, 2);
|
95 |
}
|
141 |
*/
|
142 |
public function register_columns()
|
143 |
{
|
144 |
+
/** Posts */
|
145 |
foreach ( $this->post_types as $post_type ) {
|
146 |
|
147 |
// register column per post type
|
148 |
+
add_filter("manage_edit-{$post_type}_columns", array(&$this, 'callback_add_posts_column'));
|
149 |
|
150 |
// register column as sortable
|
151 |
+
add_filter( "manage_edit-{$post_type}_sortable_columns", array(&$this, 'callback_add_sortable_posts_column'));
|
152 |
}
|
153 |
+
|
154 |
+
/** Users */
|
155 |
+
add_filter( "manage_users_columns", array(&$this, 'callback_add_users_column'));
|
156 |
+
add_filter( "manage_users_sortable_columns", array(&$this, 'callback_add_sortable_users_column') );
|
157 |
}
|
158 |
|
159 |
/**
|
160 |
+
* Callback add Posts Column
|
161 |
*
|
162 |
* @since 1.0
|
163 |
*/
|
164 |
+
public function callback_add_posts_column($columns)
|
165 |
{
|
166 |
global $post_type;
|
|
|
167 |
|
168 |
+
return $this->add_managed_columns($post_type, $columns);
|
169 |
+
}
|
170 |
+
|
171 |
+
/**
|
172 |
+
* Callback add Users column
|
173 |
+
*
|
174 |
+
* @since 1.1
|
175 |
+
*/
|
176 |
+
public function callback_add_users_column($columns)
|
177 |
+
{
|
178 |
+
return $this->add_managed_columns('wp-users', $columns);
|
179 |
}
|
180 |
|
181 |
/**
|
182 |
+
* Add managed columns by Type
|
183 |
*
|
184 |
+
* @since 1.1
|
185 |
*/
|
186 |
+
private function add_managed_columns( $type = 'post', $columns )
|
187 |
{
|
188 |
+
$db_columns = $this->get_stored_columns($type);
|
189 |
+
|
190 |
+
if ( !$db_columns )
|
191 |
+
return $columns;
|
192 |
+
|
193 |
+
// set already loaded columns by plugins
|
194 |
+
$set_columns = $this->filter_preset_columns($columns, $type);
|
195 |
+
|
196 |
+
// loop through columns
|
197 |
+
foreach ( $db_columns as $id => $values ) {
|
198 |
+
|
199 |
+
// is active
|
200 |
+
if ( isset($values['state']) && $values['state'] == 'on' ){
|
201 |
+
|
202 |
+
// register format
|
203 |
+
$set_columns[$id] = $values['label'];
|
204 |
+
}
|
205 |
+
}
|
206 |
+
|
207 |
+
return $set_columns;
|
208 |
}
|
209 |
|
210 |
/**
|
211 |
+
* Callback add Posts sortable column
|
212 |
*
|
213 |
+
* @since 1.0
|
214 |
+
*/
|
215 |
+
public function callback_add_sortable_posts_column($columns)
|
216 |
+
{
|
217 |
+
global $post_type;
|
218 |
+
|
219 |
+
return $this->add_managed_sortable_columns($post_type, $columns);
|
220 |
+
}
|
221 |
+
|
222 |
+
/**
|
223 |
+
* Callback add Users sortable column
|
224 |
*
|
225 |
+
* @since 1.1
|
226 |
*/
|
227 |
+
public function callback_add_sortable_users_column($columns)
|
228 |
{
|
229 |
+
return $this->add_managed_sortable_columns('wp-users', $columns);
|
230 |
+
}
|
231 |
+
|
232 |
+
/**
|
233 |
+
* Add managed sortable columns by Type
|
234 |
+
*
|
235 |
+
* @since 1.1
|
236 |
+
*/
|
237 |
+
private function add_managed_sortable_columns( $type = 'post', $columns )
|
238 |
+
{
|
239 |
+
$display_columns = $this->get_merged_columns($type);
|
|
|
|
|
|
|
|
|
240 |
|
241 |
+
if ( ! $display_columns )
|
242 |
+
return $columns;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
243 |
|
244 |
+
foreach ( $display_columns as $id => $vars ) {
|
245 |
+
if ( isset($vars['options']['sortorder']) && $vars['options']['sortorder'] == 'on' ){
|
246 |
+
|
247 |
+
// register format
|
248 |
+
$columns[$id] = $this->sanitize_string($vars['label']);
|
249 |
+
}
|
250 |
+
}
|
251 |
+
return $columns;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
252 |
}
|
253 |
+
|
254 |
/**
|
255 |
* Get a list of Column options per post type
|
256 |
*
|
257 |
* @since 1.0
|
258 |
*/
|
259 |
+
private function get_column_boxes($type)
|
260 |
{
|
261 |
// merge all columns
|
262 |
+
$display_columns = $this->get_merged_columns($type);
|
263 |
|
264 |
// define
|
265 |
$list = '';
|
266 |
|
267 |
// loop throught the active columns
|
268 |
if ( $display_columns ) {
|
269 |
+
foreach ( $display_columns as $id => $values ) {
|
270 |
|
271 |
// add items to the list
|
272 |
+
$list .= $this->get_box($type, $id, $values);
|
273 |
|
274 |
}
|
275 |
}
|
276 |
|
277 |
// custom field button
|
278 |
$button_add_column = '';
|
279 |
+
if ( $this->get_postmeta_by_posttype($type) )
|
280 |
$button_add_column = "<a href='javacript:;' class='cpac-add-customfield-column button'>+ " . __('Add Custom Field Column') . "</a>";
|
281 |
|
282 |
return "
|
295 |
*
|
296 |
* @since 1.0
|
297 |
*/
|
298 |
+
private function get_merged_columns( $type )
|
299 |
{
|
300 |
//get saved database columns
|
301 |
+
$db_columns = $this->get_stored_columns($type);
|
|
|
|
|
|
|
302 |
|
303 |
+
/** Users */
|
304 |
+
if ( $type == 'wp-users' ) {
|
305 |
+
$wp_default_columns = $this->get_wp_default_users_columns();
|
306 |
+
$wp_custom_columns = $this->get_custom_users_columns();
|
307 |
+
}
|
308 |
|
309 |
+
/** Posts */
|
310 |
+
else {
|
311 |
+
$wp_default_columns = $this->get_wp_default_posts_columns($type);
|
312 |
+
$wp_custom_columns = $this->get_custom_posts_columns($type);
|
313 |
+
}
|
314 |
+
|
315 |
+
// merge columns
|
316 |
+
$posts_columns = wp_parse_args($wp_custom_columns, $wp_default_columns);
|
317 |
+
|
318 |
// loop throught the active columns
|
319 |
if ( $db_columns ) {
|
320 |
+
foreach ( $db_columns as $id => $values ) {
|
321 |
|
322 |
// get column meta options from custom columns
|
323 |
+
if ( $this->is_column_meta($id) )
|
324 |
+
$db_columns[$id]['options'] = $wp_custom_columns['column-meta-1']['options'];
|
325 |
|
326 |
// add static options
|
327 |
else
|
328 |
+
$db_columns[$id]['options'] = $posts_columns[$id]['options'];
|
329 |
|
330 |
+
unset($posts_columns[$id]);
|
331 |
}
|
332 |
}
|
333 |
|
334 |
// merge all
|
335 |
+
$display_columns = wp_parse_args($db_columns, $posts_columns);
|
336 |
+
|
337 |
return $display_columns;
|
338 |
}
|
339 |
+
|
|
|
340 |
/**
|
341 |
* Get checkbox
|
342 |
*
|
343 |
* @since 1.0
|
344 |
*/
|
345 |
+
private function get_box($post_type, $id, $values)
|
346 |
{
|
347 |
$classes = array();
|
348 |
|
349 |
// set state
|
350 |
$state = isset($values['state']) ? $values['state'] : '';
|
351 |
|
|
|
|
|
|
|
352 |
// class
|
353 |
+
$classes[] = "cpac-box-{$id}";
|
354 |
if ( $state )
|
355 |
$classes[] = 'active';
|
356 |
if ( ! empty($values['options']['class']) )
|
358 |
$class = implode(' ', $classes);
|
359 |
|
360 |
// more box options
|
361 |
+
$more_options = $this->get_additional_box_options($post_type, $id, $values);
|
362 |
$action = "<a class='cpac-action' href='#open'>open</a>";
|
363 |
|
364 |
// hide box options
|
372 |
<div class='cpac-type-options'>
|
373 |
|
374 |
<div class='cpac-checkbox'></div>
|
375 |
+
<input type='hidden' class='cpac-state' name='cpac_options[columns][{$post_type}][{$id}][state]' value='{$state}'/>
|
|
|
376 |
<label class='main-label'>{$values['label']}</label>
|
377 |
</div>
|
378 |
<div class='cpac-meta-title'>
|
380 |
<span>{$values['options']['type_label']}</span>
|
381 |
</div>
|
382 |
<div class='cpac-type-inside'>
|
383 |
+
<label for='cpac_options[columns][{$post_type}][{$id}][label]'>Label: </label>
|
384 |
+
<input type='text' name='cpac_options[columns][{$post_type}][{$id}][label]' value='{$values['label']}' class='text'/>
|
385 |
<br/>
|
386 |
{$more_options}
|
387 |
</div>
|
396 |
*
|
397 |
* @since 1.0
|
398 |
*/
|
399 |
+
private function get_additional_box_options($post_type, $id, $values)
|
400 |
{
|
401 |
$fields = '';
|
402 |
|
403 |
// Custom Fields
|
404 |
+
if ( $this->is_column_meta($id) )
|
405 |
+
$fields .= $this->get_box_options_customfields($post_type, $id, $values);
|
406 |
|
407 |
return $fields;
|
408 |
}
|
412 |
*
|
413 |
* @since 1.0
|
414 |
*/
|
415 |
+
private function get_box_options_customfields($post_type, $id, $values)
|
416 |
{
|
417 |
// get post meta fields
|
418 |
$fields = $this->get_postmeta_by_posttype($post_type);
|
442 |
'library_id' => __('Media Library Icon', $this->textdomain),
|
443 |
'excerpt' => __('Excerpt'),
|
444 |
'array' => __('Multiple Values', $this->textdomain),
|
445 |
+
'numeric' => __('Numeric', $this->textdomain),
|
446 |
);
|
447 |
|
448 |
+
// add filter
|
449 |
+
$fieldtypes = apply_filters('cpac-field-types', $fieldtypes );
|
450 |
+
|
451 |
+
// set select options
|
452 |
foreach ( $fieldtypes as $fkey => $fieldtype ) {
|
453 |
$fieldtype_options .= sprintf
|
454 |
(
|
459 |
);
|
460 |
}
|
461 |
|
462 |
+
// before and after string
|
463 |
+
$before = ! empty($values['before']) ? $values['before'] : '' ;
|
464 |
+
$after = ! empty($values['after']) ? $values['after'] : '' ;
|
465 |
+
|
466 |
if ( empty($field_options) )
|
467 |
return false;
|
468 |
|
469 |
// add remove button
|
470 |
$remove = '<p class="remove-description description">'.__('This field can not be removed', $this->textdomain).'</p>';
|
471 |
+
if ( $id != 'column-meta-1') {
|
472 |
$remove = "
|
473 |
<p>
|
474 |
<a href='javascript:;' class='cpac-delete-custom-field-box'>".__('Remove')."</a>
|
477 |
}
|
478 |
|
479 |
$inside = "
|
480 |
+
<label for='cpac_options[columns][{$post_type}][{$id}][field]'>Custom Field: </label>
|
481 |
+
<select name='cpac_options[columns][{$post_type}][{$id}][field]'>{$field_options}</select>
|
482 |
<br/>
|
483 |
+
<label for='cpac_options[columns][{$post_type}][{$id}][field_type]'>Field Type: </label>
|
484 |
+
<select name='cpac_options[columns][{$post_type}][{$id}][field_type]'>{$fieldtype_options}</select>
|
485 |
<br/>
|
486 |
+
<label for='cpac_options[columns][{$post_type}][{$id}][before]'>Before: </label>
|
487 |
+
<input type='text' class='cpac-before' name='cpac_options[columns][{$post_type}][{$id}][before]' value='{$before}'/>
|
488 |
+
<br/>
|
489 |
+
<label for='cpac_options[columns][{$post_type}][{$id}][before]'>After: </label>
|
490 |
+
<input type='text' class='cpac-after' name='cpac_options[columns][{$post_type}][{$id}][after]' value='{$after}'/>
|
491 |
+
<br/>
|
492 |
{$remove}
|
493 |
";
|
494 |
|
534 |
wp_enqueue_script( 'jquery-ui-sortable' );
|
535 |
wp_enqueue_script( 'cpac-admin', $this->plugin_url('/assets/js/admin-column.js'), array('jquery', 'jquery-ui-sortable'), CPAC_VERSION );
|
536 |
}
|
537 |
+
|
538 |
+
/**
|
539 |
+
* Get column types
|
540 |
+
*
|
541 |
+
* @since 1.1
|
542 |
+
*/
|
543 |
+
private function get_types()
|
544 |
+
{
|
545 |
+
$types = $this->post_types;
|
546 |
+
$types['wp-users'] = 'wp-users';
|
547 |
+
|
548 |
+
return $types;
|
549 |
+
}
|
550 |
+
|
551 |
/**
|
552 |
* Get post types
|
553 |
*
|
634 |
|
635 |
// stores the default columns that are set by WP or set in the theme.
|
636 |
$wp_default_columns = array();
|
637 |
+
|
638 |
+
// Posts
|
639 |
foreach ( $this->post_types as $post_type ) {
|
640 |
+
$wp_default_columns[$post_type] = $this->get_wp_default_posts_columns($post_type);
|
641 |
}
|
642 |
+
|
643 |
+
// Users
|
644 |
+
$wp_default_columns['wp-users'] = $this->get_wp_default_users_columns();
|
645 |
+
|
646 |
update_option( 'cpac_options_default', $wp_default_columns );
|
647 |
}
|
648 |
|
709 |
*
|
710 |
* @since 1.0
|
711 |
*/
|
712 |
+
public function manage_posts_column_value($column_name, $post_id)
|
713 |
{
|
714 |
+
$type = $column_name;
|
715 |
|
716 |
// Check for taxonomies, such as column-taxonomy-[taxname]
|
717 |
if ( strpos($type, 'column-taxonomy-') !== false )
|
718 |
$type = 'column-taxonomy';
|
719 |
|
720 |
// Check for custom fields, such as column-meta-[customfieldname]
|
721 |
+
if ( $this->is_column_meta($type) )
|
722 |
$type = 'column-meta';
|
723 |
|
724 |
// Hook
|
725 |
+
do_action('cpac-manage-column', $type, $column_name, $post_id);
|
726 |
|
727 |
// Switch Types
|
728 |
$result = '';
|
776 |
$result = get_post($post_id)->post_name;
|
777 |
break;
|
778 |
|
779 |
+
// Slug
|
780 |
+
case "column-word-count" :
|
781 |
+
$result = str_word_count( strip_tags( get_post($post_id)->post_content ) );
|
782 |
+
break;
|
783 |
+
|
784 |
// Taxonomy
|
785 |
case "column-taxonomy" :
|
786 |
+
$tax = str_replace('column-taxonomy-', '', $column_name);
|
787 |
$tags = get_the_terms($post_id, $tax);
|
788 |
$tarr = array();
|
789 |
if ( $tax == 'post_format' && empty($tags) ) {
|
799 |
|
800 |
// Custom Field
|
801 |
case "column-meta" :
|
802 |
+
$result = $this->get_column_value_custom_field($post_id, $column_name);
|
803 |
break;
|
804 |
|
805 |
// Attachment
|
808 |
break;
|
809 |
|
810 |
default :
|
811 |
+
$result = get_post_meta( $post_id, $column_name, true );
|
812 |
|
813 |
endswitch;
|
814 |
|
817 |
|
818 |
echo $result;
|
819 |
}
|
820 |
+
|
821 |
+
/**
|
822 |
+
* Manage custom column for Users.
|
823 |
+
*
|
824 |
+
* @since 1.1
|
825 |
+
*/
|
826 |
+
public function manage_users_column_value( $val, $column_name, $user_id )
|
827 |
+
{
|
828 |
+
$type = $column_name;
|
829 |
+
|
830 |
+
$userdata = get_userdata( $user_id );
|
831 |
+
|
832 |
+
if ( ! $userdata )
|
833 |
+
return false;
|
834 |
+
|
835 |
+
$result = '';
|
836 |
+
switch ($type) :
|
837 |
+
|
838 |
+
// user id
|
839 |
+
case "column-user_id" :
|
840 |
+
$result = $user_id;
|
841 |
+
break;
|
842 |
+
|
843 |
+
// first name
|
844 |
+
case "column-first_name" :
|
845 |
+
$result = $userdata->first_name;
|
846 |
+
break;
|
847 |
+
|
848 |
+
// last name
|
849 |
+
case "column-last_name" :
|
850 |
+
$result = $userdata->last_name;
|
851 |
+
break;
|
852 |
+
|
853 |
+
// user url
|
854 |
+
case "column-user_url" :
|
855 |
+
$result = $userdata->user_url;
|
856 |
+
break;
|
857 |
+
|
858 |
+
// user url
|
859 |
+
case "column-user_registered" :
|
860 |
+
$result = $userdata->user_registered;
|
861 |
+
break;
|
862 |
+
|
863 |
+
default :
|
864 |
+
$result = get_user_meta( $user_id, $column_name, true );
|
865 |
+
|
866 |
+
endswitch;
|
867 |
+
|
868 |
+
if ( empty($result) )
|
869 |
+
$result = ' ';
|
870 |
+
|
871 |
+
return $result;
|
872 |
+
}
|
873 |
|
874 |
/**
|
875 |
* Get column value of post attachments
|
876 |
*
|
877 |
* @since 1.0
|
878 |
*/
|
879 |
+
private function get_column_value_attachments( $post_id )
|
880 |
{
|
881 |
$result = '';
|
882 |
$attachments = get_posts(array(
|
898 |
*
|
899 |
* @since 1.0
|
900 |
*/
|
901 |
+
private function get_column_value_custom_field($post_id, $id)
|
902 |
{
|
903 |
+
$columns = $this->get_stored_columns( get_post_type($post_id) );
|
904 |
+
|
905 |
+
// inputs
|
906 |
+
$field = isset($columns[$id]['field']) ? $columns[$id]['field'] : '';
|
907 |
+
$fieldtype = isset($columns[$id]['field_type']) ? $columns[$id]['field_type'] : '';
|
908 |
+
$before = isset($columns[$id]['before']) ? $columns[$id]['before'] : '';
|
909 |
+
$after = isset($columns[$id]['after']) ? $columns[$id]['after'] : '';
|
910 |
|
911 |
// Get meta field value
|
912 |
$meta = get_post_meta($post_id, $field, true);
|
942 |
|
943 |
endswitch;
|
944 |
|
945 |
+
// add before and after string
|
946 |
+
$meta = "{$before}{$meta}{$after}";
|
947 |
+
|
948 |
return $meta;
|
949 |
}
|
950 |
|
963 |
$retVal[] = $r_pieces;
|
964 |
}
|
965 |
}
|
966 |
+
if ( isset($retVal) && is_array($retVal) )
|
967 |
+
return implode( $glue, $retVal );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
968 |
|
969 |
+
return false;
|
970 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
971 |
|
972 |
/**
|
973 |
* Set columns. These columns apply either for every post or set by a plugin.
|
974 |
*
|
975 |
* @since 1.0
|
976 |
*/
|
977 |
+
private function filter_preset_columns($columns, $type = 'post')
|
978 |
{
|
979 |
$options = $this->options_default;
|
980 |
|
982 |
return $columns;
|
983 |
|
984 |
// we use the wp default columns for filtering...
|
985 |
+
$db_columns = $options[$type];
|
986 |
|
987 |
// ... the ones that are set by plugins, theme functions and such.
|
988 |
$dif_columns = array_diff(array_keys($columns), array_keys($db_columns));
|
996 |
}
|
997 |
|
998 |
return $pre_columns;
|
999 |
+
}
|
1000 |
|
1001 |
/**
|
1002 |
+
* Get WP default supported admin columns per post type.
|
1003 |
*
|
1004 |
* @since 1.0
|
1005 |
*/
|
1006 |
+
private function get_wp_default_posts_columns($post_type = 'post')
|
1007 |
{
|
1008 |
+
// load some dependencies
|
1009 |
+
require_once(ABSPATH . 'wp-admin/includes/template.php');
|
1010 |
+
require_once(ABSPATH . 'wp-admin/includes/class-wp-list-table.php');
|
1011 |
+
require_once(ABSPATH . 'wp-admin/includes/class-wp-posts-list-table.php');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1012 |
|
1013 |
// we need to change the current screen
|
1014 |
global $current_screen;
|
1020 |
// ...so we can get its columns
|
1021 |
$columns = WP_Posts_List_Table::get_columns();
|
1022 |
|
1023 |
+
if ( empty ( $columns ) )
|
1024 |
+
return false;
|
1025 |
+
|
1026 |
+
// change to uniform format
|
1027 |
+
$posts_columns = $this->get_uniform_format($columns);
|
1028 |
+
|
1029 |
+
// reset current screen
|
1030 |
+
$current_screen = $org_current_screen;
|
1031 |
+
|
1032 |
+
return $posts_columns;
|
1033 |
+
}
|
1034 |
+
|
1035 |
+
/**
|
1036 |
+
* Get WP default users columns per post type.
|
1037 |
+
*
|
1038 |
+
* @since 1.0
|
1039 |
+
*/
|
1040 |
+
private function get_wp_default_users_columns()
|
1041 |
+
{
|
1042 |
+
require_once(ABSPATH . 'wp-admin/includes/class-wp-list-table.php');
|
1043 |
+
require_once(ABSPATH . 'wp-admin/includes/class-wp-users-list-table.php');
|
1044 |
+
|
1045 |
+
// turn off site users
|
1046 |
+
$this->is_site_users = false;
|
1047 |
+
|
1048 |
+
// get users columns
|
1049 |
+
$columns = WP_Users_List_Table::get_columns();
|
1050 |
+
|
1051 |
+
// change to uniform format
|
1052 |
+
$users_columns = $this->get_uniform_format($columns);
|
1053 |
+
|
1054 |
+
return $users_columns;
|
1055 |
+
}
|
1056 |
+
|
1057 |
+
/**
|
1058 |
+
* Build uniform format for all columns
|
1059 |
+
*
|
1060 |
+
* @since 1.0
|
1061 |
+
*/
|
1062 |
+
private function get_uniform_format($columns)
|
1063 |
+
{
|
1064 |
// we remove the checkbox column as an option...
|
1065 |
unset($columns['cb']);
|
1066 |
|
1067 |
// change to uniform format
|
1068 |
$uniform_columns = array();
|
1069 |
+
foreach ( (array) $columns as $id => $label ) {
|
1070 |
$hide_options = false;
|
1071 |
$type_label = $label;
|
1072 |
|
1075 |
$type_label = __('Comments', $this->textdomain);
|
1076 |
$hide_options = true;
|
1077 |
}
|
1078 |
+
|
1079 |
+
$uniform_colums[$id] = array(
|
1080 |
'label' => $label,
|
1081 |
'state' => 'on',
|
1082 |
'options' => array(
|
1086 |
)
|
1087 |
);
|
1088 |
}
|
|
|
|
|
|
|
|
|
1089 |
return $uniform_colums;
|
1090 |
}
|
1091 |
+
|
1092 |
/**
|
1093 |
+
* Custom posts columns
|
1094 |
*
|
1095 |
* @since 1.0
|
1096 |
*/
|
1097 |
+
private function get_custom_posts_columns($post_type)
|
1098 |
{
|
1099 |
$custom_columns = array();
|
1100 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1101 |
// Thumbnail support
|
1102 |
if ( post_type_supports($post_type, 'thumbnail') ) {
|
1103 |
+
$custom_columns['column-featured_image'] = array(
|
1104 |
'label' => __('Featured Image', $this->textdomain),
|
1105 |
'options' => array(
|
1106 |
'type_label' => __('Image', $this->textdomain)
|
1107 |
)
|
1108 |
+
);
|
1109 |
}
|
1110 |
|
1111 |
// Excerpt support
|
1112 |
if ( post_type_supports($post_type, 'editor') ) {
|
1113 |
+
$custom_columns['column-excerpt'] = array(
|
1114 |
'label' => __('Excerpt', $this->textdomain),
|
1115 |
'options' => array(
|
1116 |
'type_label' => __('Excerpt', $this->textdomain)
|
1117 |
)
|
1118 |
+
);
|
1119 |
}
|
1120 |
|
1121 |
// Sticky support
|
1122 |
if ( $post_type == 'post' ) {
|
1123 |
+
$custom_columns['column-sticky'] = array(
|
1124 |
'label' => __('Sticky', $this->textdomain),
|
1125 |
'options' => array(
|
1126 |
'type_label' => __('Sticky', $this->textdomain)
|
1127 |
)
|
1128 |
+
);
|
1129 |
}
|
1130 |
|
1131 |
// Order support
|
1132 |
if ( post_type_supports($post_type, 'page-attributes') ) {
|
1133 |
+
$custom_columns['column-order'] = array(
|
1134 |
+
'label' => __('Page Order', $this->textdomain),
|
|
|
1135 |
'options' => array(
|
1136 |
+
'type_label' => __('Order', $this->textdomain),
|
1137 |
+
'sortorder' => 'on',
|
1138 |
)
|
1139 |
+
);
|
1140 |
}
|
1141 |
|
1142 |
// Page Template
|
1143 |
if ( $post_type == 'page' ) {
|
1144 |
+
$custom_columns['column-page-template'] = array(
|
1145 |
'label' => __('Page Template', $this->textdomain),
|
|
|
1146 |
'options' => array(
|
1147 |
+
'type_label' => __('Page Template', $this->textdomain),
|
1148 |
+
'sortorder' => 'on',
|
1149 |
)
|
1150 |
+
);
|
1151 |
}
|
1152 |
|
1153 |
// Post Formats
|
1154 |
if ( post_type_supports($post_type, 'post-formats') ) {
|
1155 |
+
$custom_columns['column-post_formats'] = array(
|
1156 |
'label' => __('Post Format', $this->textdomain),
|
1157 |
'options' => array(
|
1158 |
'type_label' => __('Post Format', $this->textdomain)
|
1159 |
)
|
1160 |
+
);
|
1161 |
}
|
1162 |
|
1163 |
// Taxonomy support
|
1165 |
if ( $taxonomies ) {
|
1166 |
foreach ( $taxonomies as $tax_slug => $tax ) {
|
1167 |
if ( $tax_slug != 'post_tag' && $tax_slug != 'category' && $tax_slug != 'post_format' ) {
|
1168 |
+
$custom_columns['column-taxonomy-'.$tax->name] = array(
|
1169 |
'label' => $tax->label,
|
1170 |
'options' => array(
|
1171 |
'type_label' => __('Taxonomy', $this->textdomain)
|
1172 |
)
|
1173 |
+
);
|
1174 |
}
|
1175 |
}
|
1176 |
}
|
1177 |
|
1178 |
// Post ID support
|
1179 |
+
$custom_columns['column-postid'] = array(
|
1180 |
+
'label' => 'ID',
|
|
|
1181 |
'options' => array(
|
1182 |
'type_label' => 'ID',
|
1183 |
+
'sortorder' => 'on',
|
1184 |
)
|
1185 |
+
);
|
1186 |
|
1187 |
// Slug support
|
1188 |
+
$custom_columns['column-page-slug'] = array(
|
1189 |
'label' => __('Slug', $this->textdomain),
|
|
|
1190 |
'options' => array(
|
1191 |
'type_label' => __('Slug', $this->textdomain),
|
1192 |
+
'sortorder' => 'on',
|
1193 |
+
)
|
1194 |
+
);
|
1195 |
+
|
1196 |
+
// Word count support
|
1197 |
+
$custom_columns['column-word-count'] = array(
|
1198 |
+
'label' => __('Word count', $this->textdomain),
|
1199 |
+
'options' => array(
|
1200 |
+
'type_label' => __('Word count', $this->textdomain),
|
1201 |
)
|
1202 |
+
);
|
1203 |
|
1204 |
// Attachment support
|
1205 |
+
$custom_columns['column-attachment'] = array(
|
1206 |
'label' => __('Attachment', $this->textdomain),
|
|
|
1207 |
'options' => array(
|
1208 |
+
'type_label' => __('Attachment', $this->textdomain),
|
1209 |
+
'sortorder' => 'on',
|
1210 |
)
|
1211 |
+
);
|
1212 |
|
1213 |
// Custom Field support
|
1214 |
if ( $this->get_postmeta_by_posttype($post_type) ) {
|
1215 |
+
$custom_columns['column-meta-1'] = array(
|
1216 |
'label' => __('Custom Field', $this->textdomain),
|
1217 |
'field' => '',
|
1218 |
'field_type' => '',
|
1219 |
+
'before' => '',
|
1220 |
+
'after' => '',
|
1221 |
'options' => array(
|
1222 |
'type_label' => __('Field', $this->textdomain),
|
1223 |
+
'class' => 'cpac-box-metafield',
|
1224 |
+
'sortorder' => 'on',
|
1225 |
)
|
1226 |
+
);
|
1227 |
}
|
1228 |
|
1229 |
+
// merge with defaults
|
1230 |
+
$custom_columns = $this->parse_defaults($custom_columns);
|
1231 |
+
|
1232 |
+
return apply_filters('cpac-custom-posts-columns', $custom_columns);
|
1233 |
+
}
|
1234 |
+
|
1235 |
+
/**
|
1236 |
+
* Custom users columns
|
1237 |
+
*
|
1238 |
+
* @since 1.1
|
1239 |
+
*/
|
1240 |
+
private function get_custom_users_columns()
|
1241 |
+
{
|
1242 |
+
$custom_columns = array();
|
1243 |
+
|
1244 |
+
// User ID
|
1245 |
+
$custom_columns['column-user_id'] = array(
|
1246 |
+
'label' => __('User ID', $this->textdomain),
|
1247 |
+
'options' => array(
|
1248 |
+
'type_label' => __('User ID', $this->textdomain),
|
1249 |
+
'sortorder' => 'on'
|
1250 |
+
)
|
1251 |
+
);
|
1252 |
+
|
1253 |
+
// First name
|
1254 |
+
$custom_columns['column-first_name'] = array(
|
1255 |
+
'label' => __('First name', $this->textdomain),
|
1256 |
+
'options' => array(
|
1257 |
+
'type_label' => __('First name', $this->textdomain),
|
1258 |
+
)
|
1259 |
+
);
|
1260 |
+
|
1261 |
+
// Last name
|
1262 |
+
$custom_columns['column-last_name'] = array(
|
1263 |
+
'label' => __('Last name', $this->textdomain),
|
1264 |
+
'options' => array(
|
1265 |
+
'type_label' => __('Last name', $this->textdomain),
|
1266 |
+
)
|
1267 |
+
);
|
1268 |
+
|
1269 |
+
// User url
|
1270 |
+
$custom_columns['column-user_url'] = array(
|
1271 |
+
'label' => __('Url', $this->textdomain),
|
1272 |
+
'options' => array(
|
1273 |
+
'type_label' => __('Url', $this->textdomain),
|
1274 |
+
)
|
1275 |
+
);
|
1276 |
+
|
1277 |
+
// User url
|
1278 |
+
$custom_columns['column-user_registered'] = array(
|
1279 |
+
'label' => __('Registered', $this->textdomain),
|
1280 |
+
'options' => array(
|
1281 |
+
'type_label' => __('Registered', $this->textdomain),
|
1282 |
+
)
|
1283 |
+
);
|
1284 |
+
|
1285 |
+
// merge with defaults
|
1286 |
+
$custom_columns = $this->parse_defaults($custom_columns);
|
1287 |
+
|
1288 |
+
return apply_filters('cpac-custom-users-columns', $custom_columns);
|
1289 |
+
}
|
1290 |
+
|
1291 |
+
/**
|
1292 |
+
* Parse defaults
|
1293 |
+
*
|
1294 |
+
* @since 1.1
|
1295 |
+
*/
|
1296 |
+
private function parse_defaults($columns)
|
1297 |
+
{
|
1298 |
+
// default arguments
|
1299 |
+
$defaults = array(
|
1300 |
+
|
1301 |
+
// stored values
|
1302 |
+
'label' => '',
|
1303 |
+
'state' => '',
|
1304 |
+
|
1305 |
+
// static values
|
1306 |
+
'options' => array(
|
1307 |
+
'type_label' => __('Custom', $this->textdomain),
|
1308 |
+
'hide_options' => false,
|
1309 |
+
'class' => 'cpac-box-custom',
|
1310 |
+
'sortorder' => '',
|
1311 |
+
)
|
1312 |
+
);
|
1313 |
+
|
1314 |
+
foreach ( $columns as $k => $column ) {
|
1315 |
+
$c[$k] = wp_parse_args( $column, $defaults);
|
1316 |
+
}
|
1317 |
+
|
1318 |
+
return $c;
|
1319 |
}
|
1320 |
|
1321 |
/**
|
1323 |
*
|
1324 |
* @since 1.0
|
1325 |
*/
|
1326 |
+
private function get_stored_columns($type)
|
1327 |
{
|
1328 |
// get plugin options
|
1329 |
$options = $this->options;
|
1330 |
|
1331 |
// get saved columns
|
1332 |
+
if ( isset($options['columns'][$type]) )
|
1333 |
+
return $options['columns'][$type];
|
1334 |
|
1335 |
return false;
|
1336 |
}
|
1340 |
*
|
1341 |
* @since 1.0
|
1342 |
*/
|
1343 |
+
private function get_menu()
|
1344 |
{
|
1345 |
// set
|
1346 |
$menu = '';
|
1352 |
$referer = $_REQUEST['cpac_type'];
|
1353 |
|
1354 |
// loop
|
1355 |
+
foreach ( $this->get_types() as $type ) {
|
1356 |
+
$label = $this->get_singular_name($type);
|
1357 |
+
$clean_label = $this->sanitize_string($type);
|
1358 |
|
1359 |
// divider
|
1360 |
$divider = $count++ == 1 ? '' : ' | ';
|
1361 |
|
1362 |
// current
|
1363 |
$current = '';
|
1364 |
+
if ( $this->is_menu_type_current($type) )
|
1365 |
$current = ' class="current"';
|
1366 |
|
1367 |
// menu list
|
1385 |
* @since 1.0
|
1386 |
*/
|
1387 |
private function is_menu_type_current( $post_type )
|
1388 |
+
{
|
|
|
|
|
1389 |
// referer
|
1390 |
$referer = '';
|
1391 |
if ( ! empty($_REQUEST['cpac_type']) )
|
1417 |
*
|
1418 |
* @since 1.0
|
1419 |
*/
|
1420 |
+
private function get_singular_name( $type )
|
1421 |
{
|
1422 |
+
// Users
|
1423 |
+
if ( $type == 'wp-users' )
|
1424 |
+
$label = 'Users';
|
1425 |
+
|
1426 |
+
// Posts
|
1427 |
+
else {
|
1428 |
+
$posttype_obj = get_post_type_object($type);
|
1429 |
+
$label = $posttype_obj->labels->singular_name;
|
1430 |
+
}
|
1431 |
+
|
1432 |
return $label;
|
1433 |
}
|
1434 |
|
1439 |
*/
|
1440 |
public function handle_requests_orderby_column( $vars )
|
1441 |
{
|
1442 |
+
if ( isset( $vars['orderby'] ) ) {
|
1443 |
+
$column = $this->get_orderby_type( $vars['orderby'], $vars['post_type'] );
|
|
|
1444 |
|
1445 |
+
if ( $column ) {
|
1446 |
+
$id = key($column);
|
|
|
|
|
|
|
1447 |
|
1448 |
+
// Page Order
|
1449 |
+
if ( $id == 'column-order' ) {
|
1450 |
$vars['orderby'] = 'menu_order';
|
1451 |
}
|
1452 |
+
|
1453 |
+
// Custom Fields
|
1454 |
+
if ( $this->is_column_meta($id) ) {
|
1455 |
+
$field = $column[$id]['field'];
|
1456 |
+
|
1457 |
+
// orderby type
|
1458 |
+
$field_type = 'meta_value';
|
1459 |
+
if ( $column[$id]['field_type'] == 'numeric' || $column[$id]['field_type'] == 'library_id' )
|
1460 |
+
$field_type = 'meta_value_num';
|
1461 |
+
|
1462 |
+
// set vars
|
1463 |
+
$vars = array_merge( $vars, array(
|
1464 |
+
'meta_key' => $field,
|
1465 |
+
'orderby' => $field_type
|
1466 |
+
) );
|
1467 |
+
}
|
1468 |
}
|
1469 |
}
|
1470 |
return $vars;
|
1471 |
}
|
1472 |
|
1473 |
+
/**
|
1474 |
+
* Get orderby type
|
1475 |
+
*
|
1476 |
+
* @since 1.1
|
1477 |
+
*/
|
1478 |
+
private function get_orderby_type($orderby, $post_type)
|
1479 |
+
{
|
1480 |
+
$db_columns = $this->get_stored_columns($post_type);
|
1481 |
+
|
1482 |
+
if ( $db_columns ) {
|
1483 |
+
foreach ( $db_columns as $id => $vars ) {
|
1484 |
+
|
1485 |
+
// check which custom column was clicked
|
1486 |
+
if ( isset( $vars['label'] ) && $orderby == $this->sanitize_string( $vars['label'] ) ) {
|
1487 |
+
$column[$id] = $vars;
|
1488 |
+
return $column;
|
1489 |
+
}
|
1490 |
+
}
|
1491 |
+
}
|
1492 |
+
return false;
|
1493 |
+
}
|
1494 |
+
|
1495 |
/**
|
1496 |
* Sanitize label
|
1497 |
*
|
1506 |
}
|
1507 |
|
1508 |
/**
|
1509 |
+
* Get plugin url.
|
1510 |
*
|
1511 |
* @since 1.0
|
1512 |
*/
|
1515 |
return plugins_url($file, __FILE__);
|
1516 |
}
|
1517 |
|
1518 |
+
/**
|
1519 |
+
* Checks if column-meta key exists
|
1520 |
+
*
|
1521 |
+
* @since 1.0
|
1522 |
+
*/
|
1523 |
+
private function is_column_meta( $id = '' )
|
1524 |
+
{
|
1525 |
+
if ( strpos($id, 'column-meta-') !== false )
|
1526 |
+
return true;
|
1527 |
+
|
1528 |
+
return false;
|
1529 |
+
}
|
1530 |
+
|
1531 |
/**
|
1532 |
* Get a thumbnail
|
1533 |
*
|
1545 |
$image = str_replace( WP_CONTENT_DIR, WP_CONTENT_URL, $new);
|
1546 |
|
1547 |
return "<img src='{$image}' alt='' width='120' height='80' />";
|
1548 |
+
}
|
1549 |
+
|
1550 |
+
/**
|
1551 |
+
* Settings Page Template.
|
1552 |
+
*
|
1553 |
+
* This function in conjunction with others usei the WordPress
|
1554 |
+
* Settings API to create a settings page where users can adjust
|
1555 |
+
* the behaviour of this plugin.
|
1556 |
+
*
|
1557 |
+
* @since 1.0
|
1558 |
+
*/
|
1559 |
+
public function plugin_settings_page()
|
1560 |
+
{
|
1561 |
+
// loop through post types
|
1562 |
+
$rows = '';
|
1563 |
+
foreach ( $this->get_types() as $type ) {
|
1564 |
+
|
1565 |
+
// post type label
|
1566 |
+
$label = $this->get_singular_name($type);
|
1567 |
+
|
1568 |
+
// id
|
1569 |
+
$id = $this->sanitize_string($type);
|
1570 |
+
|
1571 |
+
// build draggable boxes
|
1572 |
+
$boxes = $this->get_column_boxes($type);
|
1573 |
+
|
1574 |
+
// class
|
1575 |
+
$class = $this->is_menu_type_current($type) ? ' current' : ' hidden';
|
1576 |
+
|
1577 |
+
$rows .= "
|
1578 |
+
<tr id='cpac-box-{$id}' valign='top' class='cpac-box-row{$class}'>
|
1579 |
+
<th class='cpac_post_type' scope='row'>
|
1580 |
+
{$label}
|
1581 |
+
</th>
|
1582 |
+
<td>
|
1583 |
+
<h3 class='cpac_post_type hidden'>{$label}</h3>
|
1584 |
+
{$boxes}
|
1585 |
+
</td>
|
1586 |
+
</tr>
|
1587 |
+
";
|
1588 |
+
}
|
1589 |
+
|
1590 |
+
// Post Type Menu
|
1591 |
+
$menu = $this->get_menu();
|
1592 |
+
|
1593 |
+
?>
|
1594 |
+
<div id="cpac" class="wrap">
|
1595 |
+
<?php screen_icon($this->slug) ?>
|
1596 |
+
<h2><?php _e('Codepress Admin Columns', $this->textdomain); ?></h2>
|
1597 |
+
<?php echo $menu ?>
|
1598 |
+
<div class="postbox-container" style="width:70%;">
|
1599 |
+
<div class="metabox-holder">
|
1600 |
+
<div class="meta-box-sortables">
|
1601 |
+
|
1602 |
+
<div id="general-cpac-settings" class="postbox">
|
1603 |
+
<div title="Click to toggle" class="handlediv"><br></div>
|
1604 |
+
<h3 class="hndle">
|
1605 |
+
<span><?php _e('Admin Columns', $this->textdomain ); ?></span>
|
1606 |
+
</h3>
|
1607 |
+
<div class="inside">
|
1608 |
+
<form method="post" action="options.php">
|
1609 |
+
|
1610 |
+
<?php settings_fields( 'cpac-settings-group' ); ?>
|
1611 |
+
|
1612 |
+
<table class="form-table">
|
1613 |
+
|
1614 |
+
<?php echo $rows ?>
|
1615 |
+
|
1616 |
+
<tr class="bottom" valign="top">
|
1617 |
+
<th scope="row"></th>
|
1618 |
+
<td>
|
1619 |
+
<p class="submit">
|
1620 |
+
<input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
|
1621 |
+
</p>
|
1622 |
+
</td>
|
1623 |
+
</tr>
|
1624 |
+
</table>
|
1625 |
+
</form>
|
1626 |
+
</div>
|
1627 |
+
</div><!-- general-settings -->
|
1628 |
+
|
1629 |
+
<div id="restore-cpac-settings" class="postbox">
|
1630 |
+
<div title="Click to toggle" class="handlediv"><br></div>
|
1631 |
+
<h3 class="hndle">
|
1632 |
+
<span><?php _e('Restore defaults', $this->textdomain) ?></span>
|
1633 |
+
</h3>
|
1634 |
+
<div class="inside">
|
1635 |
+
<form method="post" action="">
|
1636 |
+
<input type="submit" class="button" name="cpac-restore-defaults" value="<?php _e('Restore default settings', $this->textdomain ) ?>" onclick="return confirm('<?php _e("Warning! ALL saved admin columns data will be deleted. This cannot be undone. \'OK\' to delete, \'Cancel\' to stop", $this->textdomain); ?>');" />
|
1637 |
+
</form>
|
1638 |
+
<p class="description"><?php _e('This will delete all column settings and restore the default settings.', $this->textdomain); ?></p>
|
1639 |
+
</div>
|
1640 |
+
</div><!-- restore-cpac-settings -->
|
1641 |
+
|
1642 |
+
</div>
|
1643 |
+
</div>
|
1644 |
+
</div><!-- .postbox-container -->
|
1645 |
+
|
1646 |
+
<div class="postbox-container" style="width:20%;">
|
1647 |
+
<div class="metabox-holder">
|
1648 |
+
<div class="meta-box-sortables">
|
1649 |
+
|
1650 |
+
<div id="side-cpac-settings" class="postbox">
|
1651 |
+
<div title="Click to toggle" class="handlediv"><br></div>
|
1652 |
+
<h3 class="hndle">
|
1653 |
+
<span><?php _e('Need support?', $this->textdomain) ?></span>
|
1654 |
+
</h3>
|
1655 |
+
<div class="inside">
|
1656 |
+
<p><?php printf(__('If you are having problems with this plugin, please talk about them in the <a href="%s">Support forums</a> or send me an email %s.', $this->textdomain), 'http://wordpress.org/tags/codepress-admin-columns', '<a href="mailto:info@codepress.nl">info@codepress.nl</a>' );?></p>
|
1657 |
+
<p><?php printf(__("If you're sure you've found a bug, or have a feature request, please <a href='%s'>submit your feedback</a>.", $this->textdomain), 'http://www.codepress.nl/plugins/codepress-admin-columns#feedback');?></p>
|
1658 |
+
</div>
|
1659 |
+
</div><!-- side-cpac-settings -->
|
1660 |
+
|
1661 |
+
</div>
|
1662 |
+
</div>
|
1663 |
+
</div><!-- .postbox-container -->
|
1664 |
+
|
1665 |
+
</div>
|
1666 |
+
<?php
|
1667 |
+
}
|
1668 |
}
|
1669 |
?>
|
languages/codepress-admin-columns-nl_NL.mo
CHANGED
Binary file
|
languages/codepress-admin-columns-nl_NL.po
CHANGED
@@ -3,8 +3,8 @@ msgstr ""
|
|
3 |
"Project-Id-Version: Codepress Admin Columns\n"
|
4 |
"Report-Msgid-Bugs-To: \n"
|
5 |
"POT-Creation-Date: 2011-11-26 23:47+0100\n"
|
6 |
-
"PO-Revision-Date:
|
7 |
-
"Last-Translator:
|
8 |
"Language-Team: Codepress <info@codepress.nl>\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
@@ -159,150 +159,3 @@ msgstr ""
|
|
159 |
msgid "Field"
|
160 |
msgstr "Veld"
|
161 |
|
162 |
-
#~ msgid "Title"
|
163 |
-
#~ msgstr "Titel"
|
164 |
-
|
165 |
-
#~ msgid "Description"
|
166 |
-
#~ msgstr "Beschrijving"
|
167 |
-
|
168 |
-
#~ msgid "Latitude"
|
169 |
-
#~ msgstr "Breedtegraad"
|
170 |
-
|
171 |
-
#~ msgid "Longitude"
|
172 |
-
#~ msgstr "Lengtegraad"
|
173 |
-
|
174 |
-
#~ msgid "Width"
|
175 |
-
#~ msgstr "Breedte"
|
176 |
-
|
177 |
-
#~ msgid "Height"
|
178 |
-
#~ msgstr "Hoogte"
|
179 |
-
|
180 |
-
#~ msgid "Dynamic"
|
181 |
-
#~ msgstr "Dynamisch"
|
182 |
-
|
183 |
-
#~ msgid "Geocoder - Pronamic Google Maps"
|
184 |
-
#~ msgstr "Geocoder - Pronamic Google Maps"
|
185 |
-
|
186 |
-
#~ msgid "Number posts to geocode: %s"
|
187 |
-
#~ msgstr "Aantel berichten te geocoderen: %s"
|
188 |
-
|
189 |
-
#~ msgid "ID"
|
190 |
-
#~ msgstr "ID"
|
191 |
-
|
192 |
-
#~ msgid "Address"
|
193 |
-
#~ msgstr "Adres"
|
194 |
-
|
195 |
-
#~ msgid "Status"
|
196 |
-
#~ msgstr "Status"
|
197 |
-
|
198 |
-
#~ msgid "Location"
|
199 |
-
#~ msgstr "Locatie"
|
200 |
-
|
201 |
-
#~ msgid "Geocode"
|
202 |
-
#~ msgstr "Geocodeer"
|
203 |
-
|
204 |
-
#~ msgid "Zero results"
|
205 |
-
#~ msgstr "Geen resultaten"
|
206 |
-
|
207 |
-
#~ msgid ""
|
208 |
-
#~ "We found no geocoding results for the following %s posts, adjust them "
|
209 |
-
#~ "manually if needed."
|
210 |
-
#~ msgstr ""
|
211 |
-
#~ "We konden geen gecode resultaten vinden voor de volgende%s berichten, pas "
|
212 |
-
#~ "deze handmatig aan wanneer nodig."
|
213 |
-
|
214 |
-
#~ msgid "Configuration - Pronamic Google Maps"
|
215 |
-
#~ msgstr "Configuratie - Pronamic Google Maps"
|
216 |
-
|
217 |
-
#~ msgid "Active"
|
218 |
-
#~ msgstr "Actief"
|
219 |
-
|
220 |
-
#~ msgid "Activate Google Maps"
|
221 |
-
#~ msgstr "Activeer Google Maps"
|
222 |
-
|
223 |
-
#~ msgid "Show Google Maps"
|
224 |
-
#~ msgstr "Google Maps weergeven"
|
225 |
-
|
226 |
-
#~ msgid "Geocoder"
|
227 |
-
#~ msgstr "Geocoder"
|
228 |
-
|
229 |
-
#~ msgid "Geocode ↓"
|
230 |
-
#~ msgstr "Geocoderen ↓"
|
231 |
-
|
232 |
-
#~ msgid "Reverse Geocode ↑"
|
233 |
-
#~ msgstr "Omgekeerd geocoderen ↑"
|
234 |
-
|
235 |
-
#~ msgid "Tip: Change the zoom level and map type to your own wishes."
|
236 |
-
#~ msgstr "Tip: wijzig het zoomniveau en map type naar je eigen wens."
|
237 |
-
|
238 |
-
#~ msgid "Delete plugin"
|
239 |
-
#~ msgstr "Verwijder plugin"
|
240 |
-
|
241 |
-
#~ msgid "Warning! This will delete all Pronamic Google Maps data and options."
|
242 |
-
#~ msgstr ""
|
243 |
-
#~ "Waarschuwing! Dit zal alle Pronamic Google Maps data en opties "
|
244 |
-
#~ "verwijderen."
|
245 |
-
|
246 |
-
#~ msgid "Uninstall"
|
247 |
-
#~ msgstr "Verwijderen"
|
248 |
-
|
249 |
-
#~ msgid "Google Maps"
|
250 |
-
#~ msgstr "Google Maps"
|
251 |
-
|
252 |
-
#~ msgid "General"
|
253 |
-
#~ msgstr "Algemeen"
|
254 |
-
|
255 |
-
#~ msgid "Use this widget to add an Google Maps as a widget."
|
256 |
-
#~ msgstr "Gebruik deze widget om Google Maps toe te voegen."
|
257 |
-
|
258 |
-
#~ msgid "pixels"
|
259 |
-
#~ msgstr "pixels"
|
260 |
-
|
261 |
-
#~ msgid "percent"
|
262 |
-
#~ msgstr "procent"
|
263 |
-
|
264 |
-
#~ msgid "Search"
|
265 |
-
#~ msgstr "Zoeken"
|
266 |
-
|
267 |
-
#~ msgid "Click to toggle"
|
268 |
-
#~ msgstr "Klik om te wisselen"
|
269 |
-
|
270 |
-
#~ msgid "Donate $10, $20 or $50!"
|
271 |
-
#~ msgstr "Doneer $10, $20 of $50!"
|
272 |
-
|
273 |
-
#~ msgid ""
|
274 |
-
#~ "This plugin has cost us countless hours of work, if you use it, please "
|
275 |
-
#~ "donate a token of your appreciation!"
|
276 |
-
#~ msgstr ""
|
277 |
-
#~ "Het ons veel uren werken gekost om deze plugin te ontwikkelen, als je het "
|
278 |
-
#~ "gebruikt, doneer a.u.b. voor je waardering!"
|
279 |
-
|
280 |
-
#~ msgid "Latest news from Pronamic"
|
281 |
-
#~ msgstr "Laatste nieuws van Pronamic"
|
282 |
-
|
283 |
-
#~ msgid "no news items, feed might be broken..."
|
284 |
-
#~ msgstr "geen nieuws items, feed is waarschijnlijk niet bereikbaar..."
|
285 |
-
|
286 |
-
#~ msgid "Subscribe with RSS"
|
287 |
-
#~ msgstr "Aanmelden voor RSS"
|
288 |
-
|
289 |
-
#~ msgid "Subscribe by e-mail"
|
290 |
-
#~ msgstr "Aanmelden via e-mail"
|
291 |
-
|
292 |
-
#~ msgid "Why not do any or all of the following:"
|
293 |
-
#~ msgstr "Waarom doe je niet één van de volgende dingen:"
|
294 |
-
|
295 |
-
#~ msgid "Link to it so other folks can find out about it."
|
296 |
-
#~ msgstr "Link naar ons zodat anderen deze plugin ook ontdekken."
|
297 |
-
|
298 |
-
#~ msgid "Give it a good rating on WordPress.org."
|
299 |
-
#~ msgstr "Geef het een goede score op WordPress.org."
|
300 |
-
|
301 |
-
#~ msgid "Let other people know that it works with your WordPress setup."
|
302 |
-
#~ msgstr "Laat anderen weten dat het werk op je WordPress installatie."
|
303 |
-
|
304 |
-
#~ msgid "Found a bug?"
|
305 |
-
#~ msgstr "Bug gevonden?"
|
306 |
-
|
307 |
-
#~ msgid "Configuration"
|
308 |
-
#~ msgstr "Configuratie"
|
3 |
"Project-Id-Version: Codepress Admin Columns\n"
|
4 |
"Report-Msgid-Bugs-To: \n"
|
5 |
"POT-Creation-Date: 2011-11-26 23:47+0100\n"
|
6 |
+
"PO-Revision-Date: 2012-04-20 21:11+0100\n"
|
7 |
+
"Last-Translator: Codepress <info@codepress.nl>\n"
|
8 |
"Language-Team: Codepress <info@codepress.nl>\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
159 |
msgid "Field"
|
160 |
msgstr "Veld"
|
161 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
readme.txt
CHANGED
@@ -3,11 +3,11 @@ Contributors: codepress, tschutter
|
|
3 |
Tags: plugins, wordpress, admin, column, columns, dashboard, sortable, filters, wp-admin
|
4 |
Requires at least: 3.1
|
5 |
Tested up to: 3.2.1
|
6 |
-
Stable tag: 1.
|
7 |
|
8 |
== Description ==
|
9 |
|
10 |
-
This plugin makes it easy to
|
11 |
|
12 |
= Intro =
|
13 |
|
@@ -33,12 +33,13 @@ The following custom columns are supported:
|
|
33 |
|
34 |
With the custom field column you can display custom field values. It will show the value as a default. You can also set your own type:
|
35 |
|
36 |
-
* Icons for Media Library items
|
37 |
* Image thumbnails
|
|
|
38 |
* Excerpt
|
39 |
* Multiple Values
|
|
|
40 |
|
41 |
-
= Sortable
|
42 |
|
43 |
A nice feature is that it will make some of the new columns support sorting. By default WordPress let's you sort by Title, Date, Comments and Author. This will make you be able to sort by:
|
44 |
|
@@ -46,8 +47,19 @@ A nice feature is that it will make some of the new columns support sorting. By
|
|
46 |
* page order
|
47 |
* slug
|
48 |
* page template
|
|
|
|
|
|
|
|
|
|
|
49 |
|
50 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
|
52 |
**Related Links:**
|
53 |
|
@@ -69,15 +81,25 @@ Leave your feedback at http://www.codepress.nl/plugins/codepress-admin-columns#f
|
|
69 |
|
70 |
== Screenshots ==
|
71 |
|
72 |
-
1.
|
73 |
-
2.
|
74 |
-
3.
|
75 |
|
76 |
== Changelog ==
|
77 |
|
78 |
-
= 1.
|
|
|
|
|
|
|
|
|
|
|
79 |
|
80 |
-
|
|
|
|
|
|
|
|
|
|
|
81 |
|
82 |
= 1.0 =
|
83 |
|
3 |
Tags: plugins, wordpress, admin, column, columns, dashboard, sortable, filters, wp-admin
|
4 |
Requires at least: 3.1
|
5 |
Tested up to: 3.2.1
|
6 |
+
Stable tag: 1.1.1
|
7 |
|
8 |
== Description ==
|
9 |
|
10 |
+
This plugin makes it easy to Manage Custom Columns for your Posts, Pages and Custom Post Type Screens.
|
11 |
|
12 |
= Intro =
|
13 |
|
33 |
|
34 |
With the custom field column you can display custom field values. It will show the value as a default. You can also set your own type:
|
35 |
|
|
|
36 |
* Image thumbnails
|
37 |
+
* Icons for Media Library items
|
38 |
* Excerpt
|
39 |
* Multiple Values
|
40 |
+
* Numeric
|
41 |
|
42 |
+
= Sortable Custom Columns =
|
43 |
|
44 |
A nice feature is that it will make some of the new columns support sorting. By default WordPress let's you sort by Title, Date, Comments and Author. This will make you be able to sort by:
|
45 |
|
47 |
* page order
|
48 |
* slug
|
49 |
* page template
|
50 |
+
* custom fields
|
51 |
+
|
52 |
+
= User Columns =
|
53 |
+
|
54 |
+
You can also change the User Columns. I have added a few additional custom columns:
|
55 |
|
56 |
+
* User ID
|
57 |
+
* First name
|
58 |
+
* Last name
|
59 |
+
* Url
|
60 |
+
* Register date
|
61 |
+
|
62 |
+
I will be adding more in coming releases. You can leave any <a href='http://www.codepress.nl/plugins/codepress-admin-columns#feedback'>requests or feedback</a>.
|
63 |
|
64 |
**Related Links:**
|
65 |
|
81 |
|
82 |
== Screenshots ==
|
83 |
|
84 |
+
1. Posts Screen with custom columns.
|
85 |
+
2. Settings page of the Codepress Admin columns plugin.
|
86 |
+
3. Options for the Custom Field Column.
|
87 |
|
88 |
== Changelog ==
|
89 |
|
90 |
+
= 1.1.1 =
|
91 |
+
|
92 |
+
* Bug fix: path separator for require_once
|
93 |
+
* Added word count
|
94 |
+
|
95 |
+
= 1.1 =
|
96 |
|
97 |
+
* Added User Columns.
|
98 |
+
* Added before / after text for custom fields
|
99 |
+
* Added custom field type 'Numeric'.
|
100 |
+
* Added custom field sortables.
|
101 |
+
* Fixed domain path
|
102 |
+
* Fixed settings link
|
103 |
|
104 |
= 1.0 =
|
105 |
|
screenshot-1.png
CHANGED
Binary file
|
screenshot-2.png
CHANGED
Binary file
|
screenshot-3.png
CHANGED
Binary file
|