2017-02-10 123 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