我已经创建了一个带有Ninja表单的WordPress页面,该页面收集有关产品的各种数据,包括一些上传的图像。通过单击"输入"可以从主菜单访问带有表单的页面。 item,因此用户无需访问后端即可上传其产品数据。
我现在想把这些数据放入一个名为"列表的自定义帖子类型中。"最终将有成千上万的这些数据集,以及数千个"列表"页面,当人们来到网站时,单击主菜单中的输入以进入带有Ninja表单的页面并填写它。
有人可以告诉我他们现在如何根据表单收集的数据构建这些列表页面吗?
我正在运行Ninja的前端帖子选项,据说可以根据表单数据创建一个页面。此插件有一些Post创建设置,您可以在其中选择要创建的帖子类型,但这对我来说并不适用。我希望提交的表单数据显示在仪表板下列表,但提交表单后没有任何内容。
有没有人让这个工作?
感谢您的帮助。
答案 0 :(得分:4)
我认为你只能使用没有扩展名的Ninja Forms,并且直接挂钩&nbspja_forms_after_submission'在提交后触发,允许您使用提交的数据并执行操作。
这是一个实现结果的入门代码库,但需要根据您的需求和表单结构进行自定义。
add_action( 'ninja_forms_after_submission', 'create_page_from_ninjaform' );
function create_page_from_ninjaform( $form_data ){
// your fields data
$form_fields = $form_data[ 'fields' ];
// !!! this is an example, it depends form fields in your form
$title = $form_fields[ 1 ][ 'value' ];
$content = $form_fields[ 2 ][ 'value' ];
$sample_meta_field = $form_fields[ 3 ][ 'value' ];
$new_post = array(
'post_title' => $title,
'post_content' => $content,
'post_status' => 'publish',
'post_type' => 'listing', // be sure this is the post type name
);
$new_post_id = wp_insert_post( $new_post );
update_post_meta( $new_post_id, 'your_meta_key', $sample_meta_field );
}
此代码应复制到functions.php文件
中当然没有经过测试。
祝你好运;)答案 1 :(得分:0)
Ninja Forms前端发布扩展程序并不是真正用于在前端显示表单提交数据。
来自:https://ninjaforms.com/extensions/front-end-posting/
“Ninja Forms前端发布扩展程序可让您在任何可公开查看的页面上使用WordPress帖子编辑器。”
如果要在前端显示Ninja Forms提交数据,则必须使用functions.php中的代码或编写插件(推荐)从数据库中检索它们。然后,您可以解析并操作它们并创建一个短代码,以便您可以在Wordpress帖子或页面中轻松插入格式化的提交数据。
这是一个功能请求的链接,要求同样的事情。该请求的作者发布了一个链接,指向他们编写的插件(点击下载为插件),可以做你想做的事情,或者为你提供进一步的见解。
答案 2 :(得分:0)
如果你不介意为插件支付一点钱,我会建议使用重力形式而不是忍者形式来获得更高级的东西。
我手动创建自定义帖子类型“oproep”并使用gravityforms插件在用户提交表单时从oproep类型创建自定义帖子。
因为您使用自定义帖子类型存档页面,www.mysite.com/oproep将自动创建,因此您已经拥有“列表”列表。默认情况下也会为您创建单页www.mysite.com/oproep/title,如果您愿意,也可以覆盖这些模板。
你唯一需要做的就是在你的functions.php中添加一些php行(或编写自己的插件),添加自定义帖子类型。其余的都是自动的。
我编写代码以使用户能够编辑他们的提交,在下拉列表中读取自定义分类标签等。您使用重力表格有很多很多选项。
答案 3 :(得分:0)
FrancescoCarlucci的回答是正确的,但只是添加了一个额外的注释:如果你想通过表单字段ID指定哪个字段应该放在帖子中的哪个位置,NinjaForms将ID作为一个数字传递(在我的例子中,我需要字段136为我的帖子标题)。这可能是显而易见的,但我绞尽脑汁待了一段时间,直到我弄清楚了。
function create_post($form_data) {
$form_fields = $form_data[ 'fields' ];
$post_fields = array(
'post_content' => '',
'post_content_filtered' => '',
'post_title' => '',
'post_excerpt' => '',
'post_status' => 'pending',
'post_type' => 'post',
);
foreach ($form_fields as $field) {
$field_id = $field[ 'id' ];
$field_key = $field[ 'key' ];
$field_value = $field[ 'value' ];
if ($field_id == 136) {
$post_fields['post_title'] = $field_value;
}
}
wp_insert_post($post_fields, true);
}