我正在尝试设计一个H4元素的样式,该元素具有不同宽度的左下边框和由客户端在CMS中填充的自定义字段定义的特定颜色。我的CMS布局是正确的,但下面的代码我知道不是。我的问题领域是H4,代码的其他部分呈现正确。
<?php
if (get_field("sponsorlogos")){
while (has_sub_field("sponsorlogos")){
if (get_row_layout() == "sponsor_category_title"){ // Sponsor Category Title
echo '<h4 style="border-left: 10px solid '.the_sub_field('sponsor_category_title_colour').' !important; border-bottom: 1px solid '.the_sub_field("sponsor_category_title_colour").' !important; margin: 40px 0 15px 0;">';
the_sub_field("sponsor_category_title_text");
echo '</h4>';
}
if (get_row_layout() == "sponsor_logo_container"){ // Sponsor Repeater Field
$rows = get_sub_field('sponsor_item');
if ($rows){
echo '<ul id="sponsor-logo-container">';
foreach($rows as $row){
echo '<li class="sponsor-logo"><a class="logo-link" target="_blank" href="'.$row['sponsor_link'].'"><img width="190" height="110" src="'.$row['sponsor_logo'].'" alt="'.$row['sponsor_title'].'"class="logo-image grayscale" /></a><span class="staff-name">'.$row['sponsor_support'].'</span></li>';
}
echo '<div style="clear:both;"></div>';
echo '</ul>';
}
}
}
}
?>
结果标记如下:
<h4 style="border-left: 10px solid !important; border-bottom: 1px solid !important; margin: 40px 0 15px 0;">Bronze</h4>
您可以看到它省略了十六进制的"#xxxxxxx"颜色部分。
不过,我应该重申一下,因为颜色十六进制在标记中成功地吐出了两次(正如预期的那样),但它出现在H4元素上方。
我确信我没有正确使用高级自定义字段标记。
救命!
尝试从更改PHP代码
echo '<h4 style="border-left: 10px solid '.the_sub_field('sponsor_category_title_colour').' !important; border-bottom: 1px solid '.the_sub_field("sponsor_category_title_colour").' !important; margin: 40px 0 15px 0;">';
至
echo '<h4 style="border-left: 10px solid '. get_sub_field('sponsor_category_title_colour').' !important; border-bottom: 1px solid '.get_sub_field("sponsor_category_title_colour").' !important; margin: 40px 0 15px 0;">';
换句话说,将_sub_field()替换为get_sub_field()。当您已经有了echo调用时,应该使用get_sub_field()函数。当前面没有回声时,可以使用_sub_field()。