php - ACF 中继器字段 [短代码] - 如果子字段为空,则不显示任何内容
问题描述
我正在尝试在 Wordpress 中使用 ACF 高级自定义字段创建一个 TO DO 列表。
我想要实现的是一个短代码,它将显示包含在带有 H3 标题的 Div 标签中的 TO DO 中继器。
但如果子字段为空,则不应该显示任何内容,甚至 H3 标题。
我做到了这一点:
add_shortcode( 'TO-DO-LIST', 'my-to-do-list');
function my-to-do-list($atts){
if(!function_exists('get_field'))
return;
ob_start();
// check if the repeater field has rows of data
if( have_rows('acf_to_do_repeater_group') ):
echo '<div id="to-do-list-wrapper">';
echo '<h3>TO DO:</h3>';
echo '<div class="to-do-content-wrapper">';
echo '<ul class="to-do-list-wrap">';
?>
<?php
// loop through the rows of data
while ( have_rows('acf_to_do_repeater_group') ) : the_row();
// display a sub field value
$content = get_sub_field('to-do-repeater-subfield');
echo '<li>' . $content . '</li>';
endwhile;
echo '</ul></div></div>';
endif;
$output = ob_get_clean();
return $output;
}
它适用于获取值,所以如果行有输入,一切都会正确显示,但是当行为空时,我似乎无法弄清楚如何隐藏整个事情。
目前即使行为空,它仍然显示列表。
我在这里做错了什么?
解决方案
在 have rows 函数上添加一个计数:如果它由于某种原因返回一个空集为 0,您可以将计数增加到 1。
if( have_rows('acf_to_do_repeater_group') && count(have_rows('acf_to_do_repeater_group')) > 0):
推荐阅读
- excel - Performing a search in excel for subtraction based on cell contents
- processing - 如何生成随机位置对象
- r - 将颜色渐变应用到 ggraph 的 `geom_conn_bundle`
- javascript - 如果不满足条件,防止 parleyjs 多个步骤继续
- android - Android Studio:导航 xml 编辑和设计视图的问题
- gitlab - GitLab CI、monorepo 和功能分支
- r - 如何按第一行/上一行划分新列中的行?
- javascript - 在启用 VoiceOver 的 iOS 上进行 ajax 更新后焦点丢失
- unity3d - 如何在 Unity 中将 VR 按钮与 PUN 联网?
- python - SQLITE3 - 如何根据输入的数据自动检测数据库中的表?