Chr*_*ian 5 wordpress import wpallimport polylang
我正在尝试使用 WP All Import 的专业版将数据从 Excel 工作表导入到 WordPress 中。我们使用 Polylang 来支持多语言。我想知道如何管理将内容导入正确的语言版本。我发现有一个隐藏的分类“语言”,我可以手动将其设置为“de”以将语言设置为德语。但如何链接相应的翻译呢?有什么想法可以解决这个问题,也许可以使用一些自定义函数吗?先感谢您!
Luc*_*lin -1
请注意,我目前正在使用 Polylang 和 Wp All Import/Export Pro 版本。
\n\n另外,这目前还不是“过时”的代码。它依赖于一个未记录的功能,该功能是 wp all import 团队直接建议的。我只是简单地谈论$data由操作传递的附加参数pmxi_saved_post。
也就是说,我知道 Polylang 开发人员目前正在为这个特定问题开发一个插件。无论如何,我现在设法以这种方式做到这一点:
\n\n1 -> 导出数据时,有 2 个与 Polylang 相关的字段:languages和post_translations。也导出它们。
2 -> 当您导入数据时,在 wpallimport 屏幕上,再创建 2 个自定义字段并保存上面的 2 个。请参阅下面的附件。现在您已经获得了每篇文章的翻译数据。
\n\n3 -> 设置此过滤器:
\n\nglobal $language_codes;\n\n$language_codes = array( // sample lang data\n \'italiano\' => \'it\'\n ,\'english\' => \'en\'\n ,\'espanol\' => \'es\'\n ,\'francais\' => \'fr\'\n ,\'deutsch\' => \'de\'\n);\n\nadd_action(\'pmxi_saved_post\', \'set_imports_lang\', 10, 2);\n\n// using undocumented param $data\n// action firm is the following (in fact, it passes 3 params): do_action( \'pmxi_saved_post\', $pid, $rootNodes[$i], $is_update );\nfunction set_imports_lang($post_id, $data){\n global $language_codes;\n // \'lingue\' is italian, I guess it will be \'languages\' in english: it\'s one of the 2 fields we saved before\n pll_set_post_language($post_id, $language_codes[sanitize_title($data->lingue)]);\n}\nRun Code Online (Sandbox Code Playgroud)\n\n此时您刚刚设置了每个帖子的原始语言,仅此而已。现在我们必须将翻译相互链接。我们将使用一个只需运行一次的函数来完成此操作。它只需重新加载任何 wp 屏幕/页面即可运行。
\n\nfunction set_imports_translations(){\n global $wpdb;\n global $language_codes;\n\n // substitute \'enews\' with your own post type\n $list = $wpdb->get_results("\n SELECT\n m.post_id, m.meta_value pll, group_concat(concat_ws(\':\', m2.meta_value, m.post_id)) ids\n FROM\n $wpdb->posts p\n INNER JOIN $wpdb->postmeta m ON p.ID = m.post_id\n INNER JOIN $wpdb->postmeta m2 ON m.post_id = m2.post_id AND m2.meta_key = \'_import_language_name\'\n WHERE\n p.post_type = \'enews\' AND m.meta_key = \'_import_translations_id\'\n GROUP BY pll\n ");\n\n // query results are something like this:\n // 10258 pll_57e92254c445f 10258:Italiano,10259:English,10260:Espa\xc3\xb1ol,10261:Fran\xc3\xa7ais,10262:Deutsch\n // 10263 pll_57e922552b8c6 10263:Italiano,10264:English,10265:Espa\xc3\xb1ol,10266:Deutsch\n // 10267 pll_57e9225587124 10267:Italiano\n\n\n // extract data from the third column string\n foreach($list as $item){\n $ids = explode(\',\',$item->ids);\n $list = array();\n\n foreach($ids as $id){\n $data = explode(\':\',$id);\n $list[$language_codes[sanitize_title($data[0])]] = intval($data[1]);\n }\n\n //set the translations\n pll_save_post_translations($list);\n }\n}\n\nset_imports_translations();\nRun Code Online (Sandbox Code Playgroud)\n\n就这样。:) 啊,上面提到的附件:
\n\n\n| 归档时间: |
|
| 查看次数: |
8984 次 |
| 最近记录: |