| 1 |
<?php |
| 2 |
|
| 3 |
// Do not use outside the Loop! |
| 4 |
function the_advanced_excerpt( $args = '', $get = false ) { |
| 5 |
global $advanced_excerpt; |
| 6 |
if ( !empty( $args ) && !is_array( $args ) ) { |
| 7 |
$args = wp_parse_args( $args ); |
| 8 |
|
| 9 |
// Parse query style parameters |
| 10 |
if ( isset( $args['ellipsis'] ) ) { |
| 11 |
$args['ellipsis'] = urldecode( $args['ellipsis'] ); |
| 12 |
} |
| 13 |
|
| 14 |
if ( isset( $args['allowed_tags'] ) ) { |
| 15 |
$args['allowed_tags'] = preg_split( '/[\s,]+/', $args['allowed_tags'] ); |
| 16 |
} |
| 17 |
|
| 18 |
if ( isset( $args['exclude_tags'] ) ) { |
| 19 |
$args['exclude_tags'] = preg_split( '/[\s,]+/', $args['exclude_tags'] ); |
| 20 |
} |
| 21 |
} |
| 22 |
|
| 23 |
// convert legacy arg use_words to it's udpated equivalent |
| 24 |
if ( isset( $args['use_words'] ) ) { |
| 25 |
$args['length_type'] = ( 1 == $args['use_words'] ) ? 'words' : 'characters'; |
| 26 |
unset( $args['use_words'] ); |
| 27 |
} |
| 28 |
|
| 29 |
// convert legacy args finish_word & finish_sentence to their udpated equivalents |
| 30 |
if ( isset( $args['finish_word'] ) || isset( $args['finish_sentence'] ) ) { |
| 31 |
|
| 32 |
$defaults = array( |
| 33 |
'finish_word' => 0, |
| 34 |
'finish_sentence' => 0 |
| 35 |
); |
| 36 |
|
| 37 |
$args = wp_parse_args( $args, $defaults ); |
| 38 |
|
| 39 |
if ( 0 == $args['finish_word'] && 0 == $args['finish_sentence'] ) { |
| 40 |
$args['finish'] = 'exact'; |
| 41 |
} else if ( 1 == $args['finish_word'] && 1 == $args['finish_sentence'] ) { |
| 42 |
$args['finish'] = 'sentence'; |
| 43 |
} else if ( 0 == $args['finish_word'] && 1 == $args['finish_sentence'] ) { |
| 44 |
$args['finish'] = 'sentence'; |
| 45 |
} else { |
| 46 |
$args['finish'] = 'word'; |
| 47 |
} |
| 48 |
|
| 49 |
unset( $args['finish_word'] ); |
| 50 |
unset( $args['finish_sentence'] ); |
| 51 |
} |
| 52 |
|
| 53 |
if ( ! empty( $args['allowed_tags'] ) || ! empty( $args['exclude_tags'] ) ) { |
| 54 |
if ( isset( $args['allowed_tags'] ) && ! in_array( '_all', (array) $args['allowed_tags'] ) ) { |
| 55 |
$args['allowed_tags_option'] = 'remove_all_tags_except'; |
| 56 |
} else if ( ! isset( $args['allowed_tags'] ) ) { |
| 57 |
$args['allowed_tags_option'] = 'remove_all_tags_except'; |
| 58 |
} |
| 59 |
} |
| 60 |
|
| 61 |
// Set temporary options |
| 62 |
$advanced_excerpt->options = wp_parse_args( $args, $advanced_excerpt->options ); |
| 63 |
|
| 64 |
// Ensure our filter is hooked, regardless of the page type |
| 65 |
if ( ! has_filter( 'get_the_excerpt', array( $advanced_excerpt, 'filter_excerpt' ) ) ) { |
| 66 |
remove_all_filters( 'get_the_excerpt' ); |
| 67 |
remove_all_filters( 'the_excerpt' ); |
| 68 |
add_filter( 'get_the_excerpt', array( $advanced_excerpt, 'filter_excerpt' ) ); |
| 69 |
} |
| 70 |
|
| 71 |
if ( $get ) { |
| 72 |
return get_the_excerpt(); |
| 73 |
} else { |
| 74 |
the_excerpt(); |
| 75 |
} |
| 76 |
|
| 77 |
// Reset the options back to their original state |
| 78 |
$advanced_excerpt->load_options(); |
| 79 |
} |
| 80 |
|
| 81 |
function the_advanced_excerpt_lang( $atts, $content = '' ) { |
| 82 |
|
| 83 |
$settings = shortcode_atts( array( |
| 84 |
'lang' => 'en_us', |
| 85 |
), $atts ); |
| 86 |
|
| 87 |
$settings['lang'] = strtolower( $settings['lang'] ); |
| 88 |
$locale = strtolower( get_locale() ); |
| 89 |
|
| 90 |
if ( $locale == $settings['lang'] ) { |
| 91 |
return $content; |
| 92 |
} |
| 93 |
|
| 94 |
return; |
| 95 |
|
| 96 |
} add_shortcode( 'advanced_excerpt_text', 'the_advanced_excerpt_lang' ); |