问题描述
为什么人们不能像标题和大多数其他元素一样获得 ID 的摘录。
例如。 get_the_excerpt(ID) 。我知道如何使用 $ post-> post_excerpt 函数,但是如果没有输入任何摘录,那么它不会返回部分内容。
所以我想要做的是获取摘录的 ID,如果有一个摘录,如果没有摘录与该 ID,但有一些内容,以获得一些内容。
怎么会这样做
有任何想法吗,
奇妙的…
编辑 –
循环源代码被请求。
<?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%20echo%20get_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%20echo%20get_permalink($post->ID);?>"><?php echo $thumb;?></a></div></div>
<?php echo $excerpt;?></div>
<?php endforeach;?>
最佳解决方案
嗨 @Robin I. 骑士:
我将 get_the_excerpt()
视为传统设计的功能。随着 WordPress 使用的增长,有很多更新的 use-cases,它不适合,但更新的功能,以获得不同的数据。一个例子是现在频繁使用 $args
阵列的功能选项。
但是,很容易解决您的需求。这是一个可以使用的替代功能,您可以将其放置在主题的 functions.php
文件中的任何位置:
function robins_get_the_excerpt($post_id) {
global $post;
$save_post = $post;
$post = get_post($post_id);
$output = get_the_excerpt();
$post = $save_post;
return $output;
}
我没有测试过,但我确信我是对的。如果这不符合您的需求,请详细说明,也许我可以提出其他建议。
次佳解决方案
摘录的力量非常混乱。这不是您的问题的准确答案,但一般来说,如果您需要制作特定于循环的模板标签,使用 get_posts()
返回的数组,您可以像这样模仿循环:
$stories = get_posts();
foreach ($stories as $post) {
setup_postdata($post);
// stuff
}
wp_reset_postdata();
第三种解决方案
自 3.3.0 以来有一个新功能:wp_trim_words
我在循环之外使用它,如下所示:
<?php if ( $post_id ) {
$post = get_post( $post_id );
if ( $post ) { ?>
<h2><?php echo $post->post_title; ?></h2>
<p><em><?php echo wp_trim_words( $post->post_content ); ?></em></p>
<p><strong>This article can only be read by subscribers.</strong></p>
<?php } } ?>
这不是与 wp_trim_excerpt 混淆,这显然只能在循环中起作用,因为它在内部调用了 the_content() 。
第四种方案
只是为了补充 MikeSchinkel 的答案,由于某种原因,这对我来说是不行的。我必须添加 setup_postdata 线才能使其工作。
function get_the_excerpt( $post_id ){
global $post;
$save_post = $post;
$post = get_post($post_id);
setup_postdata( $post ); // hello
$output = get_the_excerpt();
$post = $save_post;
return $output;
}
我假设如果你在循环之外使用它,那么它不应该干扰其他 setup_postdata 。
干杯
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。