php - 使用 MySQL 查询将数据导入 Wordpress-Magic 字段

标签 php mysql csv wordpress

第 1 部分:介绍

嘿 Stackoverflow
来自挪威白雪皑皑的阿尔卑斯山的问候

我现在已经连续两天尝试对 Magic Fields 进行逆向工程。为什么?因为我是一个简单的人,并且想使用 CSV 从一个异国情调的数据库将数据导入我的 wordpress(而不是编写一个我不知道也不理解的 php 例程)。

这适用于所有普通的 Wordpress 字段,即后期数据、类别等。 (我使用 LibreOffice Calc 微调 CSV 数据、Quest Toad for MySQL 导入和创建 MySQL 查询)。

我的设计师使用 Magic Fields 插件广泛地设计了这整个东西。因此,对于需要导入的其余数据,我必须处理 Magic Fields。它是一个电影数据库,因此它是电影的典型元数据,例如“productionyear”“producer”“imdblink”“youtubetrailerlink”等。

我的问题是,我希望获得一些关于如何将这些数据导入魔法领域的见解/想法/支持。我已经尝试并放弃了“魔术字段导入器”,当我尝试导入各种 csv 格式时,它没有记录并且没有给出任何错误消息。

PART 02:理解魔法场

我的问题是如何使用 mysql 查询填充(插入)具有数据的魔术字段?
当我在 admin-edit-post-frontend 中将一些数据放入魔术场并按保存时,我试图了解魔术场在做什么。它做了很多我似乎无法重现的事情。一方面,将数据插入到引用数据的两个地方是不够的。 wp_postmetawp_mf_post_meta .

这个示例帖子不足以让数据“工作”,即在 wordpress 中显示自己,既不在 admin-post-editor 也不在用户的前端:

INSERT INTO `wp_postmeta` (`post_id`,`meta_key`,`meta_value`) VALUES ('474','originaltitle','Die Hard 3');

INSERT INTO wp_mf_post_meta ( meta_id, field_name, field_count, group_count, post_id )  VALUES ( 1100083, 'originaltitle' , 1,1 ,474 );

同样使用该 meta_id 编号,Magic Fields 会为每个帖子创建一个 10 的数字系列,例如 7000-7010,然后是 8000-8010。我不明白这些数字是从哪里来的,以及它们是否必须是连续的/连续的。我发现一旦通过 admin-post-editor 前端输入,我可以更改 meta-id'swp_postmetawp_mf_post_meta它仍然有效。但是,当我尝试使用 SQL 查询自己创建它们时,“它就是行不通 (TM)”。

在启用 MySQL 查询记录并检查 MySQL 数据库引擎提供的日志文件,然后尝试手动插入查询(我可以从日志中得出)之后,我仍然无法让 Wordpress“找到”数据并正确显示它们这页纸。

在我使用前端填充数据后,我可以使用 mysql 查询修改数据,没有任何问题。

同样使用查询日志,我发现在 Wordpress 前端后编辑器中按下“SAVE”后,它执行的 mysql 查询行不少于 ~780 行(无论我填充 1 个还是 10 个魔术字段)!

我尝试的另一件事是在我完成魔术字段的发布之前和之后拍摄数据库的快照,然后使用差异工具(各种,主要是 WinMerge 和 Notepad++)。我不明白它在做什么,但我认为它在 wp_term_taxonomy 中做了一些隐藏的诡计。这只是猜测。

第 03 部分:结论我不知道编程,所以任何实用的解决方案都会被深深地理解。

我想在每个帖子中执行的完整查询(我有大约 800 个)在这里:>http://pastebin.com/5cZT3AjA

此处列出了我在管理前端推送保存后 Magic Fields 正在执行的查询的完整列表(我称之为“工作机器人”)。 http://pastebin.com/c2c6qUQt可以肯定的是,我已经检查了三遍,在我按下保存后它正在执行约 780 行并不是什么特别的事情。

我想如果我能找到一种方法来批量编辑我的所有帖子,然后让“机器人”(即 admin-post-edit 前端)来完成在数据库中创建所有这些行的工作。然后我可以在之后更改字段......但是批量编辑器也不显示魔术字段编辑器。

我已经在这个问题上转了 10 次,再也不能转了!

最佳答案

解决了!!!!

Meta_id 必须是 CHRONOLOGICAL 并且不能是任意的(即随机的)。

数据必须插入到 wp_mf_postmeta 和 wp_postmeta

这些记录与 post_id、meta_id 和 key-value 存储相关
数据本身,其中 key 是“movietitle”,value 是“Die Hard”。

我已经上传了为此创建的 csv 并创建了 mysql 查询。
我使用 LibreOffice Calc 微调数据和 Toad for MySQL(由 Quest 提供,免费)
创建 MySQL 查询...

需要修改这两条记录才能正确插入数据:
注意 META_ID 必须是按时间顺序排列的,即 11001、11002 11003 每个字段每个帖子
因此,如果 meta_key 是 Movietitle,则 meta_id 为 11001,如果 productionyear 为第二,则为 11002,如果 country 为第三,则为 11003

另请注意,对于 wp_mf_postmeta,字段名与 meta_key 的值相同
来自 wp_postmeta ,即元键。

插入 wp_postmeta ( post_id , meta_key , meta_value ) 值 (346,'produksjonsar','18001');

插入 wp_mf_post_meta (meta_id, field_name, field_count, group_count, post_id) 值 (18001, 'produksjonsar', 1,1,346);

我用于此导入的文件可在此处获得,如果有人的话
需要查看如何执行此导入的示例...我再次使用
Toad for MySQL 使用 IMPORT 函数创建 SQL 查询。

  • http://ge.tt/9Q5h4zC

  • 这也解决了我在 Wordpress 论坛、Stackoverflow 和 Stackexchange 上发布的这个问题。

    http://wordpress.org/support/topic/importing-data-to-custom-fields?replies=2#post-2592976

    https://wordpress.stackexchange.com/questions/37691/inserting-data-into-magicfields-using-mysql-queries

    Importing Data into Wordpress-Magic Fields using MySQL queries

    Hameedullah Khan Stackexchange 的大量 Prop ,这里的简介 https://wordpress.stackexchange.com/users/5337/hameedullah-khan ,基本上提供了找到解决方案所需的线索。

    关于php - 使用 MySQL 查询将数据导入 Wordpress-Magic 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8698631/

    相关文章:

    使用 IN 时,php mysql 查询匹配表中的所有行

    php - 尝试配置 ArrestDB。我认为我的数据源名称有问题

    mysql - 将 DataMapper 与 Rails 3 、Ruby 1.9.2 和 MySQL 结合使用 --> [BUG] rb_gc() 上的跨线程冲突

    mysql - 关系数据库和 MyIsam

    java - 解析csv文件中的空单元格并存储到mysql中

    java - 在java中写入csv文件时包含逗号,每次使用不同的字符串

    php - 使用javascript设置 session 变量

    php - 锁定MySQL中的最大值

    SQLYOG 中的 Mysql 服务器连接问题

    python - 如何从列名称为 "crashloc"的簇中获取值,其中 "crashtype"= ="Serious Suspected Injury"