You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:41:12