• discuz怎么转wordpress,详细实操过程


    因为原来的是Discuz! X3.4论坛,目前访问不了,但里面有两个栏目是比较有用的,一个付费栏目,另一个免费栏目,放在硬盘有点可惜,于是想把它转为wordpress的两个栏目。发现网上都没有详细过程,非常郁闷。于是自己实操了起来,成功地转为wordpress的两个栏目。请看这个案例网站:网创无忧。好了,废话不多说,请看详细步骤。(所使用到的文件都会在最后提供下载,省得你去找和编写)

    1、准备工作和使用工具

    a、准备工作。

    原来的论坛是安装了VIP用户隐藏可见 1.4.8 ,所以请你准备搭建好一个新的wordpress和柒比贰主题2.8.0并安装好,并且主题里的等级制度设置成“永久会员”和“年会员”并启用。wordpress里的栏目设置成两个。(如果你想迁移多个栏目,自己增加分类目录)

    b、使用工具

    本地准备好phpMyAdmin和EditPlus编辑器,没有EditPlus的话可以看这里https://www.cnblogs.com/qianck/p/15098821.html,下面有下载地址,这个很重要哦,后面处理数据时候用正则表达式,会使用到它。

    2、导出数据和处理数据

    a、导出数据

    (a1)、这里以其中的一个免费栏目为例。FROM_UNIXTIME格式化时间,使它和wordpress的时间一样,“fid=2”是你原来discuz的栏目ID,自己改成你自己的ID即刻,author='gaimy',这里“gaimy”改成你发布的用户。导出数据选 “PHP数组”生成pre_forum_post.php,如下图

    SELECT pid, FROM_UNIXTIME( dateline, '%Y-%m-%d %H:%i:%s' ) AS mytime, subject, message
    FROM pre_forum_post
    WHERE fid =2 and author='gaimy'

     

     

    (a2)、以下fid和autor同上面,但导出数据时候选默认的 SQL即可,生成pre_forum_post.sql后面要处理数据用。如下图

    SELECT pid, message
    FROM pre_forum_post
    WHERE fid =2 and author='gaimy'

     

    b、处理数据

    b1、将(a1)导出的数据文件pre_forum_post.php放到你的新建好的wordpress的目录下,和我写好的这个old.php放在一起。old.php要设置编码,不然会乱码。如下

    
    header("content-type:text/html;charset=utf-8");  //设置编码
    require 'pre_forum_post.php';
     
     
     
    $beishu = 23;
    $strgo="";
    echo("
    INSERT INTO `wp_posts` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) VALUES 
    "
    ); foreach ($pre_forum_post as $k=>$v) { // echo "key=$k
    ";
    /* echo $v['pid']."
    "; echo $v['mytime']."
    "; echo $v['subject']."
    "; echo $v['message']."
    "; */
    //在sql替换它的值,这里付值为0 $v['message']=0; $number = 20; //$beishu=$beishu -1; if ($k !== 0 and is_int(($k+1) / $beishu) ) { $strgo=";"; }else { $strgo=","; } if ($k !== 0 and is_int($k / $beishu)) { echo(" INSERT INTO `wp_posts` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) VALUES
    "
    ); } echo( "(".$v['pid'].", 1, '".$v['mytime']."', '".$v['mytime']."', '".$v['message']."', '".$v['subject']."', '', 'publish', 'open', 'open', '', '', '', '', '".$v['mytime']."', '".$v['mytime']."', '', 0, '', 0, 'post', '', 0)".$strgo."
    "
    ); /* foreach($v as $value){ //echo $v['pid']."
    "; //echo $value."
    "; } */
    } ?>

    b2、运行这个文件后,然后看看最后最下面的数据是否是逗号“,”,逗号就去掉它,分号“;”就不用理它,这里保存为s.sql文件,(这里写得不是很智能呢,手动改改比较快,懒得写代码,呵呵),方便后面导入数据用。如图

    b3、将old2.php放在同一目录,不过这里“12”要改成你的博客栏目ID,如图。运行后保存为s2.sql,这里要注意那个逗号,像b2一样操作。

    
    header("content-type:text/html;charset=utf-8");  //设置编码
    require 'pre_forum_post.php';
     
     
     
    $beishu = 23;
    $strgo="";
    
    echo("INSERT INTO wp_term_relationships ( object_id, term_taxonomy_id) VALUES 
    "
    ); foreach ($pre_forum_post as $k=>$v) { if ($k !== 0 and is_int(($k+1) / $beishu) ) { $strgo=";"; }else { $strgo=","; } if ($k !== 0 and is_int($k / $beishu)) { echo("INSERT INTO wp_term_relationships ( object_id, term_taxonomy_id) VALUES
    "
    ); } echo( "('".$v['pid']."', '12')".$strgo."
    "
    ); /* foreach($v as $value){ //echo $v['pid']."
    "; //echo $value."
    "; } */
    } ?>

    b4、将old3.php放在同一目录,不过这里“a:2:{s:3:\"key\";s:2:\"lv\";s:3:\"val\";a:2:{i:0;s:3:\"vip\";i:1;s:4:\"vip2\";}}”要改成你的VIP设置代码,如果那你不知道这串代码,可以发布一个文章,勾选你的vip设置,完成后,到wp_postmeta表查看,如图。运行后保存为s3.sql,这里也是一样注意那个逗号,像b2操作。

    b5、将(a1)生成pre_forum_post.sql进行数据处理,打开 正则替换.txt这个文件,用EditPlus进行替换,这个很重要哦,请按照里面的步骤来替换即可,请复制多一份pre_forum_post.sql,避免出错后可以重新替换。“you85.com替换为you85.net”这里不用理它,

    以下需要勾选正则表达式:


    匹配:[img=600,0]
    \[img=[0-9]*,[0-9]*\]替换为:

    匹配:[size=4]
    \[size=[0-9]*\]替换为空

    匹配:[/size]
    \[\/size\]替换为空


    匹配:[color=red]
    \[color=[A-Za-z]*\]替换为空

    匹配:[/color]
    \[\/color\]替换为空

     

    匹配:[color=#333333]
    \[color=#[0-9]*\]替换为空
    \[color=#[a-z0-9]*\]替换为空
    \[color=rgb\(.*\)\]替换为空

    匹配:[font=Tahoma,]
    \[font=[A-Za-z]*,*\]替换为空

    匹配:[/font]
    \[\/font\]替换为空

    匹配:[backcolor=Yellow]
    \[backcolor=[A-Za-z]*\]替换为空

    匹配:[/backcolor]
    \[\/backcolor\]替换为空


    \[url=https://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?\]替换为[url]


    以下不需要勾选正则表达式

    [hide]替换为空
    [/hide]替换为空
    [align=center]替换为空
    [/align]替换为空
     
    [tr]替换为替换为空
    [/tr]替换为替换为空
    [td]替换为替换为空
    [/td]替换为替换为空
    [table]替换为替换为空
    [/table]替换为替换为空

    myhide替换为:content_hide
    you85.com替换为you85.net
    [b]替换为
    [/b]替换为


    [url=替换为:[url]
    [url]替换为:点我下载

     

    处理完上面的数据后,把这段替换掉如下:

    
    
    -- --------------------------------------------------------
    
    --
    -- 表的结构 `pre_forum_post`
    --
    
    CREATE TABLE IF NOT EXISTS `pre_forum_post` (
      `pid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
      `message` longtext COLLATE utf8mb4_unicode_ci NOT NULL,
       PRIMARY KEY (`pid`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

    完成以上步骤,就把处理好的文件放进chuli这个文件夹下,然后可以进入phpMyAdmin你所在的博客数据库,直接导入这个pre_forum_post.sql表,如果你有多个栏目,就重复这个b5步骤。

     

    b6、将处理好的s.sql、s2.sql、s3.sql导入到数据库,如果你有多个几个栏目,就将《2、导出数据和处理数据》这个类目重复做,做完后就,最后不要忘记了这几个sql 

    UPDATE wp_posts t1 left join pre_forum_post t2 on t1.pid = t2.ID SET t1.post_content = t2.message

    还有统计总数:

    SELECT count( * )
    FROM `wp_term_relationships`
    WHERE term_taxonomy_id =1

    把“1632”复制下来,替换到到如下1632'中

    UPDATE `mywp`.`wp_term_taxonomy` SET `count` = '1632' WHERE `wp_term_taxonomy`.`term_taxonomy_id` =1;

     

    到这里大功告成!

    总结:难的地方在于正则表达式的处理数据,所以要用到正则表达式,可以看看这个网站:https://www.runoob.com/regexp/regexp-syntax.html

    而且输出sql语句也要加上编码header("content-type:text/html;charset=utf-8"); //设置编码,不然乱码。

    附上找来的《正则表达式系统教程.CHM》,可以快速查阅。最后附上源代码自行测试,如果你有这方面的discuz转wordpress的需求,有偿给你转,可以联系我:QQ:1511923161

    下载地址:https://url19.ctfile.com/f/18756719-656507857-27252a?p=7509 (访问密码: 7509)

     

  • 相关阅读:
    【2013NOIP普及组】T2. 表达式求值 试题解析
    2024 年(第 12 届)“泰迪杯”数据挖掘挑战赛—— C 题:竞赛论文的辅助自动评阅完整思路与源代码分享
    VL53L5CX驱动开发(5)----运动阈值检测
    信息检索 | 信息检索方法一览
    Socks5代理与网络安全:保护您的隐私与数据
    NeurIPS2022 interesting papers
    CPU架构 -- ARMv7与ARMv8协处理器比较
    RISC-V处理器设计(五)—— 在 RISC-V 处理器上运行 C 程序
    【单片机入门】(一)应用层软件开发的单片机学习之路-----基础知识入门
    【K8S系列】深入解析k8s网络插件—Canal
  • 原文地址:https://www.cnblogs.com/qianck/p/16624603.html