если условие ограничить слова в заголовке WordPress - PullRequest
2 голосов
/ 09 августа 2011

Я написал этот код, чтобы просмотреть последние 6 постов в моем блоге и отобразить их в специальном окне, но есть небольшая проблема, когда я пишу более длинные заголовки, заголовок перемещается на следующую строку. Я не могу увеличить ширину моего div заголовка, поэтому мне нужно написать условие if, чтобы показать "...", если заголовок перемещается на следующую строку после, скажем, 20 символов.

<div id="freshlyWrapper">
<div id="freshlyposts">
<?php
$freshlyIonised = new WP_Query();
$freshlyIonised->query('category_name=FreshlyIonised&showposts=6');
while($freshlyIonised->have_posts()):
$freshlyIonised->the_post();
?>
<div class="freshlyionisedbox"><h3><a style='text-decoration: underline; color: #000;' href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>

Ответы [ 5 ]

3 голосов
/ 09 августа 2011

Существует лучший способ с помощью CSS:

DIV.freshlyionisedbox {
    border: 1px solid #000000;
    white-space: nowrap;
    width: 150px;
    overflow: hidden;
    text-overflow: ellipsis;
}

Преимущество этого в том, что семантическое содержимое вашей страницы сохраняется, и вам не нужно гадать, сколько символов поместится наэкран пользователя в определенном количестве пикселей.

2 голосов
/ 09 августа 2011

Способ substr :

$title = "The quick brown fox jumped over the lazy dog.";
echo strlen($title) > 25 ? substr($title, 0, 25).'...' : $title;
// The quick brown fox jumpe...

Это то, что я обычно использую, чтобы предотвратить обрезание слов:

function truncate($str, $width, $cutword = false) {
    if (strlen($str) <= $width) return $str;
    list($out) = explode("\n", wordwrap($str, $width, "\n", $cutword), 2);
    return $out.'...';
}

$title = "The quick brown fox jumped over the lazy dog.";
echo truncate($title, 25); 
// The quick brown fox...

$title = "The quick brown fox";
echo truncate($title, 25); 
// The quick brown fox
1 голос
/ 09 августа 2011

Попробуйте ...

$title = get_the_title();
if (strlen($title) > 20) $title = substr($title, 0, 17) . "...";
1 голос
/ 09 августа 2011

Попробуйте substr :

$title = get_the_title();

if (strlen($title) > 20)
    $title = substr( $title, 0 , 20 ) . "..."; // Limits title to 20 characters.

Реализуйте так:

<div id="freshlyWrapper">
<div id="freshlyposts">
<?php
    $freshlyIonised = new WP_Query();
    $freshlyIonised->query('category_name=FreshlyIonised&showposts=6');
    while($freshlyIonised->have_posts()):
        $freshlyIonised->the_post();

        $title = get_the_title();

        if (strlen($title) > 20)
            $title = substr( $title, 0 , 20 ) . "..."; // Limits title to 20 characters.
?>
<div class="freshlyionisedbox">
    <h3><a style='text-decoration: underline; color: #000;' href="<?php the_permalink(); ?>"><?php echo $title; ?></a></h3>
0 голосов
/ 10 сентября 2016

вам не нужно условие, примените это

echo mb_strimwidth(get_the_title(), 0, 20, '...');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...