使用MySQL查询将数据插入到Magicfield中

时间:2012-01-02 作者:smecoder

第1部分:挪威阿尔卑斯雪山的StackexchangeGreetings简介

我现在已经连续两天尝试反向设计魔法场。为什么?因为我是一个简单的人,我想使用CSV(而不是编写php例程,我既不知道也不理解)将数据从一个奇特的数据库导入wordpress。

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

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

我的问题是,我希望就如何将这些数据导入magic fields获得一些见解/想法/支持。我已经尝试并放弃了“magic fields importer”,它没有文档记录,并且在我尝试导入各种csv格式时不会给出任何错误消息。

第二部分:理解魔法场

我的问题是如何使用mysql查询用数据填充(插入)魔术字段?当我在管理编辑帖子的前端将一些数据放入一个魔术字段并按save时,我试图理解魔术字段在做什么。它做了很多我似乎无法重新创造的事情。首先,在引用数据的两个位置插入数据是不够的。wp\\u Posteta和wp\\u mf\\u post\\u meta。

此示例帖子不足以让数据“工作”,即在wordpress中显示自己,无论是在管理员帖子编辑器中还是在用户前端:

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\\u id号,Magic Fields为每个帖子创建一个10的数字系列,比如7000-7010,然后8000-8010。我不明白这些数字是从哪里来的,以及它们是否必须是连续的。我发现,一旦由管理员帖子编辑器前端输入,我就可以更改wp\\u posttea和wp\\u mf\\u post\\u meta中的meta id,并且仍然有效。但当我尝试自己用SQL查询创建它们时,“它就是不起作用(TM)”。

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

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

同样使用查询日志,我发现在Wordpress前端帖子编辑器中按下“SAVE”后,它会生成不少于780行mysql查询行(无论我是填充1行还是10行神奇字段)!

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

第03部分:结论我不懂编程,所以任何实用的解决方案都将受到高度重视。

每个帖子我想做的完整查询(我有大约800个)如下:http://pastebin.com/5cZT3AjA

这里列出了Magic Fields在管理前端按下save后正在执行的查询的完整列表(我称之为“robot at work”)。http://pastebin.com/c2c6qUQt为了确保我已经检查了三次,在我按下save后,它正在执行约780行操作,这并不是什么特别的事情。

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

我已经在这个问题上绞尽脑汁十次了,再也不能绞尽脑汁了!

2 个回复
SO网友:user1125872

非常感谢你,伙计。我希望我以前看过你的帖子!

Meta\\u id必须为chronologicalcan\'t 任意(即随机)。

数据必须插入到wp_mf_postmetaand wp_postmeta.

这些记录涉及post_id, meta_id 键值存储数据本身,其中键是“movietitle”,值是“Die Hard”。

我已经上传了我创建的csv,并创建了mysql查询
我使用LibreOffice Calc对数据进行微调,并使用Toad for MySQL(通过Quest,免费)创建MySQL查询。

这两条记录需要修改才能正确插入数据:
note that 这个META_ID must 按时间顺序,即。11001, 11002, 11003 每个字段每个帖子
所以如果meta_key 首先是“Movietitle”,然后是meta_id 属于11001, 如果“productionyear”是第二个,那么11002 如果“国家”排在第三位,那就是11003.

另请注意wp_mf_postmeta 这个fieldnamesame valuemeta_key从…起wp_postmeta , 一、 e.元键。

INSERT INTO `wp_postmeta` (`post_id`,`meta_key`,`meta_value`) VALUES (346,\'produksjonsar\',\'18001\');

INSERT INTO wp_mf_post_meta ( meta_id, field_name, field_count, group_count, post_id )  VALUES ( 18001, \'produksjonsar\' , 1,1 ,346 );
如果有人需要查看如何进行此导入的示例,我用于此导入的文件可以在此处找到。我再次使用MySQL加载,通过使用导入函数创建SQL查询。

SO网友:Zuppy

我也有同样的问题,但我成功地从自行生成的xml(用于Posteta)导入。

<wp:postmeta>
<wp:meta_key>telefono</wp:meta_key>
<wp:meta_value><![CDATA[$tel_azienda]]></wp:meta_value>
</wp:postmeta>
问题是,在MF无法使用数据之后,我用这个mysql查询解决了这个问题:

INSERT IGNORE wp_mf_post_meta (`id`, `group_count`, `field_count`, `post_id`, `field_name`, `order_id`) 
SELECT `meta_id`, 1, 1, `post_id`, `meta_key`, 1 FROM `wp_postmeta` WHERE  `meta_key` = \'mini_descrizione\' OR  `meta_key` = \'imagen_en_categoria\' OR `meta_key` = \'direccion\' OR `meta_key` = \'codigo_postal\' OR `meta_key` = \'ciudad\' OR `meta_key` = \'provincia\' OR `meta_key` = \'telefono\' OR `meta_key` = \'email\'OR `meta_key` = \'web\' OR `meta_key` = \'google_map\'
它从wp_postmeta 表到wp_mf_post_meta.

结束