如何在剥离html时用文章的前N个单词替换Get_the_Excerpt

时间:2018-08-25 作者:Cableboy

我正试图将推特卡片功能添加到Wordpress博客中,这样每当有人在推特上发布文章链接时,卡片就会显示出来。这是我输入的代码functions.php 将我的主题插入头部:

function add_twitter_cards() {
if(is_single()) {
$tc_url    = get_permalink();
$tc_title  = get_the_title();
$tc_description   = get_the_excerpt();
$tc_image = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), full );
$tc_image_thumb  = $tc_image[0];
$tc_author   = str_replace(\'@\', \'\', get_the_author_meta(\'twitter\'));?>

<meta name="twitter:card" value="summary" />
<meta name="twitter:site" value="@username" />
<meta name="twitter:title" value="<?php echo $tc_title; ?>" />
<meta name="twitter:description" value="<?php echo $tc_description; ?>" />
<meta name="twitter:url" value="<?php echo $tc_url; ?>" />
    <?php if($tc_image) { ?>
  <meta name="twitter:image" value="<?php echo $tc_image_thumb; ?>" />
    <?php } if($tc_author) { ?>
    <meta name="twitter:creator" value="@<?php echo $tc_author; ?>" />
<?
    }
    }
}
问题是博客没有手动定义的摘录,所以twitter:description字段输出为空。然后我试着替换get_the_excerpt 以此引出文章的前20个字:

apply_filters( \'the_content\', wp_trim_words( strip_tags( $post->post_content ), 20 ) );
但当我需要纯文本时,它会插入HTML代码。有什么建议吗?

1 个回复
SO网友:cjbj

正如你从get_the_excerpt 最后有一个过滤器用于修改结果。这可能是最经得起未来考验的方法。如果在某个时候,博客将手动编写摘录,则将使用这些摘录。如果您为推特卡编写自定义函数,则不会出现这种情况。那么,让我们从这里开始:

add_filter (\'get_the_excerpt\', \'wpse312463_custom_excerpt\');
现在要做三件事:删除短代码、删除html和限制字数。我们开始吧:

function wpse312463_custom_excerpt ($excerpt, $post) {
  if (empty ($excerpt)) $excerpt = $post->content;
  $excerpt = strip_tags (strip_shortcodes ($excerpt));
  $excerpt = wp_trim_words ($excerpt, 55);
  return $excerpt;
  }
您甚至可以将最后三行打包成一条语句,但这不是很可读。

结束

相关推荐

如何使用wp_oembed_get(删除圆角边框)设置Twitter帖子的参数?

我对WordPress很陌生。我已经为嵌入内容(使用碳字段)和oEmbed创建了一个自定义字段。它只需使用以下代码即可工作:echo wp_oembed_get($variable); The$variable 在循环中检索,并包含指向Twitter帖子的URL。这篇文章显示在我的索引页上,带有(非预期的)圆形边框。如何使用参数删除这些边框chrome=noborders provided by Twitter?