仅当自定义域具有值时才显示HTML

时间:2013-03-31 作者:damrakred

我正在使用一个名为Advanced Custom Fields的插件。

我正在寻找有关自定义帖子类型模板代码的帮助,该模板显示一些转发器字段数据。我用HTML包装每个子字段。有时,一个或多个子字段没有值。

如果子字段不存在值,如何不显示正在包装子字段的HTML

在下面的代码中,如果子字段不存在值,“measurement”和“amount”子字段的SPAN标记应隐藏。

我的代码如下:

<?php 
    if(get_field(\'ingredients-list\'))
    {
    echo \'<ul class="ingredientsList">\';

        while(has_sub_field(\'ingredients-list\'))
    {
    echo \'<li class="ingredient" itemprop="ingredients"> <label for="">\' . get_sub_field(\'quantity\') . \'&nbsp; <span class="amount">\' . get_sub_field(\'measurement\') . \'</span> \' . \'<span class="name">&nbsp;\'. get_sub_field(\'ingredient_name\') .\'</span><span class="notes">&nbsp;\' . get_sub_field(\'notes\')  . \' </span></label></li>\';
     }

         echo \'</ul>\';
}    
?>

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

您可以使用“get\\u sub\\u字段”测试子字段。如果没有返回任何内容,并且它们为空,则不会显示与If语句关联的内容。

<?php
if ( get_field(\'ingredients-list\') )
{
    echo \'<ul class="ingredientsList">\';
    while ( has_sub_field(\'ingredients-list\') )
    {
        echo \'<li class="ingredient" itemprop="ingredients">\';
            echo \'<label for="">\' . get_sub_field(\'quantity\') . \'&nbsp; \';
                if ( get_sub_field(\'measurement\') ) echo \'<span class="amount">\' . get_sub_field(\'measurement\') . \'</span> \';
                if ( get_sub_field(\'ingredient_name\') ) echo \'<span class="name">&nbsp;\'. get_sub_field(\'ingredient_name\') .\'</span>\';
                if ( get_sub_field(\'measurement\') ) echo \'<span class="notes">&nbsp;\' . get_sub_field(\'notes\')  . \' </span>\';
            echo \'</label>\';
        echo \'</li>\';
    }
    echo \'</ul>\';
}
?>

结束

相关推荐

Multiple Page Templates & CSS

在使用多个页面模板的主题上处理CSS的最佳实践是什么?例如:我将有一个全宽页面模板和一个两列页面模板。最好只在单个CSS中调用容器(#fullWidthContainer vs.#twoColumnContainer)还是为每个页面模板提供单独的CSS文件更好?

仅当自定义域具有值时才显示HTML - 小码农CODE - 行之有效找到问题解决它

仅当自定义域具有值时才显示HTML

时间:2013-03-31 作者:damrakred

我正在使用一个名为Advanced Custom Fields的插件。

我正在寻找有关自定义帖子类型模板代码的帮助,该模板显示一些转发器字段数据。我用HTML包装每个子字段。有时,一个或多个子字段没有值。

如果子字段不存在值,如何不显示正在包装子字段的HTML

在下面的代码中,如果子字段不存在值,“measurement”和“amount”子字段的SPAN标记应隐藏。

我的代码如下:

<?php 
    if(get_field(\'ingredients-list\'))
    {
    echo \'<ul class="ingredientsList">\';

        while(has_sub_field(\'ingredients-list\'))
    {
    echo \'<li class="ingredient" itemprop="ingredients"> <label for="">\' . get_sub_field(\'quantity\') . \'&nbsp; <span class="amount">\' . get_sub_field(\'measurement\') . \'</span> \' . \'<span class="name">&nbsp;\'. get_sub_field(\'ingredient_name\') .\'</span><span class="notes">&nbsp;\' . get_sub_field(\'notes\')  . \' </span></label></li>\';
     }

         echo \'</ul>\';
}    
?>

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

您可以使用“get\\u sub\\u字段”测试子字段。如果没有返回任何内容,并且它们为空,则不会显示与If语句关联的内容。

<?php
if ( get_field(\'ingredients-list\') )
{
    echo \'<ul class="ingredientsList">\';
    while ( has_sub_field(\'ingredients-list\') )
    {
        echo \'<li class="ingredient" itemprop="ingredients">\';
            echo \'<label for="">\' . get_sub_field(\'quantity\') . \'&nbsp; \';
                if ( get_sub_field(\'measurement\') ) echo \'<span class="amount">\' . get_sub_field(\'measurement\') . \'</span> \';
                if ( get_sub_field(\'ingredient_name\') ) echo \'<span class="name">&nbsp;\'. get_sub_field(\'ingredient_name\') .\'</span>\';
                if ( get_sub_field(\'measurement\') ) echo \'<span class="notes">&nbsp;\' . get_sub_field(\'notes\')  . \' </span>\';
            echo \'</label>\';
        echo \'</li>\';
    }
    echo \'</ul>\';
}
?>

相关推荐

Custom templates vs page-slug

我目前一直在使用slug来设置页面模板,使用普通的层次结构例如,如果我想更改的页面模板http://www.example.com/about-us, 我会编辑关于我们的页面。php如果客户端要去更改页面slug,它将不再加载正确的模板。在WordPress后端使用“自定义模板”下拉列表是否更好?就这一点而言,最佳做法是什么?非常感谢