Wordpress: Как получить разные длины выдержки в зависимости от параметра - PullRequest
0 голосов
/ 28 августа 2010

Длина выдержки в wordpress по умолчанию составляет 55 слов.

Я могу изменить это значение следующим кодом:

function new_excerpt_length($length) {
    return 20;
}
add_filter('excerpt_length', 'new_excerpt_length');

Итак, следующий вызов вернет всего 20 слов:

the_excerpt();

Но я не могу понять, как я могу добавить параметр для получения различной длины, чтобы я мог вызвать, например:

the_excerpt(20);

the_excerpt(34);

Есть идеи? Спасибо!

Ответы [ 3 ]

7 голосов
/ 03 сентября 2010

хм, отвечая мне снова, решение было на самом деле довольно тривиальным. Насколько я знаю, невозможно передать параметр в функцию my_excerpt_length () (если вы не хотите изменять основной код WordPress), но возможно использовать глобальную переменную. Итак, вы можете добавить что-то вроде этого в ваш файл functions.php:

function my_excerpt_length() {
global $myExcerptLength;

if ($myExcerptLength) {
    return $myExcerptLength;
} else {
    return 80; //default value
    }
}
add_filter('excerpt_length', 'my_excerpt_length');

И затем, перед вызовом выдержки в цикле, вы указываете значение для $ myExcerptLength (не забудьте установить его обратно в 0, если вы хотите иметь значение по умолчанию для остальных ваших сообщений):

<?php
    $myExcerptLength=35;
    echo get_the_excerpt();
    $myExcerptLength=0;
?>
1 голос
/ 29 августа 2010

Нет способа сделать это, насколько я нашел, с помощью the_excerpt ().

Есть похожий вопрос StackOverflow здесь .

ЕдинственноеЯ нашел сделать, это написать новую функцию, чтобы занять место the_excerpt ().Поместите некоторые варианты кода ниже в functions.php и вызовите limit_content ($ yourLength) вместо the_excerpt ().

function limit_content($content_length = 250, $allowtags = true, $allowedtags = '') {
    global $post;
    $content = $post->post_content;
    $content = apply_filters('the_content', $content);
    if (!$allowtags){
        $allowedtags .= '<style>';
        $content = strip_tags($content, $allowedtags);
    }
    $wordarray = explode(' ', $content, $content_length + 1);
    if(count($wordarray) > $content_length) {
        array_pop($wordarray);
        array_push($wordarray, '...');
        $content = implode(' ', $wordarray);
        $content .= "</p>";
    }
    echo $content;
}

(Кредит функции: fusedthought.com )

Существуют также плагины с «расширенной выдержкой», которые предоставляют такую ​​функциональность, которую вы можете проверить.

0 голосов
/ 30 августа 2010

Спасибо за ваш ответ, thaddeusmt.

Я наконец-то реализую следующее решение, которое предлагает различную длину в зависимости от категории и счетчика ($myCounter - это счетчик в цикле)

/* Custom length for the_excerpt */ 
function my_excerpt_length($length) {
    global $myCounter;

    if (is_home()) {
        return 80;
    } else if(is_archive()) {
        if ($myCounter==1) {
            return 60;
        } else {
            return 25;
        }
    } else {
        return 80;
    }
}
add_filter('excerpt_length', 'my_excerpt_length');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...