Заголовки WordPress: если длиннее 50 символов, покажите эллипсис

У меня есть сайт 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 } ?> 

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

 echo mb_strimwidth($title, 0, 50, '...'); 
 <?php $title = the_title('','',false); if(strlen($title) > 60): echo trim(substr($title, 0, 65)).'...'; else: echo $title; endif; ?> 

Добавьте это в свой файл "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'); ?> 

Единый код, 100% работающий

PHP-функция mb_strimwidth () | Функция WordPress get_the_title ()

 <?php echo mb_strimwidth( get_the_title(), 0, 100, '...' ); ?> 

Вы проверяете длину строки "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 } ?> 

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

 echo (strlen(the_title())>50) ? (substr(the_title(), 0, 50) . "...") : the_title()); 

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

Вы можете узнать больше о substr здесь: http://php.net/manual/en/function.substr.php

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

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>'; ?>