2017-02-10 127 views
1

我试图在前端创建自定义表单,以便登录访问者可以发布自己的内容。ACF自定义字段和Wordpress木材前端表单

使用ACF pro和木材。

在我page.php文件的文件我有

$new_post = array(
'post_id' => 'new_post', 
'post_title' => true, 
'post_content' => true, 
'field_groups' => array(26), // Create post field group ID(s) 
'form' => true, 
'return' => '%post_url%', // Redirect to new post url 
'html_before_fields' => '<div class="foobar">', 
'html_after_fields' => '</div>', 
'new_post' => array(
    'post_status' => 'draft', 
    'post_type' => 'vlog' 
), 
'submit_value' => 'Create Post' 
); 

$context['vlogform'] = acf_form($new_post); 

和page.twig,我已经把

{{vlogform}} 

的形式呈现 - 但它停留在一个无聊的地方,不是我想要它。它卡在html元素之上...

任何指针?

感谢, 罗布

**编辑**

这不起作用

$context['vf_form'] = Timber\Helper::ob_function('acf_form', $new_post); 

但确实...

ob_start(); 

acf_Form($new_post); 

$context['vf_form'] = ob_get_clean(); 

在物质上,什么是区别?

感谢, 罗布

回答

1

这可能有点晚,但我设法通过使用他们最近添加的参数来解决此问题。我发现这个谷歌搜索它,所以对于未来的寻求者,这可能会派上用场。

所以,args数组中,添加以下内容:

$args = array(

    'echo' => false, 

); 
0

的问题是,acf_form在PHP文件调用时,也呼应。你可以寻找一个替代的功能(就是有什么样get_acf_form返回HTML,但不回应?),或者使用木材的输出缓冲包装:

$contect['vf_form'] = Timber\Helper::ob_function('acf_form', $new_post); 

...这将数据存储在vf_form属性,但不抑制它回声,直到在Twig中调用

+0

感谢。我看了一下,没有get_acf_form或类似的东西 - 所以尝试了缓冲包装。不幸的是,这似乎没有将任何ACF表单呈现给页面。我检查了我的控制台,并且没有错误 - 也没有出现所有acf stylesheet/javascript东西 – Rob