Заголовки WordPress: Если длиннее 50 символов, показать многоточие - PullRequest
20 голосов
/ 06 января 2011

У меня есть WordPress-сайт с заголовками, и если заголовок содержит более 50 символов, мне нужно добавить многоточие (...) в конце заголовка и остановить заголовок на 50 символов.Ниже приведен PHP, который я пишу, но, похоже, он не работает должным образом, ища PHP-гуру, который научит меня, как это сделать.Любая помощь будет принята с благодарностью.

<?php if (strlen("the_title()") > 50) { ?>
                <?php the_title(); ?>
            <?php } if (strlen("the_title()") < 50) { ?>
                <?php echo substr(get_the_title(), 0, 50); ?>...
            <?php } ?>   

Ответы [ 8 ]

68 голосов
/ 06 января 2011

Функция mb_strimwidth делает именно это.

echo mb_strimwidth(get_the_title(), 0, 50, '...');
4 голосов
/ 24 ноября 2016

Один код, 100% работает

Функция PHP mb_strimwidth () | Функция Wordpress get_the_title ()

<?php 
echo mb_strimwidth( get_the_title(), 0, 100, '...' ); 
?>
4 голосов
/ 29 июня 2016

WordPress имеет встроенную функцию "wp_trim_words()", чтобы обрезать предложения в зависимости от количества слов, которые вы вводите,

https://codex.wordpress.org/Function_Reference/wp_trim_words

, чтобы обрезать заголовок больше, чем 5 слов, которые вы можете сделатьэто

<?php
$title = get_the_title();
$short_title = wp_trim_words( $title, 5, '...' );
echo '<h3>'.$short_title.'</h3>';
?>
2 голосов
/ 29 октября 2014

Добавьте это в ваш файл "functions.php" в папке вашей темы ....

function the_title_excerpt($before = '', $after = '', $echo = true, $length = false) 
  {
    $title = get_the_title();

    if ( $length && is_numeric($length) ) {
        $title = substr( $title, 0, $length );
    }

    if ( strlen($title)> 0 ) {
        $title = apply_filters('the_title_excerpt', $before . $title . $after, $before, $after);
        if ( $echo )
            echo $title;
        else
            return $title;
    }
}

затем назовите заголовок следующим образом

<?php the_title_excerpt('', '...', true, '50'); ?>
1 голос
/ 12 января 2011
<?php 
$title  = the_title('','',false);
if(strlen($title) > 60):
    echo trim(substr($title, 0, 65)).'...';
else:
    echo $title;
endif;
?>
1 голос
/ 06 января 2011

Вы проверяете длину строки "the_title()". Удалите кавычки, и это, вероятно, сработает (я не уверен на 100% в разнице между the_title () и get_the_title (), так как я некоторое время не использовал Wordpress - возможно, вам придется изменить это тоже) :

<?php if (strlen(the_title()) > 50) { ?>
                <?php the_title(); ?>
            <?php } if (strlen(the_title()) < 50) { ?>
                <?php echo substr(get_the_title(), 0, 50); ?>...
            <?php } ?>   

или, может быть,

<?php if (strlen(get_the_title()) > 50) { ?>
                <?php the_title(); ?>
            <?php } if (strlen(get_the_title()) < 50) { ?>
                <?php echo substr(get_the_title(), 0, 50); ?>...
            <?php } ?>   
0 голосов
/ 06 января 2011
echo (strlen(the_title())>50) ? (substr(the_title(), 0, 50) . "...") : the_title());

Это троичный оператор.В основном это говорит о том, что если результат из the_title() превышает 50 символов, то выводятся первые 50 символов, а затем строка ....В противном случае просто введите результат из the_title().

Подробнее о substr можно прочитать здесь: http://php.net/manual/en/function.substr.php

Информацию о троичном операторе можно найти здесь: http://php.net/manual/en/language.operators.comparison.php

0 голосов
/ 06 января 2011

Извлечение the_title() из кавычек при использовании функции strlen().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...