DISCUZ文章转wordpress程序案例 – WordPress自学网|Mr.Long博客 -
  • 关于教程
  • 主题制作
  • 读书笔记
  • 生活笔记
  • 关于我
  • 本站永久性停止更新,如需最新教程,请加我QQ 248758228

    DISCUZ文章转wordpress程序案例

    更新时间:2018-03-05 14:25:21

    【温馨提示:视频教程将在6月份开始更新,可提前购买,1-10元一节课,联系QQ248758228】


    今天有个客户要求把DISCUZ文章转为wordpress.

    最开始想着采集。采集了N个小时发现效率太低,而且内容过滤不好处理。。

    简单的界面

    算了。还是用数据库转换吧。代码如下:

    执行文件代码:

    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Discuz转WordPress处理程序</title>
    <link rel="stylesheet" href="ws/bootstrap.min.css">
    <script src="/ws/jquery.min.js"></script>
    </head>
    <body>
       <div class="container" style="margin-top:9%;">
            <div class="panel panel-success">
            <div class="panel-heading"><h1>Discuz转WordPress处理程序</h1></div>
            </div>
              <p><h3>处理状态</h3></p>
              <div class="re"></div>
                <br/>
                <br/>
                <br/>
                <?php
                    include('wp-load.php');
                    var_dump($_GET['tid']);
                    if($_GET['tid']){
                        update_option('ws_id',$_GET['tid']);
                         echo '已经重置为'.get_option('ws_id'). '篇文章开始</br>';
                    }else{
                         echo '现在开始处理第' .get_option('ws_id'). '篇文章开始</br>';
                    }
                ?>
                <input type="hidden" id="k" value="0"/>
                <a href="javascript:" onclick="start()">开始</a>
                <a href="javascript:" onclick="end()">停止</a>
            </div>
       </div>
    <script>
        function end(){
            $("#k").val(0);
        }
        function start(){
            $("#k").val(1);
            ws();
        }
        function ws() {
            var k = $("#k").val();
            if (k != 0) {
                $.ajax({
                    url: '/ws.php',
                    type: 'POST', //GET
                    success: function (data) {
                        $(".re").html(data);
                        ws();
                    }
                })
            }
        }
    </script>
    </body>
    </html>

    负责处理的PHP文件如下:

    <?php
        include('wp-load.php');
        $ws_id = get_option('ws_id');//设置一个开关,中断了可以继续,不用重头开
        if (empty($ws_id)) {
            update_option('ws_id', 0);
        }
        echo '现在开始处理第' . $ws_id . '篇文章</br>';
    
        $mysqli = new mysqli("数据地址", "数据库用户名", "数据库密码", "数据库名");
        if (!$mysqli) {
            echo "链接失败<br/>";
        } else {
            echo "链接成功<br/>";
            $mysqli->query('set names uft-8;');
            $sql = "SELECT title,aid,catid,pic FROM pre_portal_article_title limit " . $ws_id . ',1';
            $result = $mysqli->query($sql);
            //var_dump($result);
            while ($tmp = mysqli_fetch_assoc($result)) {
                //查询到基本信息
                //var_dump($tmp);
                $a = $tmp;
                switch ($a['catid']) { //匹配两边的分类
                    case 29:
                        $a['category'] = 80; //地产
                        break;
                    case 30:
                        $a['category'] = 81;//时尚
                        break;
                    case 28:
                        $a['category'] = 82; //文娱
                        break;
                    case 27:
                        $a['category'] = 83; //消费
                        break;
                    case 2:
                        $a['category'] = 85;//案例
                        break;
                    case 3:
                        $a['category'] = 86;//观察
                        break;
                    case 4:
                        $a['category'] = 87; //资讯
                        break;
                    case 11:
                        $a['category'] = 89; //智能
                        break;
                    case 12:
                        $a['category'] = 90;//测评
                        break;
                    case 13:
                        $a['category'] = 91; //新金融
                        break;
                    case 24:
                        $a['category'] = 92; //商学院
                        break;
                    case 5:
                        $a['category'] = 93; //狮吼TV
                        break;
                    default:
                        $a['category'] = 1; //狮吼TV
                }
                $sql_1 = "SELECT viewnum FROM pre_portal_article_count WHERE aid = " . $tmp['aid'];
                $result_1 = $mysqli->query($sql_1);
                while ($tmp_1 = mysqli_fetch_assoc($result_1)) {
                    $a['viewnum'] = $tmp_1['viewnum']; //获取文章浏览量
                }
                $sql_2 = "SELECT dateline,content FROM pre_portal_article_content WHERE aid = " . $tmp['aid'];
                $result_2 = $mysqli->query($sql_2);
                while ($tmp_2 = mysqli_fetch_assoc($result_2)) {
                    $a['dateline'] = $tmp_2['dateline'];
                    $ass = str_replace('data/attachment','',$tmp_2['content']);
                    $a['content'] = str_replace('http://www.shizihome.com/','',$ass);
                }
    
            }
            //var_dump($a);
            //开始写入文章
            echo $a['title'] . '<br/>';
            global $wpdb;
            $wresults = $wpdb->get_results("SELECT post_title FROM wp_posts WHERE post_title = '{$a['title']}'", ARRAY_A);
            //var_dump($wresults);
            if (!$wresults) {
                $post = array(
                    'comment_status' => 'open', // 评论的状态,'closed'关闭评论.
                    'post_author' => 1, //作者编号
                    'post_category' => array($a['category']),//文章归类数组
                    'post_content' => $a['content'], //文章内容,必填
                    'post_date' => date("Y-m-d H:i:s", $a['dateline']), //文章编辑日期
                    'post_date_gmt' => date("Y-m-d H:i:s", $a['dateline']), //文章编辑GMT日期
                    'post_status' => 'publish', //新文章的状态
                    'post_title' => $a['title'], //文章标题,必填
                    'post_type' => 'post'//文章类型:文章、页面、链接、菜单、其他定制类型
                );
                $re = wp_insert_post($post);
                if ($re) {
                    update_post_meta($re, 'views', $a['viewnum']);
                    update_post_meta($re, 'ws_img', $a['pic']);
                    echo '文章处理成功,新文章ID是:' . $re . '<br/>';
                } else {
                    echo '文章处理失败<br/>';
                }
            } else {
                echo '文章已经存在<br/>';
            }
            update_option('ws_id', $ws_id + 1);
        }
        $mysqli->close();
    ?>

    以上就是代码。如果你需要处理各种MSQL数据转换问题可以联系我。

    欢迎给我提问!

      3个问题

      • #24qingtian 发表于 2018-03-05 14:27:15
        这是一个简单版的。如果要做成插件至少要记录处理失败的问题。以便再次处理。 而且这个处理不包括媒体文件。 媒体文件需要另外处理。
      • #28营销软件 发表于 2018-03-06 09:47:47
        新年虽已过,好运不打折!
      • #32三五创业网 发表于 2018-03-11 07:04:10
        找了好久才找到这里,来了就不想走!

    WP资料

    工作记录

    生活笔记

    读书笔记

    <