Почему нельзя получить отрывок по идентификатору, как с заголовком и большинством других элементов.
например. get_the_excerpt (ID). Я знаю, как использовать его с функцией $ post-> post_excerpt, но это не возвращает часть содержимого, если не было введено ни одного отрывка, просто ничего не возвращает.
Итак, что я пытаюсь сделать, это получить отрывок по идентификатору, если есть отрывок, и если нет отрывка с этим идентификатором, но есть какой-то контент, вместо этого получить некоторый контент.
Как бы это сделать?
Любые идеи,
Чудесный ...
РЕДАКТИРОВАТЬ --
Зацикливание исходного кода по запросу.
<?php $stories = get_posts('category_name=feedback&numberposts=4');
foreach ($stories as $post) :
$title = $post->post_title;
$excerpt = get_the_excerpt_id($post->ID);
$thumb = get_the_post_thumbnail($post->ID,array(60, 60, true));?>
<div class="textstandard_white" style="font-size:14px; line-height:22px; padding-top:10px;"><b><a href="<?php echo get_permalink($post->ID);?>"><?php echo $title;?></a></b></div><div align="left" style="height:18px; width:82px; background:url(http://www.divethegap.com/update/z-images/structure/icons/stars.png) left top no-repeat;"><div id="stars<?php echo $post->ID;?>" align="left" style="height:18px; background:url(http://www.divethegap.com/update/z-images/structure/icons/stars_glow.png) left top no-repeat;">
</div>
</div>
<script type="text/javascript">
var width<?php echo $post->ID;?> = ((<?php
$Rating = get_post_meta($post->ID, "Rating", true);
echo $Rating;
?> * 20) + '%')
$('#stars<?php echo $post->ID;?>').css('width', width<?php echo $post->ID;?>);
</script><div class="textstandard_white" style="padding-top:6px; font-size:10px; color:#BBB; padding-bottom:10px; border-bottom:1px dotted #BBB; min-height:70px;"><div style="float:left; padding-right:6px; padding-bottom:6px;"><div style="background:#FFF; border:1px solid #FFF;
border-radius: 4px; -moz-border-radius: 4px ; -webkit-border-radius: 4px; padding:4px;"><a href="<?php echo get_permalink($post->ID);?>"><?php echo $thumb;?></a></div></div>
<?php echo $excerpt;?></div>
<?php endforeach;?>
Ответы:
Привет @Robin I. Рыцарь:
Я рассматриваю
get_the_excerpt()
как функцию с устаревшим дизайном. По мере роста использования WordPress появляется много новых сценариев использования, в которых он не подходит, но где используются новые функции для получения различных данных. Одним из примеров является частое использование$args
массива опций функций.Но это легко исправить для ваших нужд. Вот альтернативная функция, которую вы можете использовать, которую вы можете поместить в любое место
functions.php
файла вашей темы :Я не проверял это, но я уверен, что понял это правильно. Если это не отвечает вашим потребностям, пожалуйста, уточните, и, возможно, я могу сделать другие предложения.
источник
setup_postdata($post)
в начале цикла, как предлагает @Rarst. Если это не работает, это может быть плагин, который нужно отключить; ты пробовал это? И вы, вероятно, не хотите вызывать его,get_the_excerpt_id()
потому что WordPress может добавить эту функцию в будущем и сломать ваш сайт. И вы могли бы, вероятно, обойтись без функции в вашем цикле, используяforeach($stories as $story): global $post; $post = $story;
вместо этого.Механика выдержки чрезвычайно запутана. Это не точный ответ на ваш вопрос, но в целом, если вам нужно, чтобы теги шаблонов, специфичные для Loop, работали с возвращаемым массивом,
get_posts()
вы можете эмулировать Loop следующим образом:источник
setup_postdata()
глобального запроса не затронуто, и только данные поста должны быть сброшены.С 3.3.0 появилась новая функция: wp_trim_words
Я использую это вне цикла следующим образом:
Это не следует путать с wp_trim_excerpt, который, очевидно, работает только внутри цикла, так как он вызывает the_content () внутри.
источник
Просто чтобы добавить к ответу MikeSchinkel, который по некоторым причинам не будет работать для меня. Мне пришлось добавить строку setup_postdata, чтобы она работала.
}
Я предполагаю, что если вы используете это вне цикла, то это не должно мешать выполнению других настроек setup_postdata.
ура
источник
Опираясь на ответ Максима, это сработает?
Это кажется мне достаточно прямым, но мне интересно, что я что-то упустил.
источник
Если ВСЕ ваши сообщения имеют
<!--more-->
тег, то вы можете использовать следующее с вашим кодом выше:Конечно, если у вас есть сообщения, у которых нет
<!--more-->
тега, они будут показаны полностью. Работает в моей ситуации, но не для всех ...источник
Я рассматриваю
get_the_excerpt()
как функцию с устаревшим дизайном. По мере роста использования WordPress появляется много новых сценариев использования, в которых он не подходит, но где используются новые функции для получения различных данных. Одним из примеров является частое использование$args
массива опций функций.Но это легко исправить для ваших нужд. Вот альтернативная функция, которую вы можете использовать, которую вы можете поместить в любое место
functions.php
файла вашей темы :Просто чтобы добавить к ответу MikeSchinkel, который по некоторым причинам не будет работать для меня. Мне пришлось добавить строку setup_postdata, чтобы она работала.
источник
wp_reset_post_data()
работать внутри цикла?Это небольшой двухслойный материал, который я часто использую, используя wp_trim_words . Я постоянно чувствую, что нуждаюсь в сокращении и читаю больше функциональных возможностей вне цикла. Кто-то еще может найти это полезным. Вот что я использую для:
Я вставил это прямо в настраиваемый шаблон, который я редактирую.
Сломать
1. Содержание выдержки
Получить отрывок по идентификатору публикации, но получить содержимое публикации, если отрывок не был установлен.
Я использую If / Else PHP стенографию .
2. Длина слова
Установите количество слов в выдержке до 20
3. Выберите ReadMore Content (ссылка / текст)
Я имел обыкновение
$dapost->guid
получать URL, потому что мне не нужны дружественные URL, и я хотел избежать повторного обращения к БД. Вы всегда можете использовать get_the_permalink.Смотрите wp_trim_words в документации Wordpress.
источник
Это сработало для меня:
источник
Из WP 4.5.0 возможно использование идентификатора записи в качестве параметра
get_the_excerpt( $post->ID )
Источник: https://developer.wordpress.org/reference/functions/get_the_excerpt/
источник
Это быстрее:
источник