【问题标题】:Creating pages from Ninja form data从 Ninja 表单数据创建页面
【发布时间】:2016-03-25 21:00:01
【问题描述】:

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

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

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

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

有人让这个工作吗?

感谢您的帮助。

【问题讨论】:

    标签: wordpress ninja-forms


    【解决方案1】:

    我认为你可以只使用不带扩展的 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文件中

    当然没有测试。

    祝你好运;)

    【讨论】:

      【解决方案2】:

      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

      【讨论】:

        【解决方案3】:

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

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

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

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

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

        【讨论】:

        • 这并没有真正回答这个问题,它专门指的是忍者平台。它可能更适合作为评论。
        【解决方案4】:

        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);
        
        }
        

        【讨论】:

          猜你喜欢
          • 2019-05-20
          • 1970-01-01
          • 2014-08-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-01-29
          • 2012-11-22
          相关资源
          最近更新 更多