通过特定的帖子ID获取帖子摘录和标题?

时间:2012-12-18 作者:Gopal Bhattacharjee

我正在尝试通过特定的帖子ID获取帖子摘录和标题。我的帖子ID是6,代码如下

<?php
    $id = 6;
    $post = get_post( $id );
    $excerpt = get_excerpt( $id);
    $excerpt = $post->post_excerpt;
?>
<h6><?php the_title(); ?></h6>

<?php echo get_excerpt(190); ?>
它显示了帖子ID 6的标题,但摘录错误。。。此外,我的functions.php

// Changing excerpt length
function get_excerpt($count){
    $permalink = get_permalink($post->ID);
    $excerpt = get_the_content();
    $excerpt = strip_tags($excerpt);
    $excerpt = substr($excerpt, 0, $count);
    $excerpt = substr($excerpt, 0, strripos($excerpt, " "));
    $excerpt = $excerpt.\'... <a href="\'.$permalink.\'">Read More</a>\';
    return $excerpt;
}
任何帮助都将不胜感激。。。

5 个回复
SO网友:s_ha_dum

你的get_excerpt() 函数使用global $post 变量,它超出了函数的范围。

// Changing excerpt length
function get_excerpt($count){
    $permalink = get_permalink($post->ID);
    $excerpt = get_the_content();
    $excerpt = strip_tags($excerpt);
    $excerpt = substr($excerpt, 0, $count);
    $excerpt = substr($excerpt, 0, strripos($excerpt, " "));
    $excerpt = $excerpt.\'... <a href="\'.$permalink.\'">Read More</a>\';
    return $excerpt;
}
这意味着当您这样做时:

$id = 6;
$post = get_post( $id );
$excerpt = get_excerpt( $id);
您正在尝试获取该职位content 对于current 根据ID 您试图获取其摘录的帖子,但$post 将超出范围,因此“未定义”。那么,假设$post 已设置,。。。

$excerpt = $post->post_excerpt;
。。。然后,您将使用循环中当前帖子的原始摘录数据完全覆盖生成的“摘录”数据。

然后。。。

echo get_excerpt(190);
。。。你抓取摘录from the current post in the Loop 再次重复,并回应它。

你所做的在几个方面都是错误的。我不得不假设您在不理解代码的情况下复制和粘贴了该代码,这是非常危险的。我警告你不要这样。

WordPress核心功能get_the_title() 将接受ID参数,但get_the_excerpt() 不会,因此,既然您需要两者,那么最好只检索post对象。

$id = 6;
$p = get_post($id);
// var_dump($p);
echo apply_filters(\'the_title\',$p->post_title);
echo apply_filters(\'the_excerpt\',$p->post_excerpt); // for a manually created excerpt
要从帖子内容中生成摘录,您需要如下内容:

$text = $p->post_content;
$text = strip_shortcodes( $text );
$text = apply_filters( \'the_content\', $text );
$text = str_replace(\']]>\', \']]&gt;\', $text);
$excerpt_length = apply_filters( \'excerpt_length\', 55 );
$excerpt_more = apply_filters( \'excerpt_more\', \' \' . \'[&hellip;]\' );
$text = wp_trim_words( $text, $excerpt_length, $excerpt_more );
echo $text;
这实际上只是核心功能的简化版本wp_trim_excerpt()

您可以使用excerpt_length 滤器根据法典中的示例:

function custom_excerpt_length( $length ) {
    return 20;
}
add_filter( \'excerpt_length\', \'custom_excerpt_length\', 999 );

SO网友:Sisir

<?php echo get_excerpt(190); ?> 这部分是错误的。您正在打印摘录自id = 190 仅使用echo $excerpt. 你也不需要排队<?php echo get_excerpt(190); ?>

仔细阅读codex页面,您将看到许多有助于理解函数如何工作的示例http://codex.wordpress.org/Function_Reference/get_post

SO网友:Courtney Ivey

看来你有很多事情要做。。。

我会尝试以下方法:

$id = 6;
$post = get_post( $id );
$excerpt = get_excerpt(\'190\');
并使用以下内容显示摘录:

echo $excerpt;

SO网友:ukando

为什么不回显$摘录变量?我认为这应该行得通。不要这样做:

<?php echo get_excerpt(190); ?>
执行以下操作:

<?php echo $excerpt; ?>

SO网友:Yamu

如果您想获得id为6的特定职位的专家,只需执行以下操作:

<?php
$id = 6;
$posts = get_posts($id)
foreach($posts as $post):?>
<h6><?php echo $post->post_title;?></h6>
<p><?php echo $post->post_excerpt();?></p>
<?php endforeach; ?>
这将简单地给出id为6的帖子的标题和摘录。

结束

相关推荐

将get_the_excerpt()定制为特定长度并“阅读更多”输出。

我正在制作模板。这里有一个从前1-2段(一个类别中的所有文章)抓取介绍的列表。如果我将摘录设置为295个单词,有时列表会从下一段中抓取其他单词。我想添加一个Read More标签来阻止它。有人能帮我做那个部分吗?<div id=\"all-div-cabrand-content-stories\"> <div class=\"kids-families-con-cabrand-stories\"> <?php echo get_the_