我们正在使用针对WordPress的Gravity Forms的Gravity View插件进行过滤。过滤器还不是很擅长,所以如果可能的话,希望能得到一些帮助。添加时会添加一个过滤器,根据“重力表单”字段ID过滤掉某些内容。在下面的示例中,我们将过滤掉ID为18的“重力表单”字段。
示例:
add_filter( 'gravityview/fields/custom/content_before', 'my_gv_custom_content_before', 10, 1 );
function my_gv_custom_content_before( $content ) {
$id = '18';
global $gravityview_view;
extract( $gravityview_view->field_data );
if( empty( $entry[ (string)$id ] ) ) {
return '';
}
return $content;
}
这很有效。然后更进一步,我们被告知我们可以添加一些东西到这个过滤器来过滤掉多个Gravity Form字段id,使用这样的东西添加到上面的例子中。在这个例子中,过滤Field 18& 26:
if( ( false !== strpos( $content, '{MY_FIELD_NAME:18}') && empty( $entry['18'] ) ) || ( ( false !== strpos( $content, '{MY_FIELD_NAME:26}') && empty( $entry['26'] ) ) ) {
return '';
}
两者结合起来会是什么样的?例如,如果我们想过滤字段id 18,26和第三个字段34?使用代码示例的第一部分然后是第二个示例,它们看起来会是什么样的组合?有人能提供一个例子吗?
一直在玩这个并没有太多运气将它们全部合并到一个过滤器中。继续犯错,我相信我们没有正确的事情。提前谢谢。
答案 0 :(得分:0)
得到了解决方案,这是代码,以防任何人需要它。
/** Modify the content returned from the Custom Content field */
add_filter( 'gravityview/fields/custom/content_before', 'my_gv_custom_content_before', 10, 1 );
/**
* Removes the custom content field's content in case a certain entry field is empty
*
* @param string $content Custom Content field content
* @return string
*/
function my_gv_custom_content_before( $content ) {
global $gravityview_view;
extract( $gravityview_view->field_data );
// field_id => merge_tag
$validation = array(
'18' => '{Custom Background:18}',
'26' => '{New YouTube Video Test:26}',
'28' => '{New Vimeo:28}'
);
foreach( $validation as $id => $merge ) {
if( false !== strpos( $content, $merge ) && empty( $entry[ (string)$id ] ) ) {
return '';
}
}
return $content;
}