【问题标题】:WordPress post text corruptionWordPress帖子文本损坏
【发布时间】:2015-07-21 19:00:44
【问题描述】:

昨天开始使用WordPress 4.1(Windows 7,Apache 2.4,MySQL 5.5,PHP 5.6.1,UTF8,一般通用设置)的一个小型私人博客。我开始将我的文章转入其中;有几篇没问题,但我发现有两篇无法正确保存。

当试图将这些文章保存为帖子时,WordPress 会刷新并显示损坏的文本版本。确切的损坏是:文章的中间被删除,而插入了几个垃圾字符(例如 %D?)。

我尝试将 WP 更新到当前 (4.2.2) 版本 - 错误相同(更新:4.2.3 - 错误相同)。我试图将文章保存为页面而不是帖子 - 错误是相同的。我尝试了标准主题而不是自定义 - 错误是一样的。

看起来“已发布”文章比其他文章更长 - 5.2Kb 和 7.5Kb。我试着看看如果我保存较少的部分会发生什么。虽然保存了一个很短的片段,但效果很好。如果制作更长的片段,WP 会丢失此文本的尾部。如果制作更长的部分,WP开始失去中间部分,如上所述。

目前我不知道如何修复或调试这种情况。有什么建议吗?

========== 附加信息 ==========

我尝试将这段代码执行到我的博客中:

<?php

  $my_post = array(
     'post_title' => 'Caption',
     'post_status' => 'publish',
     'post_content' => 'the very-very-long text of my article'
  );

  echo wp_insert_post( $my_post );

?>

当执行时,它应该是很好的帖子(感谢 urka_mazurka 的建议)。

当我尝试将这篇文章编辑到 WP 中时,保存时它也损坏了。此外,当我试图将这个 PHP 文件编辑到 WP 中(使用编辑主题工具)时,它也会在保存时损坏。

===== 附加信息 2 =====

wp_posts 排序规则是 utf8mb4_unicode_ci(SHOW TABLE STATUS 的结果)

看起来 urka_mazurka 是最接近的……至少我可以通过wp_insert_post 发布这些帖子。太糟糕了,因为他没有发布任何答案,所以我无法向他提出赏金问题。

【问题讨论】:

标签: php windows wordpress apache


【解决方案1】:

根据您的解释,问题似乎出在 WordPress 核心上,我建议您尝试不同的方法:

  1. 使用 wp_insert_post 函数插入帖子,但没有内容或像一个简单的单词这样的“安全”内容。
  2. 然后使用$wpdb 将帖子更新为真实内容。

以下是我将如何做的片段:

  $my_post = array(
     'post_title' => 'Caption',
     'post_status' => 'publish',
     'post_content' => 'dummy text'
  );
//get the post id
  $post_id = wp_insert_post( $my_post );

global $wpdb;
//now update the post with the real text
$wpdb->update( 
     $wpdb->prefix . 'posts', 
    array( 
        'post_content' => 'YOUR LONG TEXT HERE',    
    ), 
    array( 'ID' => $post_id ), 
    array('%s'), 
    array('%d') 
);

如果您没有得到您想要的结果,那么您的 php 配置或 MySQL 配置有问题,除非您愿意尝试更不友好的解决方案并使用 $wpdb->query 而不是 $wpdb-&gt;update,如下所示:

$big_text = "YOUR BIG TEXT HERE";
$wpdb->query(
    "UPDATE $wpdb->posts 
    SET post_content = $big_text
    WHERE ID = $post_id"
);

让我们知道。

【讨论】:

    【解决方案2】:

    确保您要传输的文章没有嵌入字符编码。当您尝试从 Microsoft Word 文档等格式化文档中复制内容时,这是一个常见问题,因为它会在复制文本时保存字符编码信息。

    在 WordPress WYSIWYG 框中,有一个图标可以显示源代码。通过查看这个,您可能会发现奇怪的字符编码。

    另外,请尝试在文本编辑器中粘贴您的文章,并将所有文本转换为标准 UTF-8 编码,然后再粘贴到 WordPress。

    【讨论】:

    • 谢谢。我想没有任何嵌入的字符(我不使用 WordPress 的所见即所得)。我尝试从 Notepad++ UTF-8 文本粘贴到 WordPress 中,没有任何变化。
    • 如果您尝试通过 ajax 函数(调用 wp_insert_post)插入帖子内容怎么办?这样应该可以排除数据库问题
    • 谢谢,@urka_mazurka,我试过了(在问题文本中描述为添加)
    【解决方案3】:

    您是否尝试禁用 mod_security (through .htaccess)?

    <IfModule mod_security.c>
    SecFilterEngine Off
    SecFilterScanPOST Off
    </IfModule>
    

    有很多人抱怨在 Wordpress 中保存长帖子的问题,或者由于某些单词而无法保存的帖子。那是因为有时 Wordpress 在启用 mod_security 的情况下无法正常运行。其中一些通过禁用此功能解决了这个问题......其中一些通过更改 WP 内存限制解决了这个问题......也许其中一些将帮助您解决问题(或至少缩小范围)。

    【讨论】:

    • 感谢您的回答。我试过这个 - 没有任何改变 :( 确切地说,我在 #END WORDPRESS 之后将这些行放入博客的 .htaccess 中,重新启动 Apache,尝试保存文本并像往常一样看起来损坏。
    • 我相信这些规则需要在 WordPress 的规则之前出现。
    【解决方案4】:

    几个建议:

    *切勿从 Word 复制/粘贴到 WordPress。

    *始终确保以未格式化的纯文本形式过去

    *如果您不确定,您可以随时复制/粘贴到记事本++,然后复制/粘贴到 wordpress。

    *如果您看到奇怪的字符,那可能是 UTF8 编码问题。在将站点从开发环境冒泡到集成环境时,我们曾经遇到过这个问题。我们通过在 notepad++ 中打开 .sql 整个数据库,然后转到 Encoding -> UTF8 -> Save

    来解决它

    【讨论】:

      【解决方案5】:

      您需要检查“wp-config.php”文件以确认下面编写的代码存在于其中:

      define('DB_CHARSET', 'utf8');
      

      如果文件中存在上述代码并且您仍然遇到问题,请在主题的“header.php”文件中添加this code

      【讨论】:

      • 谢谢,但没有任何改变
      【解决方案6】:

      为您的帖子添加帖子作者帖子类型

      在这里传递用户 ID 作为 post_author(1 是我们在安装 wordpress 时创建的第一个用户)

      $my_post = array(
          'post_title' => 'Caption',
          'post_status' => 'publish',
          'post_type'   => 'post',
          'post_content' => 'the very-very-long text of my article',
          'post_author'   => 1,
      );
      

      【讨论】:

        【解决方案7】:

        我终于解决了。

        所有这些#@$@#$@#$ 都是因为 php.ini 的 sys_temp_dir 选项拼写错误。每次 PHP 引擎无法创建临时文件时,都会使用这种独特的技术压缩帖子内容而没有任何明显的警告。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-11-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多