WordPress同步至Twitter的推文被截断问题求助
看起来你遇到的推文截断问题,大概率是你新添加的my_twitter_cards函数和「Twitter Auto Publish」插件的内容处理逻辑冲突了——毕竟你是换主题加了这段代码后才出的问题,咱们一步步排查解决:
第一步:先定位问题根源
先把functions.php里的my_twitter_cards函数临时注释掉(在函数前后加/*和*/),然后发布一篇测试文章,看看推文还会不会被截断。
- 如果恢复正常,那百分百是这段代码的锅;
- 如果还是截断,再去排查插件设置和主题的其他逻辑。
第二步:修复冲突的自定义代码
假设是代码的问题,大概率是你的my_twitter_cards函数在处理内容时,不小心修改了WordPress原生的文章内容/摘要输出,或者代码里的截断逻辑影响了插件获取完整内容。
先看你代码里没写完的部分,比如如果是处理Twitter Cards的描述字段时用了wp_trim_words或者substr做了短截断,那要注意:这段代码只应该输出页面头部的meta标签,不能修改全局的文章内容数据。
举个正确的写法示例,你可以参考调整:
function my_twitter_cards() { if (is_singular()) { global $post; // 这里修复下用户名称的处理逻辑(原来的str_replace可能写错了) $twitter_user = get_the_author_meta('twitter'); $twitter_user = $twitter_user ? str_replace('@', '', $twitter_user) : 'ConsolezonePL'; $twitter_url = get_permalink(); $twitter_title = get_the_title(); // 这里如果需要截断描述,只针对Twitter Cards的meta,不要影响全局 $twitter_description = wp_trim_words(get_the_content(), 50); // 调整到合适的长度,不影响插件 // 输出Twitter Cards的meta标签,仅此而已 echo '<meta name="twitter:card" content="summary">'; echo '<meta name="twitter:site" content="@' . esc_attr($twitter_user) . '">'; echo '<meta name="twitter:title" content="' . esc_attr($twitter_title) . '">'; echo '<meta name="twitter:description" content="' . esc_attr($twitter_description) . '">'; } } add_action('wp_head', 'my_twitter_cards');
重点是:你的自定义函数只负责输出头部的meta标签,不要去修改get_the_content、get_the_excerpt这些原生函数的返回值,否则插件获取内容时就会拿到截断后的版本。
第三步:排查插件设置
如果代码没问题,去「Twitter Auto Publish」的设置页面看看:
- 有没有设置「推文最大字符数」的选项?如果设得比你的内容短,插件就会自动截断加省略号;
- 是不是选择了「使用文章摘要」而不是「使用完整内容」?如果摘要本身被主题截断了,推文自然也会短。
第四步:检查主题的摘要逻辑
有些主题会在functions.php里修改摘要的长度,比如:
add_filter('excerpt_length', 'my_theme_excerpt_length'); function my_theme_excerpt_length($length) { return 20; // 强制短摘要 }
如果有这类代码,要么调整长度,要么给插件加个例外——比如判断当前是插件调用摘要时,返回更长的长度:
add_filter('excerpt_length', 'my_theme_excerpt_length', 10, 1); function my_theme_excerpt_length($length) { // 判断是否是Twitter Auto Publish插件在调用 if (defined('TWITTER_AUTO_PUBLISH_VERSION')) { return 100; // 给插件返回足够长的摘要 } return 20; // 主题默认的摘要长度 }
按这个流程走,应该能解决你的推文截断问题~
内容的提问来源于stack exchange,提问作者Velans
相关产品推荐
相关产品推荐

