12

我创建了一个带有 Ninja 表单的 WordPress 页面,该页面收集有关产品的各种数据,包括一些上传的图像。通过单击“输入”项可以从主菜单访问带有表单的页面,因此用户无需访问后端即可上传他们的产品数据。

我现在想将这些数据放入一个名为“列表”的自定义帖子类型中。最终会有数千个这样的数据集和数千个“列表”页面,当人们来到该站点时,单击主菜单中的输入以进入带有忍者表单的页面并填写它。

有人能告诉我他们现在将如何根据表单收集的数据构建这些列表页面吗?

我正在运行 Ninja 的 Front-End Post 选项,据说它会根据表单数据创建一个页面。这个插件有一些帖子创建设置,您可以在其中选择要创建的帖子类型,但这对我不起作用。我希望提交的表单数据显示在仪表板 | 列表,但提交表单后什么都没有。

有没有人让这个工作?

谢谢你的帮助。

4

4 回答 4

4

我认为您只能使用不带扩展名的 Ninja Forms,并直接挂钩在提交后触发的“ninja_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文件中

当然没有测试。

祝你好运 ;)

于 2017-06-07T19:15:25.700 回答
0

如果您不介意为插件花一点钱,我建议您使用重力形式而不是忍者形式来获得像这样的更高级的东西。

我手动创建了一个自定义帖子类型“oproep”,并在用户提交表单时使用重力表单插件从类型 oproep 创建自定义帖子。

因为您使用自定义帖子类型存档页面 www.mysite.com/oproep 将被自动创建,所以您已经有一个“列表”列表。默认情况下,还将为您创建单个页面 www.mysite.com/oproep/title,如果您愿意,也可以根据您的主题覆盖这些模板。

您唯一需要做的就是在您的functions.php(或编写您自己的插件)中添加一些php 行,以添加自定义帖子类型。其余的都是自动工作的。

我什至编写代码让用户能够编辑他们的提交,阅读下拉列表中的自定义分类标签等。使用重力表单你有很多更多的选择。

于 2017-05-02T17:36:41.033 回答
0

Ninja Forms Front-end Posting 扩展并不是真正用于在前端显示表单提交数据。

来自:https ://ninjaforms.com/extensions/front-end-posting/

“Ninja Forms Front-end Posting 扩展为您提供了 WordPress 帖子编辑器在您选择的任何公开可见页面上的强大功能。”

如果要在前端显示 Ninja Forms 提交数据,则必须使用 functions.php 中的代码或编写插件从数据库中检索它们(推荐)。然后,您可以解析和操作它们并创建一个短代码,允许您在 Wordpress 帖子或页面中轻松插入格式化的提交数据。

这是一个功能请求的链接,要求同样的事情。该请求的作者发布了一个指向他们编写的插件的链接(单击下载为插件),该链接可能会执行您想要的操作,或者为您提供有关如何实现此功能的进一步见解。

https://github.com/wpninjas/ninja-forms/issues/892

于 2016-12-19T20:31:15.183 回答
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);

}
于 2018-05-08T05:15:32.907 回答