Запутался в the_content () и the_excerpt () - PullRequest
0 голосов
/ 08 июля 2019

На странице Настройки-> Чтение , которую я установил

Отображается ваша домашняя страница = Ваше последнее сообщение
Для каждой статьи в ленте отображается = Summery

На странице поста администратора WordPress у меня есть 10 статей.Каждая статья имеет основную часть, а некоторые статьи не имеют содержания выдержки, что означает, что эта ячейка выдержки пуста для какой-либо статьи.

Моя цель - показать всю статью со ссылкой read more из-за огромного содержания.

Для этого я использую следующий код:

<?php the_excerpt(); ?>

и в файле functions.php:

function wpdocs_custom_excerpt_length( $length ) {
    return 5;
}
add_filter( 'excerpt_length', 'wpdocs_custom_excerpt_length', 999 );

function wpdocs_excerpt_more( $more ) {
    if ( ! is_single() ) {
        $more = sprintf( '<a class="read-more" href="%1$s">%2$s</a>',
            get_permalink( get_the_ID() ),
            __( '&nbsp;Read More>>>', 'wordpress-theme' )
        );
    }

    return $more;
}
add_filter( 'excerpt_more', 'wpdocs_excerpt_more' );

Теперь на странице блога я вижу, что у некоторых есть ссылка read more , а у некоторых есть полная статья без read more link.почему?

Обновление:

Я вижу, что, если я добавлю какой-либо контент в поле Выдержка , то контент будет отображаться этим экспертомполе и не отображается читать далее ссылка

Если поле пусто, оно отображает содержимое из основного поля содержимого с обрезанными символами, а показывает чтение

Мой обновленный вопрос: почему он не показывает больше информации, если содержимое исходит из поля выдержки?

1 Ответ

0 голосов
/ 08 июля 2019

Ограничить выдержку количеством символов, но НЕ обрезать последнее слово. Это позволит вам вернуть максимальное количество символов, но сохранить полные слова, поэтому будут возвращены только те слова, которые могут уместиться в пределах указанного ограничения по количеству, и вы сможете указать источник, откуда будет взят фрагмент.

function get_excerpt($limit, $source = null){

    $excerpt = $source == "content" ? get_the_content() : get_the_excerpt();
    $excerpt = preg_replace(" (\[.*?\])",'',$excerpt);
    $excerpt = strip_shortcodes($excerpt);
    $excerpt = strip_tags($excerpt);
    $excerpt = substr($excerpt, 0, $limit);
    $excerpt = substr($excerpt, 0, strripos($excerpt, " "));
    $excerpt = trim(preg_replace( '/\s+/', ' ', $excerpt));
    $excerpt = $excerpt.'... <a href="'.get_permalink($post->ID).'">more</a>';
    return $excerpt;
}

/*
Sample...  Lorem ipsum habitant morbi (26 characters total) 

Returns first three words which is exactly 21 characters including spaces
Example..  echo get_excerpt(21);  
Result...  Lorem ipsum habitant 

Returns same as above, not enough characters in limit to return last word
Example..  echo get_excerpt(24);    
Result...  Lorem ipsum habitant  

Returns all 26 chars of our content, 30 char limit given, only 26 characters needed. 
Example..  echo get_excerpt(30);    
Result...  Lorem ipsum habitant morbi
*/

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

Эта функция имеет возможность получить отрывок из любого,

  • the_content
  • the_excerpt

Например, если у вас есть посты, которые содержат текст в поле _excerpt на экране редактора постов, но вместо этого вы хотите извлечь отрывок из тела _content для особого случая использования, который вы вместо этого сделаете;

get_excerpt(140, 'content'); //excerpt is grabbed from get_the_content

Указывает функции, что вы хотите первые 140 символов из the_content, независимо от того, установлена ​​ли выдержка в поле the_excerpt.

get_excerpt(140); //excerpt is grabbed from get_the_excerpt

Это говорит функции, что вы хотите, чтобы первые 140 символов начинались с the_excerpt первыми, где выдержка не существует, the_content будет использоваться как запасной вариант.

Эту функцию можно улучшить, сделав ее более эффективной и включив ее с использованием фильтров WordPress для the_content или the_excerpt или просто используя как есть в ситуациях, когда не существует подходящей встроенной альтернативы WordPress API. .

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