/** * is_allowed * Determines if a workflow tab is allowed to be shown. * * @param array $data The tab configuration object. * * @return array The statuse of whether its allowed. * * @access public * @static * @since 1.0 */ public static function is_allowed($data, $strict = true) { global $pagenow; $allowed = !$strict; // Check to see if there is an active flow if (isset($_REQUEST['flow']) && piklist::slug($flow, 'UTF-8') == $_REQUEST['flow']) { $allowed = true; } // Check Pages $pages = $data['data']['page']; if (!empty($pages)) { $allowed = in_array($pagenow, $pages); if (isset($_REQUEST['page'])) { $allowed = in_array($_REQUEST['page'], $pages); } } // Check Post Types if ($allowed && piklist_admin::is_post()) { $post_types = $data['data']['post_type']; $current_post_type = piklist_cpt::detect_post_type(); if (!empty($post_types)) { $allowed = in_array($current_post_type, $post_types); } } // Check which mode we are on for the term pages if (piklist_admin::is_term()) { $taxonomies = $data['data']['taxonomy']; $current_taxonomy = isset($_REQUEST['taxonomy']) ? $_REQUEST['taxonomy'] : false; if (!empty($taxonomies) && $current_taxonomy) { $allowed = in_array($current_taxonomy, $taxonomies); } if (piklist_admin::is_term() === 'new') { $allowed = false; } } return $allowed; }
* If your form is in a THEME (i.e. wp-content/themes/my-theme/piklist/parts/forms/my-form.php) * Use [piklist_form form="my-form" add_on="theme"] */ /** * The shortcode for this form is: * [piklist_form form="new-post-with-validation" add_on="piklist-demos"] */ /** * The fields in this form are exactly like the fields in piklist-demos/parts/meta-boxes/field-validate.php * Only the 'scope' paramater needed to be added. */ // Where to save this form piklist('field', array('type' => 'hidden', 'scope' => 'post', 'field' => 'post_type', 'value' => 'piklist_demo')); piklist('field', array('type' => 'text', 'scope' => 'post', 'field' => 'post_title', 'label' => __('Title', 'piklist-demo'), 'attributes' => array('wrapper_class' => 'post_title', 'style' => 'width: 100%'))); // Allows user to choose their own post status. $statuses = piklist_cpt::get_post_statuses_for_type('piklist_demo', false); piklist('field', array('type' => 'select', 'scope' => 'post', 'field' => 'post_status', 'label' => __('Post Status', 'piklist-demo'), 'choices' => $statuses, 'attributes' => array('wrapper_class' => 'post_status'))); /** * To automatically set the post status: *** Remove the field above since it's letting the user choose their status *** Uncomment this field *** Set your default post status by changing the "value" parameter. */ // piklist('field', array( // 'type' => 'hidden' // ,'scope' => 'post' // ,'field' => 'post_status' // ,'value' => 'pending' // )); // piklist('field', array('type' => 'text', 'scope' => 'post_meta', 'field' => 'validate_text_required', 'label' => __('Text Required', 'piklist-demo'), 'description' => "required => true", 'attributes' => array('wrapper_class' => 'validate_text_required', 'placeholder' => __('Enter text or this page won\'t save.', 'piklist-demo')), 'required' => true, 'validate' => array(array('type' => 'limit', 'options' => array('min' => 2, 'max' => 6, 'count' => 'characters')))));
<?php /* Extend: submitdiv Extend Method: replace Context: side Priority: core */ // Code based on wp-admin/includes/meta-boxes.php global $post, $action, $wp_post_statuses, $pagenow; $post_type = $post->post_type; $post_type_object = get_post_type_object($post_type); $can_publish = current_user_can($post_type_object->cap->publish_posts); $statuses = piklist_cpt::get_post_statuses_for_type(); foreach ($statuses as $status => &$configuration) { $configuration = (object) $configuration; } $statuses = isset($statuses) && !empty($statuses) ? $statuses : $wp_post_statuses; $initial_status = array('status' => current(array_keys($statuses)), 'data' => current($statuses)); $action_label = !isset($statuses['publish']) ? __('Save', 'piklist') : (isset($statuses['publish']->action) ? $statuses['publish']->action : __('Publish', 'piklist')); $status_type = $post->post_status == 'auto-draft' ? $initial_status['status'] : $post->post_status; ?> <div class="submitbox" id="submitpost"> <div id="minor-publishing" <?php echo apply_filters('hide_minor_publishing_submit_box', false) ? 'class="hide-all"' : null; ?> > <!-- Hide submit button early on so that the browser chooses the right button when form is submitted with Return key -->
public static function render_field($field, $return = false) { $current_user = wp_get_current_user(); $field = wp_parse_args($field, array('field' => false, 'type' => 'text', 'label' => false, 'description' => false, 'prefix' => true, 'scope' => null, 'value' => null, 'capability' => false, 'role' => false, 'logged_in' => false, 'add_more' => false, 'sortable' => false, 'choices' => false, 'list' => true, 'position' => false, 'template' => self::get_template(), 'wrapper' => false, 'columns' => null, 'embed' => false, 'editable' => true, 'child_field' => false, 'label_position' => 'before', 'conditions' => false, 'options' => false, 'on_post_status' => false, 'on_comment_status' => false, 'display' => false, 'group_field' => false, 'required' => false, 'index' => null, 'multiple' => false, 'errors' => false, 'attributes' => array('class' => array(), 'title' => false, 'alt' => false, 'tabindex' => false, 'columns' => null, 'value' => false), 'tax_query' => array('include_children' => true, 'field' => 'term_id', 'operator' => 'IN'), 'meta_query' => array('compare' => '=', 'type' => 'CHAR'))); // Should this field be rendered? if ($field['embed'] && !$return || $field['capability'] && !current_user_can($field['capability']) || !isset($field['field']) || $field['logged_in'] && !is_user_logged_in() || $field['role'] && !piklist_user::current_user_role($field['role'])) { return false; } // Set default scopes based on enviroment if (is_null($field['scope'])) { if (self::is_post()) { $field['scope'] = 'post_meta'; } elseif (self::is_media()) { $field['scope'] = 'post_meta'; } elseif (self::is_term()) { $field['scope'] = 'term_meta'; } elseif (self::is_user()) { $field['scope'] = 'user_meta'; } } // Set Defaults array_push(self::$fields_defaults, $field); // Determine if its a multiple type field if (in_array($field['type'], self::$field_list_types['multiple_fields']) || is_array($field['attributes']) && in_array('multiple', $field['attributes'])) { $field['multiple'] = true; } if ($field['type'] == 'html' && !isset($field['field'])) { $field['field'] = piklist::unique_id(); } // Manage Classes if (isset($field['attributes']['class'])) { $field['attributes']['class'] = !is_array($field['attributes']['class']) ? explode(' ', $field['attributes']['class']) : $field['attributes']['class']; } else { $field['attributes']['class'] = array(); } array_push($field['attributes']['class'], piklist_form::get_field_id($field['field'], $field['scope'], false, $field['prefix'])); // Set Wrapper $wrapper = array('id' => $field['type'] == 'map' ? null : self::get_field_wrapper_id($field), 'class' => array()); // Set Columns if (is_numeric($field['columns']) && !$field['child_field']) { array_push($wrapper['class'], 'piklist-field-type-group piklist-field-column-' . $field['columns']); } if (isset($field['attributes']['columns']) && is_numeric($field['attributes']['columns'])) { array_push($field['attributes']['class'], 'piklist-field-column-' . $field['attributes']['columns']); unset($field['attributes']['columns']); } if (isset($field['attributes']['wrapper_class'])) { array_push($wrapper['class'], $field['attributes']['wrapper_class']); } // Check Statuses $status_types = apply_filters('piklist_status_types', array('post')); foreach ($status_types as $type) { $status = $field['on_' . $type . '_status']; if (!empty($status)) { $object = !empty(self::$save_ids) ? get_post(self::$save_ids[$type], ARRAY_A) : (array) $GLOBALS[$type]; if ((is_admin() && isset($GLOBALS[$type]) || !empty(self::$save_ids)) && isset($object['post_type'])) { $status_list = piklist_cpt::get_post_statuses($object['post_type']); foreach (array('field', 'value', 'hide') as $status_display) { if (isset($status[$status_display])) { $status[$status_display] = is_array($status[$status_display]) ? $status[$status_display] : array($status[$status_display]); foreach ($status[$status_display] as $_status) { if (strstr($_status, '--')) { $status_range = explode('--', $_status); $status_range_start = array_search($status_range[0], $status_list); $status_range_end = array_search($status_range[1], $status_list); if (is_numeric($status_range_start) && is_numeric($status_range_end)) { $status_slice = array(); for ($i = $status_range_start; $i <= $status_range_end; $i++) { array_push($status_slice, $status_list[$i]); } array_splice($status[$status_display], array_search($_status, $status[$status_display]), 1, $status_slice); } } } } } } if (isset($status['hide']) && isset($object[$type . '_status']) && piklist::check_in($status['hide'], $object[$type . '_status'] ? $object[$type . '_status'] : array('draft'))) { return false; } elseif (isset($status['value']) && isset($object[$type . '_status']) && piklist::check_in($status['value'], $object[$type . '_status'] ? $object[$type . '_status'] : array('draft'))) { $field['display'] = true; } } } // Get errors $field['errors'] = piklist_validate::get_errors($field['field'], $field['scope']); // Get field value if (!$field['group_field']) { if (piklist_validate::errors()) { $stored_value = piklist_validate::get_request_value($field['field'], $field['scope']); } if (!isset($stored_value)) { if (self::is_widget()) { $stored_value = isset(piklist_widget::widget()->instance[$field['field']]) ? maybe_unserialize(piklist_widget::widget()->instance[$field['field']]) : $field['value']; } else { $stored_value = self::get_field_value($field['scope'], $field, $field['scope'], piklist_form::get_field_object_id($field), false); } } if (!isset($stored_value) && !isset($field['attributes']['placeholder']) && !$field['multiple']) { $field['attributes']['placeholder'] = htmlspecialchars($field['value']); } elseif (isset($stored_value) || is_array($stored_value) && empty($stored_value)) { $field['value'] = $stored_value; } } // Check for nested fields if ($field['description']) { $field['description'] = self::render_nested_field($field, $field['description']); } if (is_array($field['choices']) && !in_array($field['type'], array('select', 'multiselect'))) { foreach ($field['choices'] as &$choice) { $choice = self::render_nested_field($field, $choice); } } if ($field['conditions']) { if ($field['display'] && empty($field['value']) && $field['type'] != 'group') { return false; } foreach ($field['conditions'] as &$condition) { if (is_array($condition)) { $condition['scope'] = isset($condition['scope']) ? $condition['scope'] : $field['scope']; $condition['id'] = piklist_form::get_field_id($condition['field'], $condition['scope'], false, $field['prefix']); $condition['name'] = piklist_form::get_field_name($condition['field'], $condition['scope'], false, $field['prefix']); $condition['reset'] = isset($condition['reset']) ? $condition['reset'] : true; if (!isset($condition['type']) || empty($condition['type'])) { $condition['type'] = 'toggle'; } if (!in_array('piklist-field-condition', $field['attributes']['class'])) { if (!in_array('piklist-field-condition', $wrapper['class'])) { array_push($wrapper['class'], 'piklist-field-condition'); } if (!in_array('piklist-field-condition-' . $condition['type'], $wrapper['class'])) { array_push($wrapper['class'], 'piklist-field-condition-' . $condition['type']); } } } } } // Set the field template if ($field['group_field'] && self::get_template() == $field['template'] && (strstr(self::$templates[$field['template']]['template'], '</tr>') || $field['template'] == 'default')) { $field['child_field'] = true; $field['template'] = 'field'; } elseif ($field['type'] == 'hidden' || $field['embed']) { $field['template'] = 'field'; } $field['wrapper'] = preg_replace(array('/ {2,}/', '/<!--.*?-->|\\t|(?:\\r?\\n[ \\t]*)+/s'), array(' ', ''), sprintf(self::$templates[$field['template']]['template'], $wrapper['id'], implode(' ', $wrapper['class']))); $field = apply_filters('piklist_pre_render_field', $field); self::$field_rendering = $field; self::$fields_rendered[$field['scope']][$field['field']] = $field; $field_to_render = self::template_tag_fetch('field_wrapper', $field['wrapper']); $rendered_field = do_shortcode($field_to_render); switch ($field['position']) { case 'start': $rendered_field = piklist_form::template_tag_fetch('field_wrapper', $field['wrapper'], 'start') . $rendered_field; break; case 'end': $rendered_field .= piklist_form::template_tag_fetch('field_wrapper', $field['wrapper'], 'end'); break; case 'wrap': $rendered_field = piklist_form::template_tag_fetch('field_wrapper', $field['wrapper'], 'start') . $rendered_field . piklist_form::template_tag_fetch('field_wrapper', $field['wrapper'], 'end'); break; } $rendered_field = apply_filters('piklist_post_render_field', $rendered_field, $field); self::$field_rendering = null; // Return the field as requested if ($return) { return $rendered_field; } else { echo $rendered_field; } }
/** * render_field * Render a field from a field object. * * @param array $field The field object * @param bool $return Whether to return the output. * * @return string The field output if return is true. * * @access public * @static * @since 1.0 */ public static function render_field($field, $return = false) { // Setup the defaults $field = self::setup_field($field); /** * piklist_request_field * Filter the request field * * @param array $field * * @since 1.0 */ $field = apply_filters('piklist_request_field', $field); /** * piklist_request_field_$scope_$field * Filter a specific request field * * The dynamic portions of the hook name, `$field['scope']` and `$field['field']`, * refer to the 'scope' and 'field' parameters, of an individual field. * * @param array $field * * @since 1.0 */ $field = apply_filters('piklist_request_field_' . $field['scope'] . '_' . $field['field'], $field); // Validate field if (!$field || !self::validate_field($field) || $field['embed'] && !$return) { return false; } // Set Object ID if (is_null($field['object_id']) && (!$field['relate'] || $field['relate'] && in_array($field['scope'], array('post_meta', 'user_meta', 'comment_meta')))) { $field['object_id'] = self::get_field_object_id($field); } // Handle relate if (!$field['group_field']) { $field = piklist_relate::relate_field($field); } // Set Template if (!$field['template']) { $field['template'] = self::get_field_template($field['scope']); } if (!in_array($field['type'], self::$field_types_rendered)) { array_push(self::$field_types_rendered, $field['type']); } if ($field['type'] == 'html') { $field['display'] = true; if (!$field['field']) { $field['field'] = piklist::unique_id(); } } // Manage Classes $field['attributes']['class'] = !is_array($field['attributes']['class']) ? explode(' ', $field['attributes']['class']) : $field['attributes']['class']; if ($field['type'] == 'hidden') { $field['attributes']['data-piklist-field-addmore-clear'] = false; } array_push($field['attributes']['class'], self::get_field_id(array('field' => $field['field'], 'scope' => $field['scope'], 'index' => false, 'prefix' => $field['prefix']))); array_push($field['attributes']['class'], 'piklist-field-element'); // Set Wrapper clas $wrapper_classes = array(); // Set Columns if (is_numeric($field['columns']) && !$field['child_field']) { array_push($wrapper_classes, 'piklist-field-type-group piklist-field-column-' . $field['columns']); } if (is_numeric($field['columns'])) { $field['attributes']['data-piklist-field-columns'] = $field['columns']; } if (isset($field['attributes']['columns']) && is_numeric($field['attributes']['columns'])) { array_push($field['attributes']['class'], 'piklist-field-column-' . $field['attributes']['columns']); unset($field['attributes']['columns']); } // Add wrapper class if (isset($field['attributes']['wrapper_class'])) { array_push($wrapper_classes, $field['attributes']['wrapper_class']); } // Check Statuses - Legacy, these get mapped to conditions post_status_hide, post_status_value if (!empty($field['on_post_status'])) { $object = !is_null($field['object_id']) ? get_post($field['object_id'], ARRAY_A) : (isset($GLOBALS['post']) ? (array) $GLOBALS['post'] : null); if ($object) { $status_list = isset($object['post_type']) ? piklist_cpt::get_post_statuses($object['post_type']) : array(); foreach (array('value', 'hide') as $status_display) { if (isset($field['on_post_status'][$status_display])) { $field['on_post_status'][$status_display] = is_array($field['on_post_status'][$status_display]) ? $field['on_post_status'][$status_display] : array($field['on_post_status'][$status_display]); foreach ($field['on_post_status'][$status_display] as $_status) { if (strstr($_status, '--')) { $status_range = explode('--', $_status); $status_range_start = array_search($status_range[0], $status_list); $status_range_end = array_search($status_range[1], $status_list); if (is_numeric($status_range_start) && is_numeric($status_range_end)) { $status_slice = array(); for ($i = $status_range_start; $i <= $status_range_end; $i++) { array_push($status_slice, $status_list[$i]); } array_splice($field['on_post_status'][$status_display], array_search($_status, $field['on_post_status'][$status_display]), 1, $status_slice); } } } } } } foreach ($field['on_post_status'] as $status_display => $statuses) { array_push($field['conditions'], array('type' => 'post_status_' . $status_display, 'value' => $statuses)); } unset($field['on_post_status']); } // Get errors if (piklist_validate::errors() && !$field['group_field']) { $field['errors'] = piklist_validate::get_errors($field); } // Highlight errors if needed. if ($field['errors']) { array_push($field['attributes']['class'], 'piklist-error'); } // Get field value if (!$field['group_field'] && $field['value'] !== false && !in_array($field['type'], array('button', 'submit', 'reset')) && (!$field['relate'] || $field['relate'] && !$field['value']) && $field['scope'] != piklist::$prefix) { if (piklist_validate::errors()) { $field['value'] = piklist_validate::get_request_value($field); } elseif (!piklist_validate::errors()) { $field['value'] = self::get_field_value($field['scope'], $field, $field['scope'], $field['object_id'], false); } } // Check for nested fields if ($field['description']) { $field['description'] = self::render_nested_field($field, $field['description']); } if (is_array($field['choices']) && !in_array($field['type'], array('select', 'multiselect'))) { foreach ($field['choices'] as &$choice) { $choice = self::render_nested_field($field, $choice); } } if (!empty($field['conditions'])) { array_push($field['attributes']['class'], 'piklist-field-element-condition'); foreach ($field['conditions'] as &$condition) { if (is_array($condition)) { if (!isset($condition['type']) || empty($condition['type'])) { $condition['type'] = 'toggle'; } elseif (piklist_admin::is_post()) { global $post; $condition['value'] = is_array($condition['value']) ? $condition['value'] : array($condition['value']); if (substr($condition['type'], 0, 12) == 'post_status_' && in_array($post->post_status, $condition['value'])) { if ($condition['type'] == 'post_status_hide') { return false; } elseif ($condition['type'] == 'post_status_value') { $field['display'] = true; } } } if (isset($condition['field'])) { $condition['scope'] = isset($condition['scope']) ? $condition['scope'] : $field['scope']; $condition_field = array('field' => $condition['field'], 'scope' => $condition['scope'], 'index' => false, 'prefix' => $field['prefix']); $condition['id'] = self::get_field_id($condition_field); $condition['name'] = self::get_field_name($condition_field); $condition['reset'] = isset($condition['reset']) ? $condition['reset'] : true; if (!in_array('piklist-field-condition', $field['attributes']['class'])) { if (!in_array('piklist-field-condition', $wrapper_classes)) { array_push($wrapper_classes, 'piklist-field-condition'); } if (!in_array('piklist-field-condition-' . $condition['type'], $wrapper_classes)) { array_push($wrapper_classes, 'piklist-field-condition-' . $condition['type']); } } } } } } // Check if the field is an add more if (($field['add_more'] || $field['sortable']) && !$field['display']) { $field['attributes']['data-piklist-field-addmore'] = $field['add_more']; $field['attributes']['data-piklist-field-sortable'] = $field['sortable']; $field['attributes']['data-piklist-field-addmore-actions'] = $field['add_more']; $field['attributes']['data-piklist-field-addmore-single'] = $field['add_more']; } // Check if field is an editor and prepare its additional attributes if ($field['type'] == 'editor') { $editor_id = self::get_field_id($field); $editor_id = substr($editor_id, 0, -2); self::$field_editor_attributes[$editor_id] = ''; foreach ($field['attributes'] as $key => $value) { if (substr($key, 0, strlen('data-piklist-field-')) == 'data-piklist-field-') { self::$field_editor_attributes[$editor_id] .= $key . '="' . $value . '" '; } } } // Set the field template if ($field['group_field'] && self::get_field_template($field['scope']) == $field['template'] && (strstr(self::$templates[$field['template']]['template'], '</tr>') || $field['template'] == 'default')) { $field['child_field'] = true; $field['template'] = 'field'; } elseif ($field['type'] == 'hidden' || $field['embed']) { $field['template'] = 'field'; } $field['wrapper'] = preg_replace(array('/ {2,}/', '/<!--.*?-->|\\t|(?:\\r?\\n[ \\t]*)+/s'), array(' ', ''), sprintf(self::$templates[$field['template']]['template'], implode(' ', $wrapper_classes))); ksort($field); /** * piklist_pre_render_field * Filter the request field before it renders * * @param array $field * * @since 1.0 */ $field = apply_filters('piklist_pre_render_field', $field); /** * piklist_pre_render_field_$scope_$field * Filter a specific request field before it renders * * The dynamic portions of the hook name, `$field['scope']` and `$field['field']`, * refer to the 'scope' and 'field' parameters, of an individual field. * * @param array $field * * @since 1.0 */ $field = apply_filters('piklist_pre_render_field_' . $field['scope'] . '_' . $field['field'], $field); // Bail from rendering the field if its a display with no value or its already been rendered in this form if (!$field || !$field['group_field'] && ($field['display'] && empty($field['value']) && $field['type'] != 'group')) { return false; } $field_name = $field['field'] ? $field['field'] : piklist::unique_id(); self::$field_rendering = $field; self::$fields_rendered[$field['scope']][$field_name] = $field; $field_to_render = self::template_tag_fetch('field_wrapper', $field['wrapper']); $rendered_field = do_shortcode($field_to_render); switch ($field['position']) { case 'start': $rendered_field = self::template_tag_fetch('field_wrapper', $field['wrapper'], 'start') . $rendered_field; break; case 'end': $rendered_field .= self::template_tag_fetch('field_wrapper', $field['wrapper'], 'end'); break; case 'wrap': $rendered_field = self::template_tag_fetch('field_wrapper', $field['wrapper'], 'start') . $rendered_field . self::template_tag_fetch('field_wrapper', $field['wrapper'], 'end'); break; } /** * piklist_post_render_field * Filter the request field after it renders * * @param array $field * * @return $rendered_field * * @since 1.0 */ $rendered_field = apply_filters('piklist_post_render_field', $rendered_field, $field); /** * piklist_post_render_field_$scope_$field * Filter a specific request field after it renders * * The dynamic portions of the hook name, `$field['scope']` and `$field['field']`, * refer to the 'scope' and 'field' parameters, of an individual field. * * @param array $field * * @return $rendered_field * * @since 1.0 */ $rendered_field = apply_filters('piklist_post_render_field_' . $field['scope'] . '_' . $field['field'], $rendered_field, $field); if ($field['type'] == 'editor') { self::$fields_rendered[$field['scope']][$field_name]['options'] = array_merge(self::$fields_rendered[$field['scope']][$field_name]['options'], self::$field_editor_settings); } self::$field_rendering = null; // Return the field as requested if ($return) { return $rendered_field; } else { echo $rendered_field; } }
?> <?php foreach ($post_types as $post_type) { ?> <?php $status_count = 0; ?> <?php $num_pages = wp_count_posts($post_type->name); ?> <?php $statuses = piklist_cpt::get_post_statuses_for_type($post_type->name); ?> <?php foreach ($statuses as $status => $value) { ?> <?php if ($value->public == 1) { ?> <?php $status_count = $status_count + $num_pages->{$status}; ?> <?php
/** * register_taxonomies * registers Taxonomies that use the piklist_taxonomies filter. * * @access public * @static * @since 1.0 */ public static function register_taxonomies() { global $wp_taxonomies, $pagenow; /** * Register Taxonomies with Piklist * * Allows for all custom Piklist parameters when registering a Taxonomy * * @param array $taxonomies * * @since 1.0 */ self::$taxonomies = apply_filters('piklist_taxonomies', self::$taxonomies); $check = array(); foreach (self::$taxonomies as $taxonomy_name => $taxonomy) { $taxonomy['name'] = isset($taxonomy['name']) || is_numeric($taxonomy_name) ? $taxonomy['name'] : $taxonomy_name; $type = isset($taxonomy['object_type']) ? $taxonomy['object_type'] : $taxonomy['post_type']; if (!isset($taxonomy['update_count_callback'])) { $taxonomy['update_count_callback'] = '_update_generic_term_count'; } register_taxonomy($taxonomy['name'], $type, $taxonomy['configuration']); if (!isset($check[$taxonomy['name']]) || !$check[$taxonomy['name']]) { $check[$taxonomy['name']] = $taxonomy; } if (isset($taxonomy['configuration']['hide_meta_box']) && !empty($taxonomy['configuration']['hide_meta_box'])) { $object_types = is_array($type) ? $type : array($type); foreach ($object_types as $object_type) { if (!isset(self::$meta_boxes_hidden[$object_type])) { self::$meta_boxes_hidden[$object_type] = array(); } array_push(self::$meta_boxes_hidden[$object_type], $taxonomy['configuration']['hierarchical'] ? $taxonomy['name'] . 'div' : 'tagsdiv-' . $taxonomy['name']); } } add_action('admin_head', array('piklist_cpt', 'hide_meta_boxes'), 100); if (isset($taxonomy['configuration']['page_icon']) && !empty($taxonomy['configuration']['page_icon'])) { if ($pagenow == 'edit-tags.php' && $_REQUEST['taxonomy'] == $taxonomy['name']) { piklist_admin::$page_icon = array('page_id' => isset($taxonomy['object_type']) && $taxonomy['object_type'] == 'user' ? '#icon-users.icon32' : '#icon-edit.icon32', 'icon_url' => $taxonomy['configuration']['page_icon']); } } if (isset($taxonomy['object_type']) && $taxonomy['object_type'] == 'user') { if (isset($taxonomy['configuration']['show_admin_column']) && $taxonomy['configuration']['show_admin_column'] == true) { piklist_cpt::$taxonomy = $taxonomy; add_filter('manage_users_columns', array('piklist_cpt', 'user_column_header'), 10); add_action('manage_users_custom_column', array('piklist_cpt', 'user_column_data'), 10, 3); } } if (isset($taxonomy['configuration']['meta_box_filter']) && $taxonomy['configuration']['meta_box_filter'] == '1') { if (in_array($pagenow, array('post.php', 'post-new.php'))) { array_push(self::$taxonomy_filter_meta_box, $taxonomy); add_action('admin_head', array('piklist_cpt', 'taxonomy_filter_meta_box')); } } } self::flush_rewrite_rules(md5(serialize($check)), 'piklist_taxonomy_rules_flushed'); }