Php 高级自定义字段-带有true/false复选框的If/Else语句

Php 高级自定义字段-带有true/false复选框的If/Else语句,php,wordpress,wordpress-theming,woocommerce,advanced-custom-fields,Php,Wordpress,Wordpress Theming,Woocommerce,Advanced Custom Fields,我使用Wordpress的高级自定义字段添加了一个true/false复选框。我想能够选择一个选项,修改页面模板 我正在WooCommerce/Wordpress中将此选项添加到产品类别中。我在代码中包含了这一点逻辑 我有以下代码,但它不工作。我怀疑这是因为它不在循环中。但是,我要插入的代码包含循环。非常感谢您对本准则的任何意见/指导 <?php if (is_product_category() && get_field('field_name') == true) {

我使用Wordpress的高级自定义字段添加了一个true/false复选框。我想能够选择一个选项,修改页面模板

我正在WooCommerce/Wordpress中将此选项添加到产品类别中。我在代码中包含了这一点逻辑

我有以下代码,但它不工作。我怀疑这是因为它不在循环中。但是,我要插入的代码包含循环。非常感谢您对本准则的任何意见/指导

<?php if (is_product_category() && get_field('field_name') == true) { ?>

    <div class="custom-sidebar-right">
            <?php if ( have_posts() ) : ?>
            <?php while ( have_posts() ) : the_post(); ?>
                <?php woocommerce_get_template_part( 'content', 'product' ); ?>                 
            <?php endwhile; // end of the loop. ?>

    </div>

<?php } elseif (is_product_category() && get_field('field_name') == false ) { // Added close brace

<div> Empty Test </div>
}


if语句中缺少括号, 改变


好的,我重新阅读了ACF的文档,发现如下()

所以我应用了一些逻辑,现在它起作用了。感谢var_dump指针帮助我解决了这个问题

// vars
$queried_object = get_queried_object(); 
$taxonomy = $queried_object->taxonomy;
$term_id = $queried_object->term_id;  

$is_field_name = get_field('field_name', $taxonomy . '_' . $term_id);

if (is_product_category() && $is_field_name == false) { ?>

感谢您的快速反馈。恐怕这不起作用,但它确实指出了我在上面的if语句中遗漏了一个括号,我现在已经修复了/code>if(is_product_category()&&get_field('field_name')==true))
括号已修复,但尚未解决。对于get_字段(“product_cat_two_col_template”),我可以从changingg==true或==false获得不同的输出-似乎get_字段(“product_cat_two_col_template”)总是false。我想这可能是因为它不在循环中。你想用is_product_category()做什么,你想检查它是否设置了吗?tbh is_product_category()不相关,我添加了它,因为我想用多个参数检查。is_product_category()工作正常,如果在产品页面上,则为true。我的问题在于来自ACF的get_字段('field_name')。这是我添加到产品类别中的真/假选择器。在产品类别中,我可以设置此项。然后,我想在IF语句中使用它,但它总是错误的。“field_name”如果您将此字段用作自定义字段,我指的是名称还是其他内容,请尝试转储值var_dump(get_field('field_name'))??谢谢字段\ u name是自定义字段。我已在代码中正确设置了此选项。不确定var_dump-抱歉!var_dump只是检查您得到的值!I get:bool(false)这仅仅意味着在将数据保存到数据库时,字段值没有更新。这也适用于内部循环和外部循环吗?这两种情况都可以,因为在get_字段的第二个括号中,我们设置了ACF需要查看的位置。如果不包括第二个括号,则它将在当前循环中查看。
if (is_product_category() && get_field('field_name') == true) )
// vars
$queried_object = get_queried_object(); 
$taxonomy = $queried_object->taxonomy;
$term_id = $queried_object->term_id;  

$is_field_name = get_field('field_name', $taxonomy . '_' . $term_id);

if (is_product_category() && $is_field_name == false) { ?>