136
|
1 |
<?php |
|
2 |
include( dirname(__FILE__) . '/../core/core-functions.php' ); |
|
3 |
|
|
4 |
//---------------- Custom Drop-Down Tags Function ----------------// |
|
5 |
// function dropdown_tag_cloud( $args = '' ) { |
|
6 |
// $defaults = array( |
|
7 |
// 'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45, |
|
8 |
// 'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC', |
|
9 |
// 'exclude' => '', 'include' => '' |
|
10 |
// ); |
|
11 |
// $args = wp_parse_args( $args, $defaults ); |
|
12 |
// |
|
13 |
// $tags = get_tags( array_merge($args, array('orderby' => 'count', 'order' => 'DESC')) ); // Always query top tags |
|
14 |
// |
|
15 |
// if ( empty($tags) ) |
|
16 |
// return; |
|
17 |
// |
|
18 |
// $return = core_header_tag_cloud( $tags, $args ); // Here's where those top tags get sorted according to $args |
|
19 |
// if ( is_wp_error( $return ) ) |
|
20 |
// return false; |
|
21 |
// else |
|
22 |
// echo apply_filters( 'dropdown_tag_cloud', $return, $args ); |
|
23 |
// } |
|
24 |
// |
|
25 |
// function core_header_tag_cloud( $tags, $args = '' ) { |
|
26 |
// global $wp_rewrite; |
|
27 |
// $defaults = array( |
|
28 |
// 'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45, |
|
29 |
// 'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC' |
|
30 |
// ); |
|
31 |
// $args = wp_parse_args( $args, $defaults ); |
|
32 |
// extract($args); |
|
33 |
// |
|
34 |
// if ( !$tags ) |
|
35 |
// return; |
|
36 |
// $counts = $tag_links = array(); |
|
37 |
// foreach ( (array) $tags as $tag ) { |
|
38 |
// $counts[$tag->name] = $tag->count; |
|
39 |
// $tag_links[$tag->name] = get_tag_link( $tag->term_id ); |
|
40 |
// if ( is_wp_error( $tag_links[$tag->name] ) ) |
|
41 |
// return $tag_links[$tag->name]; |
|
42 |
// $tag_ids[$tag->name] = $tag->term_id; |
|
43 |
// } |
|
44 |
// |
|
45 |
// $min_count = min($counts); |
|
46 |
// $spread = max($counts) - $min_count; |
|
47 |
// if ( $spread <= 0 ) |
|
48 |
// $spread = 1; |
|
49 |
// $font_spread = $largest - $smallest; |
|
50 |
// if ( $font_spread <= 0 ) |
|
51 |
// $font_spread = 1; |
|
52 |
// $font_step = $font_spread / $spread; |
|
53 |
// |
|
54 |
// // SQL cannot save you; this is a second (potentially different) sort on a subset of data. |
|
55 |
// if ( 'name' == $orderby ) |
|
56 |
// uksort($counts, 'strnatcasecmp'); |
|
57 |
// else |
|
58 |
// asort($counts); |
|
59 |
// |
|
60 |
// if ( 'DESC' == $order ) |
|
61 |
// $counts = array_reverse( $counts, true ); |
|
62 |
// |
|
63 |
// $a = array(); |
|
64 |
// |
|
65 |
// $rel = ( is_object($wp_rewrite) && $wp_rewrite->using_permalinks() ) ? ' rel="tag"' : ''; |
|
66 |
// |
|
67 |
// foreach ( $counts as $tag => $count ) { |
|
68 |
// $tag_id = $tag_ids[$tag]; |
|
69 |
// $tag_link = clean_url($tag_links[$tag]); |
|
70 |
// $tag = str_replace(' ', ' ', wp_specialchars( $tag )); |
|
71 |
// $a[] = "\t<option value='$tag_link'>$tag ($count)</option>"; |
|
72 |
// } |
|
73 |
// |
|
74 |
// switch ( $format ) : |
|
75 |
// case 'array' : |
|
76 |
// $return =& $a; |
|
77 |
// break; |
|
78 |
// case 'list' : |
|
79 |
// $return = "<ul class='wp-tag-cloud'>\n\t<li>"; |
|
80 |
// $return .= join("</li>\n\t<li>", $a); |
|
81 |
// $return .= "</li>\n</ul>\n"; |
|
82 |
// break; |
|
83 |
// default : |
|
84 |
// $return = join("\n", $a); |
|
85 |
// break; |
|
86 |
// endswitch; |
|
87 |
// |
|
88 |
// return apply_filters( 'core_header_tag_cloud', $return, $tags, $args ); |
|
89 |
// } |
|
90 |
|
|
91 |
//---------------- Custom Exclude Cats Function ----------------// |
|
92 |
function exclude_category($query) { |
|
93 |
$cats = wptouch_excluded_cats(); |
|
94 |
$icats = explode( ",", $cats ); |
|
95 |
$new_cats = array(); |
|
96 |
foreach( $icats as $icat ) { |
|
97 |
$new_cats[] = "-" . $icat; |
|
98 |
} |
|
99 |
$cats = implode( ",", $new_cats ); |
|
100 |
|
|
101 |
if ( $query->is_home ) { |
|
102 |
$query->set('cat', $cats); |
|
103 |
} |
|
104 |
return $query; |
|
105 |
} |
|
106 |
|
|
107 |
add_filter('pre_get_posts', 'exclude_category'); |
|
108 |
|
|
109 |
|
|
110 |
//---------------- Custom Excerpts Function ----------------// |
|
111 |
function wptouch_trim_excerpt($text) { |
|
112 |
$raw_excerpt = $text; |
|
113 |
if ( '' == $text ) { |
|
114 |
$text = get_the_content(''); |
|
115 |
$text = strip_shortcodes( $text ); |
|
116 |
$text = apply_filters('the_content', $text); |
|
117 |
$text = str_replace(']]>', ']]>', $text); |
|
118 |
$text = strip_tags($text); |
|
119 |
$excerpt_length = apply_filters('excerpt_length', 30); |
|
120 |
$words = explode(' ', $text, $excerpt_length + 1); |
|
121 |
if (count($words) > $excerpt_length) { |
|
122 |
array_pop($words); |
|
123 |
array_push($words, '...'); |
|
124 |
$text = implode(' ', $words); |
|
125 |
$text = force_balance_tags( $text ); |
|
126 |
} |
|
127 |
} |
|
128 |
return apply_filters('wptouch_trim_excerpt', $text, $raw_excerpt); |
|
129 |
} |
|
130 |
|
|
131 |
|
|
132 |
//---------------- Custom Time Since Function ----------------// |
|
133 |
|
|
134 |
function time_since($older_date, $newer_date = false) |
|
135 |
{ |
|
136 |
// array of time period chunks |
|
137 |
$chunks = array( |
|
138 |
// array(60 * 60 * 24 * 365 , 'yr'), |
|
139 |
array(60 * 60 * 24 * 30 , 'mo'), |
|
140 |
array(60 * 60 * 24 * 7, 'wk'), |
|
141 |
array(60 * 60 * 24 , 'day'), |
|
142 |
array(60 * 60 , 'hr'), |
|
143 |
array(60 , 'min'), |
|
144 |
); |
|
145 |
|
|
146 |
// $newer_date will equal false if we want to know the time elapsed between a date and the current time |
|
147 |
// $newer_date will have a value if we want to work out time elapsed between two known dates |
|
148 |
$newer_date = ($newer_date == false) ? (time()+(60*60*get_settings("gmt_offset"))) : $newer_date; |
|
149 |
|
|
150 |
// difference in seconds |
|
151 |
$since = $newer_date - $older_date; |
|
152 |
|
|
153 |
// we only want to output two chunks of time here, eg: |
|
154 |
// x years, xx months |
|
155 |
// x days, xx hours |
|
156 |
// so there's only two bits of calculation below: |
|
157 |
|
|
158 |
// step one: the first chunk |
|
159 |
for ($i = 0, $j = count($chunks); $i < $j; $i++) |
|
160 |
{ |
|
161 |
$seconds = $chunks[$i][0]; |
|
162 |
$name = $chunks[$i][1]; |
|
163 |
|
|
164 |
// finding the biggest chunk (if the chunk fits, break) |
|
165 |
if (($count = floor($since / $seconds)) != 0) |
|
166 |
{ |
|
167 |
break; |
|
168 |
} |
|
169 |
} |
|
170 |
|
|
171 |
// set output var |
|
172 |
$output = ($count == 1) ? '1 '.$name : "$count {$name}s"; |
|
173 |
|
|
174 |
// step two: the second chunk |
|
175 |
if ($i + 1 < $j) |
|
176 |
{ |
|
177 |
$seconds2 = $chunks[$i + 1][0]; |
|
178 |
$name2 = $chunks[$i + 1][1]; |
|
179 |
|
|
180 |
if (($count2 = floor(($since - ($seconds * $count)) / $seconds2)) != 0) |
|
181 |
{ |
|
182 |
// add to output var |
|
183 |
$output .= ($count2 == 1) ? ', 1 '.$name2 : ", $count2 {$name2}s"; |
|
184 |
} |
|
185 |
} |
|
186 |
|
|
187 |
return $output; |
|
188 |
} |
|
189 |
|
|
190 |
remove_filter('get_the_excerpt', 'wp_trim_excerpt'); |
|
191 |
add_filter('get_the_excerpt', 'wptouch_trim_excerpt'); |
|
192 |
?> |