ACF 自定义字段和 Wordpress Timber 前端表单
ACF Custom fields, and Wordpress Timber front end forms
我正在尝试在前端创建一个自定义表单,以便登录的访问者可以post他们自己的内容。
使用 ACF pro 和 Timber。
在我的 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();
物质上有什么区别?
谢谢,
罗布
问题是 acf_form
在 PHP 文件中调用时也有回显。您可以寻找替代函数(是否有类似 get_acf_form
的东西 returns 而 HTML 但不回显?)或使用 Timber 的输出缓冲区包装器:
$contect['vf_form'] = Timber\Helper::ob_function('acf_form', $new_post);
...这会将数据存储在 vf_form
属性中,但不会抑制回显直到在 Twig
中调用
这可能有点晚了,但我已经使用他们最近添加的参数解决了这个问题。我在谷歌上找到了它,所以对于未来的搜索者来说,这可能会派上用场。
因此,在 args 数组中,添加以下内容:
$args = array(
'echo' => false,
);
正如其他答案所提到的那样,acf_form()
在调用时输出表格。
要防止表单呈现在文档顶部,请将您的表单参数从控制器 (page.php) 传递到视图
acf_form_head();
get_header();
$context = Timber::context();
$context['post'] = new TimberPost();
$context['form_args'] = [
'post_id' => 'new_post',
'post_title' => true,
'post_content' => true,
'field_groups' => [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' => [
'post_status' => 'draft',
'post_type' => 'vlog'
],
'submit_value' => 'Create Post'
];
Timber::render('example-view.twig', $context);
get_footer();
那么在你看来,使用timbers function()
helper方法调用acf_form()
{{ function('acf_form', form_args) }}
来源:https://timber.github.io/docs/guides/functions/#function
我正在使用最新的 Timber(通过 composer)和 ACF Pro 5.9.1
在旧版本的 Timber 上,我在控制器中利用了一个类似的辅助方法 (TimberHelper::function
),现在已弃用
我正在尝试在前端创建一个自定义表单,以便登录的访问者可以post他们自己的内容。
使用 ACF pro 和 Timber。
在我的 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();
物质上有什么区别?
谢谢, 罗布
问题是 acf_form
在 PHP 文件中调用时也有回显。您可以寻找替代函数(是否有类似 get_acf_form
的东西 returns 而 HTML 但不回显?)或使用 Timber 的输出缓冲区包装器:
$contect['vf_form'] = Timber\Helper::ob_function('acf_form', $new_post);
...这会将数据存储在 vf_form
属性中,但不会抑制回显直到在 Twig
这可能有点晚了,但我已经使用他们最近添加的参数解决了这个问题。我在谷歌上找到了它,所以对于未来的搜索者来说,这可能会派上用场。
因此,在 args 数组中,添加以下内容:
$args = array(
'echo' => false,
);
正如其他答案所提到的那样,acf_form()
在调用时输出表格。
要防止表单呈现在文档顶部,请将您的表单参数从控制器 (page.php) 传递到视图
acf_form_head();
get_header();
$context = Timber::context();
$context['post'] = new TimberPost();
$context['form_args'] = [
'post_id' => 'new_post',
'post_title' => true,
'post_content' => true,
'field_groups' => [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' => [
'post_status' => 'draft',
'post_type' => 'vlog'
],
'submit_value' => 'Create Post'
];
Timber::render('example-view.twig', $context);
get_footer();
那么在你看来,使用timbers function()
helper方法调用acf_form()
{{ function('acf_form', form_args) }}
来源:https://timber.github.io/docs/guides/functions/#function
我正在使用最新的 Timber(通过 composer)和 ACF Pro 5.9.1
在旧版本的 Timber 上,我在控制器中利用了一个类似的辅助方法 (TimberHelper::function
),现在已弃用