使用联系表格7表格获取帖子的元数据

时间:2017-03-10 08:08:54

标签: wordpress metadata contact-form-7

我正在为我的网站使用Contact Form 7 Wordpress插件。

有谁知道如何获取表格所在的帖子的元数据?

在某些钩子中尝试使用全局$ posts等,但结果始终为NULL。

1 个答案:

答案 0 :(得分:0)

我花了将近一整天的时间来思考这个小问题,但最后我设法解决了这个问题。

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

  1. 检查帖子类型是否为“post”,因此仅在这种情况下执行回调代码。
  2. 获取帖子内容,其中包含表格短代码(帖子中没有其他文字)。
  3. 然后使用shortcode_parse_atts从那里获取表单ID。
  4. 使用表单ID,使用get_post()获取post数据,其中包含其他参数中的title和slug。
  5. 最后,将当前帖子的标题和slug设置为表单标题和slug。
  6. 幸福的脸:)
  7. 代码:

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

    也许这不是最美丽的解决方案,但它确实有效。我希望有人会发现它很有用。

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