如何将高级自定义字段中的自定义字段的值插入到由重力表单生成的短码中

时间:2020-02-07 作者:José Daniel

情况如下。我从重力表格中获得了一个短代码,它读取表格记录的全部条目。例如,表格1-总条目30。因此,短代码读取该数据并打印出30的值。

由于必须更新通过替换ID的表单创建的每个表单的快捷码,我想向该快捷码传递一个参数,以便从高级自定义字段帖子更新该快捷码。

短代码如下所示

[gravitywp_count formid=\'\'] 
其中,我必须在“”内设置表单id,

好吧,我的想法是有一个自定义字段,帖子创建者在其中设置重力表单中创建的新表单的编号id,并通过自定义字段将其传递给快捷码

可以理解为

自定义字段:

Form ID: ID Value
然后,发布在那里的值在更新发布后传递到快捷码

[gravitywp_count formid=\'$thefield(form_id)\']
从逻辑上讲,短代码将被放入一个类似于single customposttype的文件中。php

因此,我想知道是否可以实现这种方法,或者是否有更好的方法来实现这一点

谢谢你们所有人的帮助,你们能在这件事上给我带来帮助。亲切的问候

1 个回复
最合适的回答,由SO网友:Antti Koskinen 整理而成

是的,您可以检索保存的元值并将其作为参数传递给短代码。

第一个选项是将保存的值获取到变量,对其进行验证,然后将其连接到传递给的短码字符串do_shortcode().

// get saved meta value
$form_id = get_field(\'your_key_for_form_id_here\');
// make sure we have an ID and it is a number, string or int
if ( $form_id && is_numeric( $form_id ) ) {
  // do_shortcode returns the shortcode html, so you need to echo it yourself
  echo do_shortcode(\'[gravitywp_count formid=\' . $form_id . \']\');
}
另一种选择是直接将元连接到短码字符串,如果您相信保存的元值将始终采用正确的格式。

echo do_shortcode(\'[gravitywp_count formid=\' . get_field(\'your_key_for_form_id_here\') . \']\');
您也可以跳过短代码部分,直接在模板文件中调用回调函数。

// modify your callback to take form id directly as a parameter
function your_entries_counting_function( int $form_id ) {
  // your code to get the entries count  
}
// get meta data
$form_id = get_field(\'your_key_for_form_id_here\');
// make sure it is what you\'re expecting
if ( $form_id && is_numeric( $form_id ) ) {
  // pass the ID to your function
  echo your_entries_counting_function( intval( $form_id ) );
}
如果您只使用ACF添加表单ID元字段,您可以通过自己向注册元盒来简化设置add_meta_box() 将ACF完全排除在外。在这种情况下,您将使用get_post_meta() 要检索保存的表单id元值,

$form_id = get_post_meta( get_the_id(), \'your_key_for_form_id_here\', true );

相关推荐