web/wp-content/themes/thematic/library/extensions/helpers.php
author ymh <ymh.work@gmail.com>
Mon, 22 Mar 2010 16:36:28 +0100
changeset 5 ac511f1ccc8e
parent 1 0d28b7c10758
permissions -rw-r--r--
add hgignore
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
0d28b7c10758 First commit
ymh
parents:
diff changeset
     1
<?php
0d28b7c10758 First commit
ymh
parents:
diff changeset
     2
0d28b7c10758 First commit
ymh
parents:
diff changeset
     3
// create bullet-proof excerpt for meta name="description"
0d28b7c10758 First commit
ymh
parents:
diff changeset
     4
0d28b7c10758 First commit
ymh
parents:
diff changeset
     5
function thematic_trim_excerpt($text) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
     6
	if ( '' == $text ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
     7
		$text = get_the_content('');
0d28b7c10758 First commit
ymh
parents:
diff changeset
     8
0d28b7c10758 First commit
ymh
parents:
diff changeset
     9
		$text = strip_shortcodes( $text );
0d28b7c10758 First commit
ymh
parents:
diff changeset
    10
0d28b7c10758 First commit
ymh
parents:
diff changeset
    11
		$text = str_replace(']]>', ']]&gt;', $text);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    12
		$text = strip_tags($text);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    13
	  $text = str_replace('"', '\'', $text);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    14
		$excerpt_length = apply_filters('excerpt_length', 55);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    15
		$words = explode(' ', $text, $excerpt_length + 1);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    16
		if (count($words) > $excerpt_length) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    17
			array_pop($words);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    18
			array_push($words, '[...]');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    19
			$text = implode(' ', $words);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    20
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    21
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    22
	return $text;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    23
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    24
0d28b7c10758 First commit
ymh
parents:
diff changeset
    25
function thematic_the_excerpt($deprecated = '') {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    26
	global $post;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    27
	$output = '';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    28
	$output = strip_tags($post->post_excerpt);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    29
	$output = str_replace('"', '\'', $output);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    30
	if ( post_password_required($post) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    31
		$output = __('There is no excerpt because this is a protected post.');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    32
		return $output;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    33
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    34
0d28b7c10758 First commit
ymh
parents:
diff changeset
    35
	return $output;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    36
	
0d28b7c10758 First commit
ymh
parents:
diff changeset
    37
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    38
0d28b7c10758 First commit
ymh
parents:
diff changeset
    39
function thematic_excerpt_rss() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    40
	global $post;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    41
	$output = '';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    42
	$output = strip_tags($post->post_excerpt);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    43
	if ( post_password_required($post) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    44
		$output = __('There is no excerpt because this is a protected post.');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    45
		return $output;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    46
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    47
0d28b7c10758 First commit
ymh
parents:
diff changeset
    48
	return apply_filters('thematic_excerpt_rss', $output);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    49
0d28b7c10758 First commit
ymh
parents:
diff changeset
    50
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    51
0d28b7c10758 First commit
ymh
parents:
diff changeset
    52
add_filter('thematic_excerpt_rss', 'thematic_trim_excerpt');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    53
0d28b7c10758 First commit
ymh
parents:
diff changeset
    54
// create nice multi_tag_title
0d28b7c10758 First commit
ymh
parents:
diff changeset
    55
// Credits: Martin Kopischke for providing this code
0d28b7c10758 First commit
ymh
parents:
diff changeset
    56
0d28b7c10758 First commit
ymh
parents:
diff changeset
    57
function thematic_tag_query() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    58
	$nice_tag_query = get_query_var('tag'); // tags in current query
0d28b7c10758 First commit
ymh
parents:
diff changeset
    59
	$nice_tag_query = str_replace(' ', '+', $nice_tag_query); // get_query_var returns ' ' for AND, replace by +
0d28b7c10758 First commit
ymh
parents:
diff changeset
    60
	$tag_slugs = preg_split('%[,+]%', $nice_tag_query, -1, PREG_SPLIT_NO_EMPTY); // create array of tag slugs
0d28b7c10758 First commit
ymh
parents:
diff changeset
    61
	$tag_ops = preg_split('%[^,+]*%', $nice_tag_query, -1, PREG_SPLIT_NO_EMPTY); // create array of operators
0d28b7c10758 First commit
ymh
parents:
diff changeset
    62
0d28b7c10758 First commit
ymh
parents:
diff changeset
    63
	$tag_ops_counter = 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    64
	$nice_tag_query = '';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    65
0d28b7c10758 First commit
ymh
parents:
diff changeset
    66
	foreach ($tag_slugs as $tag_slug) { 
0d28b7c10758 First commit
ymh
parents:
diff changeset
    67
		$tag = get_term_by('slug', $tag_slug ,'post_tag');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    68
		// prettify tag operator, if any
0d28b7c10758 First commit
ymh
parents:
diff changeset
    69
		if ($tag_ops[$tag_ops_counter] == ',') {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    70
			$tag_ops[$tag_ops_counter] = ', ';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    71
		} elseif ($tag_ops[$tag_ops_counter] == '+') {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    72
			$tag_ops[$tag_ops_counter] = ' + ';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    73
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    74
		// concatenate display name and prettified operators
0d28b7c10758 First commit
ymh
parents:
diff changeset
    75
		$nice_tag_query = $nice_tag_query.$tag->name.$tag_ops[$tag_ops_counter];
0d28b7c10758 First commit
ymh
parents:
diff changeset
    76
		$tag_ops_counter += 1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    77
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    78
	 return $nice_tag_query;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    79
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    80
0d28b7c10758 First commit
ymh
parents:
diff changeset
    81
?>