【问题标题】:Advanced Custom Fields - If/Else Statement with true/false checkbox高级自定义字段 - 带有 true/false 复选框的 If/Else 语句
【发布时间】:2013-10-23 01:31:27
【问题描述】:

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

我正在将此选项添加到 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>
}

【问题讨论】:

  • "field_name" 您正在使用这个作为自定义字段,我的意思是名称或者是别的什么,也尝试转储值 var_dump ( get_field('field_name') ); ??
  • 谢谢。 field_name 是自定义字段。我已经在我的代码中正确设置了这个。不确定 var_dump - 抱歉!
  • var_dump 只是为了检查你得到了什么价值
  • 哇!我得到:布尔(假)
  • 这只是意味着当您将数据保存到数据库时,您的字段值没有更新。

标签: php wordpress wordpress-theming woocommerce advanced-custom-fields


【解决方案1】:

好的,我重新阅读了 ACF 的文档,发现以下内容 (http://www.advancedcustomfields.com/resources/how-to/how-to-get-values-from-a-taxonomy-term/)

所以我应用了一些逻辑,现在它可以工作了。感谢 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) { ?>

【讨论】:

  • 这也适用于循环内和循环外吗?
  • 应该没问题,因为我们在 get_field 的第二个括号中设置了 ACF 需要查看的位置。如果不包括第二个括号,那么它将在当前循环中查找。
【解决方案2】:

if 语句中缺少括号, 改变

  if (is_product_category() && get_field('field_name') == true) 

if (is_product_category() && get_field('field_name') == true) )

【讨论】:

  • 感谢您的快速反馈。恐怕这不起作用,但它确实指出我在上面的 if 语句中错过了一个括号,我现在已经修复了/
  • if (is_product_category() &amp;&amp; get_field('field_name') == true) )
  • 括号已修复但未解决。我可以从为 get_field('product_cat_two_col_template') 更改 g == true 或 == false 获得不同的输出 - 似乎 get_field('product_cat_two_col_template') 总是错误的。我想可能是因为它不在循环中。
  • 你想用 is_product_category() 做什么,你想检查它是否设置了吗?
  • tbh is_product_category() 不相关,我添加它是因为我想检查多个参数。 is_product_category() 运行良好,如果在产品页面上为 true。我的问题在于 ACF 的 get_field('field_name') 。这是我添加到产品类别中的真/假选择器。在产品类别中,我可以设置它。然后我想在我的 IF 语句中使用它,但它总是错误的。
猜你喜欢
  • 2014-10-13
  • 1970-01-01
  • 2015-09-27
  • 2021-03-22
  • 1970-01-01
  • 2012-01-17
  • 2021-07-28
  • 1970-01-01
  • 2014-03-10
相关资源
最近更新 更多