基于旧网站数据库的WP页面组织

时间:2017-06-01 作者:LordTakason

我正在将涉及绘画的现有数据从一个不使用WordPress的旧主机移到一个使用WordPress的新主机。

在旧网站上,数据存储在数据库中,因此每幅画都有自己的页面,其中包含与之相关的信息(艺术家、姓名、年份、风格等)和媒体,然后可以通过不同的信息(相似的年份、艺术家等)搜索页面

有了WordPress,有没有办法使用我的旧数据库自动生成可以按这种方式排序的页面/帖子?

2 个回复
最合适的回答,由SO网友:hwl 整理而成

进入之前Importing, 我会让你自己熟悉standard post typepost_meta 以及custom post typestaxonomies. 如果您的最终目标将从后者中受益,那么在导入准备过程中使用它们将为您省去不少麻烦。

如果您喜欢直接使用数据库,那么转储/转换/导入当然总是可能的。下面所附的示意图可以回答您的任何问题。

另一种选择是从旧站点向wordpress站点的wp json api端点发送帖子,并以这种方式处理迁移。

@Rarst 前面提到,没有真正的捷径,但是@Max 在他的评论中指出,进口商至少可以在Wordpress方面为您提供帮助。

下面只是对这些要点的链接进行了详细阐述和整合。

使用Wordpress导入器(工具>导入)

将内容导入Wordpress有多种选择(在使用任何一种导入器之前需要考虑更多的事情)。This would be the safest method to take. 您可以在此处熟悉其中的许多内容:Importing Content into Wordpress

包括:

博客作者Drupal可移动类型Nucleus CMS可移动类型>键盘等,您可以理解,页面还列出了用于导入以前cms导出的各种插件(列出了多种类型)。

CSV、XML、RSS。。。任何方式都可以。当然,您必须创建它需要处理的文件。

数据库转储>导入(不知道当前数据库的任何信息),您可以转储旧的数据库页面内容,并将其转换为sql导入。Don\'t even consider this if you don\'t really know what you\'re doing, though. You could seriously muck things up. 但如果你对它感到满意,这是一个可行的选择。

我不认为这是wordpress的解决方案,只是将其作为一种方法。

如果您仍然可以访问旧的数据库/站点,则可以使用wp-json api 在你这边写点什么posts 到旧数据库中每个条目的wordpress端的相应端点。

您通常可以构建它来保持同步,但它也可以作为一次性导入工具。

扩展此内容,以代替OP在评论中的其他问题:

首先,您需要添加书签this resource for dealing with the WP_REST_request class

假设我们在旧站点上编写了一些代码,可以获取相关内容并将其放入格式化的POST对象中,并假设有一个自定义端点:

[Old Site Data ] 将http发布到路由http://new-WP-site.com/wp-json/v2/plugin_namespace/v1/posts/

在WP端,/plugin_namespace/v1/posts/ 我们会创造。要做到这一点,我们首先extend 这个WP_REST_Controller

然后在课堂上,我们使用register_rest_routes().类似于:

public function __construct() {
        add_action( \'rest_api_init\', array($this, \'register_routes\' ) );
    }//end __construct

public function register_routes() {
        $version = \'1\';
        $namespace = \'plugin_namespace/v\' . $version; 
        $base = \'posts\';
        register_rest_route( $namespace, \'/\'. $base, array(
            array(
                \'methods\' => \'GET\',
                \'callback\' => array( $this, \'this_is_a_callback_function\' ),
                //\'permission_callback\' => array( $this, \'key_permissions_check\' ),
                ),
            array(
                \'methods\' => \'POST\',
                \'callback\' => array( $this, \'this_is_a_callback_function\' ),
                //\'permission_callback\' => array( $this, \'key_permissions_check\' ),
                ),)
        );

    }//register_routes
    public function this_is_a_callback_function(WP_REST_Request $request) {

        //if posted in body like form data
        $posted_data = $request->get_body_params();

    }
从此点开始$posted_data 有什么是POST您可以遍历它,或者将它传递给另一个函数。

该函数需要从每个条目构建post\\u数组,并将其传递给wp_insert_post()

可以利用WP_REST_Server::CREATABLE 代替methods => POST 也我的只是一个快速/不完整的例子。

我还注释掉了permissions_callbacks, 但回调函数通常是授权检查的地方。

请注意wp_insert_post() 也将允许您传递meta数组,但是wp_update_post 不会。wp_insert_post 还需要titlecontent 价值观如果传递除0以外的任何ID,它将运行wp_upate_post.

您可能希望使用以下内容requestb.in 在整理旧站点代码以检查其发送的内容时postman 在检查api的响应时效果很好。

正如我在评论中提到的,ngrok 可用于在开发环境中完全执行非wp到wp的迁移。

希望这能给你足够的信息,把它翻译给你需要的人。

相关WP表(POST)无论是构建sql导入还是编写其他桥梁posts, wordpress端要映射到的表是:

Table Name : data in table

wp\\U岗位:岗位

wp\\U postmeta:后元数据

wp\\U term\\u关系:发布到分类法

wp\\U term\\u分类法:分类法

wp\\U术语:标记和类别值

这是full database schematicenter image description here

SO网友:Rarst

您可以使用自定义重写规则,以便WP解释特定URL来调用和显示旧数据库中的数据。但是,是否要继续管理旧数据库中的数据?与创建/链接WP管理界面一样,以一种与之无关的方式保存数据?在这一点上,您几乎是在WP旁边编写自己的CMS。

在我看来,如果WP成为访问和管理这些数据的一种新的规范方式,那么最好的方法就是将其正确地迁移到适当的WP数据结构中。

当然,情况需要谨慎,根据需要,您可能只保留旧功能&;数据全部集成,只需在WP站点内对其进行集成/蒙皮即可。

简而言之,WP负责的工作越多,考虑全面迁移就越好。

结束

相关推荐

WP SQL查询中的条件语句

我在Wordpress页面上有一个表单,将数据发布到一个名为“members”的表中。我有第二页在表中显示这些数据。一切都很顺利。使用以下方式显示数据:$myrows = $wpdb->get_results( \"SELECT first_name, surname, role, email, country, bio FROM members\" ); foreach ( $myrows as $row ) { echo \"<tr><td>\" . $r