根据 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;