/** * here we generate the breadcrumbs for custom post types * - we favor terms that have a parent so: parent > child will always show up instead of single terms that don't have parents * @return string */ private static function get_custom_post_type_breadcrumbs() { global $post; // use the global breadcrumb setting to show or hide them if (td_util::get_option('tds_breadcrumbs_show') == 'hide') { return ''; } $breadcrumbs_array = array(); // get the taxonomy that was set for breadcrumbs $breadcrumbs_taxonomy = td_util::get_ctp_option($post->post_type, 'tds_breadcrumbs_taxonomy'); // get terms (alphabetically) $terms = wp_get_post_terms($post->ID, $breadcrumbs_taxonomy); if (!empty($terms)) { // add the first term by default // this default will be overwritten ! - if in foreach we find a term that has a parent if (isset($terms[0])) { $first_term_url = get_term_link($terms[0], $breadcrumbs_taxonomy); if (!is_wp_error($first_term_url)) { $breadcrumbs_array[0] = array('title_attribute' => '', 'url' => $first_term_url, 'display_name' => $terms[0]->name); } } // start the search for terms that have parents BUT only if the global settings allow us if (td_util::get_option('tds_breadcrumbs_show_parent') != 'hide') { foreach ($terms as $term) { // check if the term has a parent if ($term->parent != 0) { $parent_term_in_category_spot = get_term($term->parent, $breadcrumbs_taxonomy); // add the parent $parent_url = get_term_link($parent_term_in_category_spot, $breadcrumbs_taxonomy); if (!is_wp_error($parent_url)) { $breadcrumbs_array[0] = array('title_attribute' => '', 'url' => $parent_url, 'display_name' => $parent_term_in_category_spot->name); } // add the child $child_url = get_term_link($term, $breadcrumbs_taxonomy); if (!is_wp_error($child_url)) { $breadcrumbs_array[] = array('title_attribute' => '', 'url' => $child_url, 'display_name' => $term->name); } break; //we found a parent > child } } // end foreach } } //article title if (td_util::get_option('tds_breadcrumbs_show_article') != 'hide') { //child category $breadcrumbs_array[] = array('title_attribute' => $post->post_title, 'url' => '', 'display_name' => td_util::excerpt($post->post_title, 13)); } return self::get_breadcrumbs($breadcrumbs_array); }
/** * get the tags spot of the single post or single custom post type * @return string */ function get_the_tags() { if (td_util::get_option('tds_show_tags') == 'hide') { return ''; } $buffy = ''; $terms_ui_array = array(); $tags_spot_text = __td('TAGS', TD_THEME_NAME); // the default text for tags - on CPT we can overwrite this via the panel if ($this->post->post_type != 'post') { // on custom post types we need to read what to show in the tag spot from the panel $tag_spot_taxonomy = td_util::get_ctp_option($this->post->post_type, 'tds_tag_spot_taxonomy'); $terms_for_tag_spot = wp_get_post_terms($this->post->ID, $tag_spot_taxonomy); foreach ($terms_for_tag_spot as $term_for_tag_spot) { $term_for_tag_spot_url = get_term_link($term_for_tag_spot, $tag_spot_taxonomy); if (!is_wp_error($term_for_tag_spot_url)) { $terms_ui_array[$term_for_tag_spot->name] = array('url' => $term_for_tag_spot_url); } } // also update the default tag spot text if it's set in the theme's panel $new_tag_spot_text = td_util::get_ctp_option($this->post->post_type, 'tds_tag_spot_text'); if (!empty($new_tag_spot_text)) { $tags_spot_text = $new_tag_spot_text; } } else { // on single posts we deal with tags $td_post_tags = get_the_tags(); if (!empty($td_post_tags)) { foreach ($td_post_tags as $tag) { $terms_ui_array[$tag->name] = array('url' => get_tag_link($tag->term_id)); } } } /** * output stage * we go in with an array of * array ( * $terms_ui_array[tag_name] = array ( * 'url' => '', * ) * ) */ if (!empty($terms_ui_array)) { $buffy .= '<ul class="td-tags td-post-small-box clearfix">'; $buffy .= '<li><span>' . $tags_spot_text . '</span></li>'; foreach ($terms_ui_array as $term_name => $term_params) { $buffy .= '<li><a href="' . $term_params['url'] . '">' . $term_name . '</a></li>'; } $buffy .= '</ul>'; } return $buffy; }
/** * Reads an individual setting - only one setting! * @param $read_array - * 'ds' => 'data source ID', 'item_id' = > 'the category id for example', - OPTIONAL category id or author id or page id * 'option_id' => 'the option id ex: background' * @return returns the value of the setting */ static function read($read_array) { switch ($read_array['ds']) { case 'td_taxonomy': return td_util::get_taxonomy_option($read_array['item_id'], $read_array['option_id']); break; case 'td_cpt': return td_util::get_ctp_option($read_array['item_id'], $read_array['option_id']); break; case 'td_category': return td_util::get_category_option($read_array['item_id'], $read_array['option_id']); break; case 'td_option': return td_util::get_option($read_array['option_id']); //htmlspecialchars() break; case 'wp_option': return htmlspecialchars(get_option($read_array['option_id'])); break; case 'td_homepage': // here we get all the options for the homepage (including widgets?) break; case 'td_page_option': break; case 'td_widget': break; //author metadata //author metadata case 'td_author': return get_the_author_meta($read_array['option_id'], $read_array['item_id']); break; //wordpress theme mod datasource //wordpress theme mod datasource case 'wp_theme_mod': return htmlspecialchars(get_theme_mod($read_array['option_id'])); break; //wordpress usermenu to menu spot datasource //wordpress usermenu to menu spot datasource case 'wp_theme_menu_spot': $menu_spots_array = get_theme_mod('nav_menu_locations'); //check to see if there is a menu assigned to that particular option_id (menu id) if (isset($menu_spots_array[$read_array['option_id']])) { return $menu_spots_array[$read_array['option_id']]; } else { return ''; } break; //translation data source //translation data source case 'td_translate': //get all the translations (they are stored in the td_008 variable) $translations = td_util::get_option('td_translation_map_user'); if (!empty($translations[$read_array['option_id']])) { return $translations[$read_array['option_id']]; //htmlspecialchars() } else { return ''; } //return td_util::get_option($read_array['option_id']); break; //read the ads parameters //[ds] => td_ads [option_id] => current_ad_type [item_id] => header - has to become [item_id][option_id] //read the ads parameters //[ds] => td_ads [option_id] => current_ad_type [item_id] => header - has to become [item_id][option_id] case 'td_ads': //get all the ad spots (they are stored in the td_008 variable) $ads = td_util::get_option('td_ads'); if (!empty($ads[$read_array['item_id']]) and !empty($ads[$read_array['item_id']][$read_array['option_id']])) { return htmlspecialchars($ads[$read_array['item_id']][$read_array['option_id']]); } else { return ''; } break; //social networks //social networks case 'td_social_networks': $social_array = td_util::get_option('td_social_networks'); if (!empty($social_array[$read_array['option_id']])) { return $social_array[$read_array['option_id']]; } else { return ''; } break; case 'td_fonts_user_insert': $fonts_user_inserted = td_util::get_option('td_fonts_user_inserted'); if (!empty($fonts_user_inserted[$read_array['option_id']])) { return $fonts_user_inserted[$read_array['option_id']]; } break; case 'td_fonts': $fonts_user_inserted = td_util::get_option('td_fonts'); if (!empty($fonts_user_inserted[$read_array['item_id']][$read_array['option_id']])) { return $fonts_user_inserted[$read_array['item_id']][$read_array['option_id']]; } break; case 'td_block_styles': //get the hole block style array $td_block_styles = td_util::get_option('td_block_styles'); if (!empty($td_block_styles) and !empty($td_block_styles[$read_array['item_id']][$read_array['option_id']])) { return $td_block_styles[$read_array['item_id']][$read_array['option_id']]; } break; // fake datasource for demo import panel, we just use the panel to render controls but we save on our own @todo - find a solution to this // fake datasource for demo import panel, we just use the panel to render controls but we save on our own @todo - find a solution to this case 'td_import_theme_styles': break; // fake datasource for metaboxes, we just use the panel to render controls but we save on our own @todo - find a solution to this // fake datasource for metaboxes, we just use the panel to render controls but we save on our own @todo - find a solution to this case 'td_page': break; case 'td_homepage_loop': break; case 'td_post_theme_settings': break; case 'td_update_theme_options': break; default: // try to get options for plugins return tdx_options::get_option($read_array['ds'], $read_array['option_id']); //return tdx_api_panel::get_data_from_datasource($read_array['ds'], $read_array['option_id']); break; } }