【发布时间】:2020-08-09 19:17:26
【问题描述】:
我正在使用带有简单 if else 语句的 PHP 函数。如果 variable = 100 做某事,则做其他事情。
数据来自ACF Range Field。出于某种原因,即使 ACF 字段 = 100,该函数也总是返回 else 语句。我认为问题在于我尝试使用的 if 语句:=、==、!==、===或 >=。如果我将它更改为 single = 那么它总是返回 h2 Something 但所有其余部分都会返回 h2 其他内容,无论我在 ACF Range 字段中输入什么值。
function hovsa_shortcode() {
$full_tegnet = get_field("tegnede_andele_");
if ( $full_tegnet == '100' ) {
return '<h2>Something</h2>';
} else {
return '<h2>Something else</h2>';
}
}
add_shortcode( 'hovsa', 'hovsa_shortcode' );
【问题讨论】:
-
如果你这样做
var_dump($full_tegnet)会发生什么?strlen($full_tegnet)返回什么? -
简单的等号是赋值。这仅在 IF 中的特殊情况下使代码难以辨认。双等号是比较运算符,应该匹配。正如@MC Emperor 所说,var_dump 打印什么?
-
hmm.. 出于某种原因,var_dump 返回 null。我以前使用过 get_field 并取得了巨大的成功。像这样: $tegnet = get_field("tegnede_andele_"); - $maxvalue = ($tegnet == 100) ? 0 : 10000;
-
ACF get_field 尝试将
get_field()与post id 一起使用并禁用任何格式化逻辑:<?php $full_tegnet = get_field('tegnede_andele_', get_the_ID(), false);如果仍然为空,那么您的字段确实为空! -
它仍然返回 null... 但是,我发现问题是我试图在循环之外获取数据。如果我回显这样的内容,那么它会回显 100: global $wp_query; $postid = $wp_query->post->ID; echo get_post_meta($postid, 'tegnede_andele_', true); wp_reset_query();
标签: php wordpress if-statement advanced-custom-fields equality