Can I continue this closed ticket with Luo Yang? https://toolset.com/forums/topic/front-end-submission-posts-with-wpml/.
I didn't have spare time to handle those specific pages, so it caused the ticket automatically closed, today I was getting ready to upload the information to him, if he can proceed my ticket, it will save more time. Thank you so much for your help! 🙂
and could you please sent me the private box?
I reassigned your ticket to Luo.
Please acknowledge that Luo is also troubleshooting other tasks and might need some time to reply here.
Thank you!
Thanks, please send the private link as well if possible.
Dear Jeffrey,
I just got this thread, and I enabled the private detail box, please provide the credentials and ftp access of your website, also point out the problem page URL and CRED form URL, where I can edit your PHP codes, I need a live website to test and debug, thanks
我们可以一个一个解决你的问题,并且请你为每个新问题创建一个新帖, 这样方便其他用户搜索答案.
第一个问题:
hidden link 这个页面是客人信息详情页,需要根据英文选择的字段自动显示成中文在中文版本的网页上
这个是个英文页面,我查看了后台,你并没有设置对应的“中文版本的网页”:
hidden link
你打算自动生成新的对应的“中文版本的网页”吗?
你说的“名字”,是不是上面页面中的“School / Organization Name*”这个字段? 你打算自动将“dfgdg” 翻译成中文的什么名字?
另外你打算使用那个CRED 表单来翻译这个“客人信息详情页”?
谢谢!
hidden link 这个页面是从英文提交的, 或者也可能会有用户从中文版本提交,我在想直接生成多语言版本的就好,(例如:英语---> 中文, 中文--->英文),因为从实际的情况来讲,我想很多用户会是 客人在中文版本提交,Host 会在英文版本提交。
这个是个英文页面,我查看了后台,你并没有设置对应的“中文版本的网页”:
hidden link
你打算自动生成新的对应的“中文版本的网页”吗?------------------------是的自动生成‘多语言版本(因为不确定用户会从中文还是英文版提交)
这个是个英文页面,我查看了后台,你并没有设置对应的“中文版本的网页”:
hidden link
你说的“名字”,是不是上面页面中的“School / Organization Name*”这个字段? 你打算自动将“dfgdg” 翻译成中文的什么名字?——————————————————-这种文本字段或者文本框字段,没有办法自动翻译吧,我的意思是不用考虑这种的 🙂
另外你打算使用那个CRED 表单来翻译这个“客人信息详情页”?---------------------- 客人信息详情页来自 一个Post cred 还有几个 uer cred form. 的几个表单共同组成的,我在截图中大致说明了一下 你可以进入 My account 进入之后 看到三到四个表单
如果会增加无穷的工序的话,能否做几个示例即可,帮我说明清楚 我自己弄就可以,也便于万一字段调整,又抓瞎! 非常感谢!!!
如果wordpresee不支持自动生成多语言的页面的话,也可以妥协一下,手动生成也可,但是各个字段不能一个个通过wpml翻译编辑器人工翻译,因为那绝大多数属于重复劳动,意义不大。而且这个页面还有不少字段是来自用户字段
不好意思,因为我想不清楚哪些是应该分拆成第二个问题,而建立新的帖子,所以, 谢谢!
1) 客人信息详情页来自 一个Post cred...
我建议先从这个Post cred form 开始,做一个简单的示例, 你说的是哪个Post cred form, 这个Post cred form是不是用来创建"Guest" 文章的?
如果是的话,你可以使用cred_save_data触发一个PHP function,使用WPML内置的action hook "wpml_admin_make_post_duplicates"来创建其他语言版本, 例如, 你可以添加下面的代码到你的主题文件 functions.php:
/**
*Duplicate Content on submit of Original to all secondary langs (for translation)
*/
function quick_duplicate_save_data_action( $post_id, $form_data ){
// Change your CRED Form "ID" accordingly below
if ($form_data['id']== 123){
// Use new WPML API
do_action( 'wpml_admin_make_post_duplicates', $post_id ) ;
}
}
add_action( 'cred_save_data', 'quick_duplicate_save_data_action', 10, 2 );
请替换123为你的Post cred form ID
更多帮助:
wpml_admin_make_post_duplicates:
Create or update duplicate posts programatically
https://wpml.org/wpml-hook/wpml_admin_make_post_duplicates/
cred_save_data
This hook allows doing a custom action when post data is saved to database.
https://toolset.com/documentation/programmer-reference/cred-api/#cred_save_data
已经添加成功,是的 现在会自动生成中英文两个 post, 但是字段以及字段值都没有变化 链接给你, 下一步该怎么样那个呢? 非常感谢 hidden link hidden link . 你可以看看这两个链接, 此外还是要说明的是,分别还有三个用户表单共同生成了 这个post. 劳你费心 🙂
然后你已经可以设置字段值了,例如:
/**
*Duplicate Content on submit of Original to all secondary langs (for translation)
*/
function quick_duplicate_save_data_action( $post_id, $form_data ){
// Change your CRED Form "ID" accordingly below
if ($form_data['id']== 123){
// Use new WPML API
do_action( 'wpml_admin_make_post_duplicates', $post_id ) ;
/** get the post IDs of each language**/
$post_id_en = apply_filters( 'wpml_object_id', $post_id, 'gust', FALSE, 'en' ); //English post ID
$post_id_cn = apply_filters( 'wpml_object_id', $post_id, 'gust', FALSE, 'zh-hans' ); //Chinese post ID
}
}
add_action( 'cred_save_data', 'quick_duplicate_save_data_action', 10, 2 );
通过filter "wpml_object_id",你就可以获取对应语言版本的post id值, 使用 get_post_meta() 获取你需要的字段值, 并使用update_post_meta()来设置字段值
更多帮助:
Get the post ID of original language
https://wpml.org/wpml-hook/wpml_object_id/
https://developer.wordpress.org/reference/functions/get_post_meta/
https://developer.wordpress.org/reference/functions/get_post_meta/
Hi Luo, 我还是不太能理解,我已经将您给的第二段代码 替换了之前的代码, 并将生成文件的 cred form ID 替换了 123, 可是跟之前一样 自动生成的 另一个语言版本的 post 其他并没有变化,我是应该怎么做呢? 我已经将所有的字段名 以及值都已经在 string translation里面翻译完了。 我没有见到变化啊? 接下里我是该怎么做呢?对于 uermeta 我需要单独处理吗?
2. 还有一个房间的post type, 我就是一样的按照您给我 代码就可以了 我需要替换哪一部分的slug 才不会互相影响呢? 这个东西在我看来很复杂,我是没有能力自己解决的。
所以 麻烦你了 谢谢!
我上面提供的第二段代码已经可以获取中、英文语言版本的post ID值,你只需要使用get_post_meta()值读取你需要的字段值, 并使用update_post_meta()更新对应的文章字段。
更多帮助:
https://developer.wordpress.org/reference/functions/get_post_meta/
https://developer.wordpress.org/reference/functions/update_post_meta/
根据我们的Toolset Customer Support Policy:
https://toolset.com/toolset-support-policy/
我们不提供custom codes支持,我只能为你提供一些文档链接和建议,我建议联系我们的Contractors付费完成你需要的代码和功能。
好的 这就很感谢了,不过我还是想问一下,使用get_post_meta()值读取你需要的字段值, 并使用update_post_meta()更新对应的文章字段, 需要怎么样的技能? 需要懂得, PHP? 还是说需要懂得wordpress模板开发? 还是说必须有 toolset 的经验的懂得以上两项的人来做? 我看了一下你们的认证服务机构 起步费500刀, 我是觉得这剩下的东西应该不是很复杂的东西了,明白人一会儿就弄完。如果说懂 php 或者wordpress 模板开发的人 立马就能弄得话,我找找看国内的工程师有没有能给我弄的,应该是费用会少很多的
。麻烦帮我回答一下
谢谢!
我给你提供简单的示例,你可以根据自己网站的具体情况调整,比如说你的CRED form 123 是用来创建英文版的post, 并且英文版有一个字段my-field, 该字段是使用Types创建的,你现在打算读取该字段的值,并写入到其他语言版本的字段my-field,你可以尝试修改PHP代码如下:
function quick_duplicate_save_data_action( $post_id, $form_data ){
// Change your CRED Form "ID" accordingly below
if ($form_data['id']== 123){
// 使用 WPML API 复制post到其他语言版本
do_action( 'wpml_admin_make_post_duplicates', $post_id ) ;
$post_id_en = $post_id; //英文版 post ID
$my_field_en = get_post_meta($post_id_en, 'wpcf-' . 'my-field', true); //读取英文版的my-field值
$post_id_cn = apply_filters( 'wpml_object_id', $post_id, 'gust', FALSE, 'zh-hans' ); //中文版post ID
update_post_meta($post_id_cn, 'wpcf-' . 'my-field');//写入到中文版的my-field
}
}
add_action( 'cred_save_data', 'quick_duplicate_save_data_action', 10, 2 );
请替换123为你的Post cred form ID, 替换my-field为你的字段slug