Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress 使用联系人表单7表单获取帖子元数据_Wordpress_Metadata_Contact Form 7 - Fatal编程技术网

Wordpress 使用联系人表单7表单获取帖子元数据

Wordpress 使用联系人表单7表单获取帖子元数据,wordpress,metadata,contact-form-7,Wordpress,Metadata,Contact Form 7,我正在为我的网站使用联系人表单7 Wordpress插件 有人知道我怎样才能得到表格所在帖子的元数据吗 在某些钩子中尝试使用全局$POST等,但结果总是空的 我几乎花了一整天的时间思考这个小问题,但最终还是解决了 我使用了这个过滤器“wp_insert_post_data”,它是在保存post数据时执行的。步骤如下: 检查post类型是否为“post”,因此回调代码仅在这种情况下执行 获取文章内容,其中包含表单快捷码(文章中没有其他文本) 然后使用shortcode_parse_atts从那里获

我正在为我的网站使用联系人表单7 Wordpress插件

有人知道我怎样才能得到表格所在帖子的元数据吗


在某些钩子中尝试使用全局$POST等,但结果总是空的

我几乎花了一整天的时间思考这个小问题,但最终还是解决了

我使用了这个过滤器“wp_insert_post_data”,它是在保存post数据时执行的。步骤如下:

  • 检查post类型是否为“post”,因此回调代码仅在这种情况下执行
  • 获取文章内容,其中包含表单快捷码(文章中没有其他文本)
  • 然后使用shortcode_parse_atts从那里获取表单ID
  • 使用表单ID,使用get_post()获取post数据,其中包含title和slug以及其他参数
  • 最后,将当前帖子的title和slug设置为表单title和slug
  • 笑脸:)
  • 守则:

    add_filter( 'wp_insert_post_data' , 'filter_post_data' , 99, 2 );
    function filter_post_data( $data , $post ) {
        if ( $data['post_type'] == 'post' ) {
            $content = stripslashes($data['post_content']);
            $attributes = shortcode_parse_atts($content);
            $post = isset($attributes['id']) ? get_post($attributes['id']) : "";
    
            if ( !empty($post) ) {
                $data['post_title'] = esc_html($post->post_title);
                $data['post_name'] = esc_html($post->post_name);    
            }   
        }
    
        return $data;
    }
    
    也许这不是最漂亮的解决方案,但它确实奏效了。我希望有人会觉得它有用


    再次感谢那些试图以任何方式提供帮助的人。

    您想用元数据填充CF7表单的字段吗?如果是这样的话,这个插件可能会有帮助,嘿,保罗,谢谢你的回复。不幸的是,我不太确定这个插件是否可以完成这项工作。我要找的是在表单发送/保存到数据库之前,使用短代码从放置表单的帖子中获取元数据。@Faust是否要获取wordpress页面元数据?如果是,那么你可以使用这个插件。不。更准确地说,我需要通过快捷码(例如:[contact-form-7id=“33”title=“contact-form 1”])获取表单所在帖子的标题,然后在表单提交之前将其存储在变量中(例如在“wpcf7\u before\u send\u mail”钩子中)。除此之外,如果没有插件也可以完成,那就太好了。您希望页面标题与表单一起发送还是存储在数据库中?一旦存储了title变量,您打算如何处理它?