我正试图将推特卡片功能添加到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代码。有什么建议吗?
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;
}
您甚至可以将最后三行打包成一条语句,但这不是很可读。