根据 Wordpress post 元数据更改背景颜色
Change background color based on Wordpress post metadata
我创建了一个前端表单,使用 Wordpress 和高级自定义字段收集网球比赛结果。表单域之一 ('match_results'
) 是赢或输单选按钮。
根据收集到的值,我想更新前端显示中列的背景颜色(使用 Elementor 创建)。
换句话说,如果自定义字段 'match_result'
包含值 'win',则该列应为绿色:
并且如果自定义字段 'match_result'
包含值 'loss',则该列应为红色:
我想使用短代码解决这个问题,因为它可以更轻松地在 Elementor 中使用。我创建了以下简码:
add_shortcode('match_result_sc', 'match_result_sc');
function match_result_sc() {
global $post;
$post_id = get_the_id ();
$match_result = get_post_meta( $post_id, 'match_result' );
$win = '<div class="win_column" >';
$win .= '</div>';
$loss = '<div class="loss_column" >';
$loss .= '</div>';
if($match_result = 'win')
return $win;
else
return $loss;
}
然后我将短代码放在有问题的列中,并使用以下命令 CSS 来更改新 div 的背景:
.win_column {
background-color: red !important;
}
.loss_column {
background-color: blue !important;
}
我已经使用作者元数据成功地使用了类似的短代码,但这似乎不起作用。新的 div 似乎甚至没有出现,这使我认为这是我的代码中的一个错误。我哪里出错了?任何帮助将不胜感激!
如果你的 match_results
field box 是用 ACF 制作的,我认为你的作业应该是这样的:
$match_result = get_field('match_result', $post_id);
然后在你的条件中你缺少一个“=”:
if($match_result == 'win')
return $win;
else
return $loss;
我创建了一个前端表单,使用 Wordpress 和高级自定义字段收集网球比赛结果。表单域之一 ('match_results'
) 是赢或输单选按钮。
根据收集到的值,我想更新前端显示中列的背景颜色(使用 Elementor 创建)。
换句话说,如果自定义字段 'match_result'
包含值 'win',则该列应为绿色:
并且如果自定义字段 'match_result'
包含值 'loss',则该列应为红色:
我想使用短代码解决这个问题,因为它可以更轻松地在 Elementor 中使用。我创建了以下简码:
add_shortcode('match_result_sc', 'match_result_sc');
function match_result_sc() {
global $post;
$post_id = get_the_id ();
$match_result = get_post_meta( $post_id, 'match_result' );
$win = '<div class="win_column" >';
$win .= '</div>';
$loss = '<div class="loss_column" >';
$loss .= '</div>';
if($match_result = 'win')
return $win;
else
return $loss;
}
然后我将短代码放在有问题的列中,并使用以下命令 CSS 来更改新 div 的背景:
.win_column {
background-color: red !important;
}
.loss_column {
background-color: blue !important;
}
我已经使用作者元数据成功地使用了类似的短代码,但这似乎不起作用。新的 div 似乎甚至没有出现,这使我认为这是我的代码中的一个错误。我哪里出错了?任何帮助将不胜感激!
如果你的 match_results
field box 是用 ACF 制作的,我认为你的作业应该是这样的:
$match_result = get_field('match_result', $post_id);
然后在你的条件中你缺少一个“=”:
if($match_result == 'win')
return $win;
else
return $loss;