WP_Trim_Words()不裁剪WordPress中的_Content()

时间:2019-03-08 作者:teccraft

在我的WordPress网站中,我想在自定义博客模板上显示每个blog\\u帖子的简短文本。我想展示一个Read More 按钮,最后有一个帖子链接,用户可以点击该链接查看完整帖子。

但我总是得到整个帖子,而不是它的摘要。

这是我的代码:

$moreLink = \'<a href="\' . the_permalink() . \'"> Read More...</a>\';
$wp_query = new WP_Query();
while ($wp_query->have_posts()) : $wp_query->the_post(); ?>

<h2><a href="<?php the_permalink(); ?>" title="Read more"><?php the_title(); ?></a></h2>
<?php the_excerpt(); ?>
<?php echo wp_trim_words( the_content(), 55, $moreLink); ?>
<?php endwhile; ?>
我尝试了不同的代码,而不是wp_trim_words(the_content(), 55, $moreLink); 在没有运气的情况下在线找到。即使我在另一个自定义模板上使用了同一行代码,它也工作得很好。但是,使用此模板时,它不起作用。

我的代码有什么错误吗?

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

问题在于这一行:

<?php echo wp_trim_words( the_content(), 55, $moreLink); ?>
你打电话the_content 功能在那里。此函数打印所有内容,不返回任何内容。这意味着打印内容,然后将空字符串传递给wp_trim_words.

它应该是:

<?php echo wp_trim_words( get_the_content(), 55, $moreLink); ?>
Be careful 因为,如中所述codex, get_the_content() 不通过“the\\u content”筛选器传递内容。这意味着它不会执行短代码。如果你想得到什么the_content() 指纹,你必须使用

<?php
$my_content = apply_filters( \'the_content\', get_the_content() );
echo wp_trim_words( $my_content, 55, $moreLink);
?>
我建议也使用wp_strip_all_tags(), 否则,您可能会遇到已修剪的打开标记的问题。

完整示例:

<?php
$my_content = apply_filters( \'the_content\', get_the_content() );
$my_content = wp_strip_all_tags($my_content);
echo wp_trim_words( $my_content, 55, $moreLink);
?>

相关推荐

_Excerpt筛选器未按预期工作

我有个问题the_excerpt 滤器出于某种原因,如果在帖子列表中显示的帖子只包含短代码,它将无论如何执行这些短代码。我想要的是,如果它是一个封闭的短代码,则显示内容;如果它是一个自动关闭的短代码,则将其全部删除,如果是这种情况,则返回一个空字符串。我用这个函数去掉所有的短代码(因为strip_shortcodes($content)) 也不起作用:add_filter(\'the_excerpt\', \'my_custom_excerpt\' ); function my_custom_ex