/** * Prepared fields * * Filter the fields from extending class. * * @since 0.9 * @return array Modified fields */ function ctc_prepared_fields() { // prefix in case WP core adds method with same name // Get fields from extending class $fields = array(); if (method_exists($this->ctc_class, 'ctc_fields')) { $fields = $this->ctc_fields(); } // Fill array of visible fields with all by default $visible_fields = array(); foreach ($fields as $id => $field) { $visible_fields[] = $id; } // Let themes/plugins set explicit visibility for fields for specific widget $visible_fields = apply_filters('ctc_widget_visible_fields-' . $this->id_base, $visible_fields, $this->id_base); // Let themes/plugins override specific data for field of specific post type $field_overrides = apply_filters('ctc_widget_field_overrides-' . $this->id_base, array(), $this->id_base); // by default no overrides // Loop fields to modify them with filtered data foreach ($fields as $id => $field) { // Selectively override field data based on filtered array if (!empty($field_overrides[$id]) && is_array($field_overrides[$id])) { $fields[$id] = array_merge($field, $field_overrides[$id]); // merge filtered in data over top existing data } // Set visibility of field based on filtered or unfiltered array $fields[$id]['hidden'] = !in_array($id, (array) $visible_fields) ? true : false; // set hidden true if not in array // Set visibility of field based on required taxonomy support (in case unsupported by theme or via plugin settings, etc.) if (!empty($fields[$id]['taxonomies'])) { // Loop taxonomies foreach ((array) $fields[$id]['taxonomies'] as $taxonomy_name) { // Taxonomy not supported by theme (or possibly disabled via Church Theme Content) if (!ctc_taxonomy_supported('sermons', $taxonomy_name)) { // check show_ui $fields[$id]['hidden'] = true; break; // one strike and you're out } } } } return $fields; }
/** * Add/remove list columns * * @since 0.9 * @param array $columns Columns to manipulate * @return array Modified columns */ function ctc_person_columns($columns) { // insert thumbnail after checkbox (before title) $insert_array = array(); $insert_array['ctc_person_thumbnail'] = __('Thumbnail', 'church-theme-content'); $columns = ctc_array_merge_after_key($columns, $insert_array, 'cb'); // insert columns after title $insert_array = array(); if (ctc_field_supported('people', '_ctc_person_position')) { $insert_array['ctc_person_position'] = __('Position', 'church-theme-content'); } if (ctc_taxonomy_supported('people', 'ctc_person_group')) { $insert_array['ctc_person_group'] = _x('Groups', 'people column', 'church-theme-content'); } $insert_array['ctc_person_order'] = _x('Order', 'sorting', 'church-theme-content'); $columns = ctc_array_merge_after_key($columns, $insert_array, 'title'); //change "title" to "name" $columns['title'] = _x('Name', 'person', 'church-theme-content'); return $columns; }
/** * Person group * * @since 0.9 */ function ctc_register_taxonomy_person_group() { // Arguments $args = array('labels' => array('name' => _x('Groups', 'taxonomy general name', 'church-theme-content'), 'singular_name' => _x('Group', 'taxonomy singular name', 'church-theme-content'), 'search_items' => _x('Search Groups', 'people', 'church-theme-content'), 'popular_items' => _x('Popular Groups', 'people', 'church-theme-content'), 'all_items' => _x('All Groups', 'people', 'church-theme-content'), 'parent_item' => null, 'parent_item_colon' => null, 'edit_item' => _x('Edit Group', 'people', 'church-theme-content'), 'update_item' => _x('Update Group', 'people', 'church-theme-content'), 'add_new_item' => _x('Add Group', 'people', 'church-theme-content'), 'new_item_name' => _x('New Group', 'people', 'church-theme-content'), 'separate_items_with_commas' => _x('Separate groups with commas', 'people', 'church-theme-content'), 'add_or_remove_items' => _x('Add or remove groups', 'people', 'church-theme-content'), 'choose_from_most_used' => _x('Choose from the most used groups', 'people', 'church-theme-content'), 'menu_name' => _x('Groups', 'people menu name', 'church-theme-content')), 'hierarchical' => true, 'public' => ctc_taxonomy_supported('people', 'ctc_person_group'), 'rewrite' => array('slug' => 'group', 'with_front' => false, 'hierarchical' => true)); $args = apply_filters('ctc_taxonomy_person_group_args', $args); // allow filtering // Registration register_taxonomy('ctc_person_group', 'ctc_person', $args); }
/** * Add/remove sermon list columns * * Add speaker, media, topics, etc. * * @since 0.9 * @param array $columns Columns to manipulate * @return array Modified columns */ function ctc_sermon_columns($columns) { // insert thumbnail after checkbox (before title) $insert_array = array(); $insert_array['ctc_sermon_thumbnail'] = __('Thumbnail', 'church-theme-content'); $columns = ctc_array_merge_after_key($columns, $insert_array, 'cb'); // insert media types, speakers, topics after title $insert_array = array(); $insert_array['ctc_sermon_types'] = _x('Formats', 'sermons', 'church-theme-content'); if (ctc_taxonomy_supported('sermons', 'ctc_sermon_topic')) { $insert_array['ctc_sermon_topics'] = __('Topics', 'church-theme-content'); } //if ( ctc_taxonomy_supported( 'sermons', 'ctc_sermon_book' ) ) $insert_array['ctc_sermon_books'] = _x( 'Books', 'sermons', 'church-theme-content' ); //if ( ctc_taxonomy_supported( 'sermons', 'ctc_sermon_series' ) ) $insert_array['ctc_sermon_series'] = _x( 'Series', 'sermons', 'church-theme-content' ); // little room: if ( ctc_taxonomy_supported( 'sermons', 'ctc_sermon_speaker' ) ) $insert_array['ctc_sermon_speakers'] = _x( 'Speakers', 'sermons', 'church-theme-content' ); $columns = ctc_array_merge_after_key($columns, $insert_array, 'title'); // remove author unset($columns['author']); return $columns; }
/** * Taxonomy term options * * Returns ID/name pairs useful for creating select options and sanitizing on front-end. * * @since 0.9 * @param string $taxonomy_name Taxonomy slug * @param array $prepend Array to start with such as "All" or similar * @return array ID/name pairs */ function ctc_term_options($taxonomy_name, $prepend = array()) { $options = array(); if (!preg_match('/^ctc_/', $taxonomy_name) || ctc_taxonomy_supported('sermons', $taxonomy_name)) { // make sure CTC taxonomy support $terms = $categories = get_terms($taxonomy_name); if (!empty($prepend)) { $options = $prepend; } foreach ($terms as $term) { $options[$term->term_id] = $term->name; } } return apply_filters('ctc_term_options', $options, $taxonomy_name, $prepend); }
/** * Add/remove event list columns * * @since 0.9 * @param array $columns Columns to manipulate * @return array Modified columns */ function ctc_event_columns($columns) { // insert thumbnail after checkbox (before title) $insert_array = array(); $insert_array['ctc_event_thumbnail'] = __('Thumbnail', 'church-theme-content'); $columns = ctc_array_merge_after_key($columns, $insert_array, 'cb'); // insert start date, venue after title $insert_array = array(); if (ctc_field_supported('events', '_ctc_event_start_date')) { $insert_array['ctc_event_dates'] = _x('When', 'events admin column', 'church-theme-content'); } if (ctc_field_supported('events', '_ctc_event_venue') || ctc_taxonomy_supported('events', 'ctc_event_category')) { $insert_array['ctc_event_details'] = _x('Details', 'events admin column', 'church-theme-content'); } $columns = ctc_array_merge_after_key($columns, $insert_array, 'title'); // remove author unset($columns['author']); return $columns; }