我是使用PHP的初学者!我知道之前有这样的问题,然而,它们也不像我想要的那样对我有效。
这是&#39>发生了什么: 我有多个背景图像,我使用css和php实现。到目前为止,这些图像中的每一个都是黑色,白色和蓝色。我希望能够写一些PHP ...再次我是一个初学者,所以请原谅我的无知...将背景图像更改为上面列出的任何一个,以匹配文本的颜色。
有些事情需要注意: 这是在php文件上完成的。该文件还对应于wordpress(ACF)插件。我可以在这个wordpress插件上更改文本颜色。我已经尝试过使用github,我已经看过这个网站上的以前的答案和谷歌,但是,我相信我对php和javascript的缺乏知识让我更加困惑。我认为我想要实现的目标可以通过简单的if else语句完成。另外值得注意的是我只想在php中回答,而不是javascript或jquery或github(因为这些答案只会让我更加困惑)。请帮忙,谢谢。
这是我到目前为止所写的相关代码的剪辑。
#logo{
position:absolute;
top: 17px;
left: 14px;
height: 20px;
padding: 7px 0 0 85px;
background: url(<?php if $color_text = ("#FFF")
{echo ((<? php bloginfo("stylesheet_directory")?>)'/img/image_white.png');}?>);
/*I wrote the above for background, I see now that you cannot
have a php statement inside another php statement, How can I fix this?*/
/*The below is what has been written before*/
/*background: url(<?php bloginfo("stylesheet_directory")?>/img/image_white.png) no-repeat 0 2px;*/
/*The below is how text color is determined in the wordpress plugin*/
/*ignore colors_2 (it responds to a color picker) but I don't want to use it
colors_text responds to the wordpress plugin where the user can choose white, black, or blue
I would assume I would need to change the below php statement to work with the php statement regarding the background color change. (I would appreciate help doing this as well)*/
color: <?php if ($colors_2 || $color_text) {echo ($color_text ? $color_text : $colors_2);}
else echo '#005b92';?>;
}
答案 0 :(得分:0)
我不确定我是否正确理解了您的问题,但如果我这样做,以下内容应该提供您需要的内容:
<?php
$styledir = "stylesheet_directory";
$image = "image_default.png";
$color = "color: #005b92;";
if ($color_text) {
$color = "color: ".$color_text.";";
switch ($color_text) {
case ("#FFF") : $image = "image_white.png"; break;
case ("#000") : $image = "image_black.png"; break;
case ("#00F") : $image = "image_blue.png"; break;
default: $image = "image_default.png";
}
}
$background = "background: url('";
$background .= bloginfo($styledir);
$background .= "/img/";
$background .= $image;
$background .= "'); ";
?>
#logo{
position:absolute;
top: 17px;
left: 14px;
height: 20px;
padding: 7px 0 0 85px;
<?php echo $background; ?>
<?php echo $color; ?>
}
答案 1 :(得分:0)
由于你有一个有点复杂的if语句,所以不建议把它写成ternary operator(condition ? true : false
),而是使用if语句会更好。
在您的示例中,您使用的是变量名$colors_text
和$colors_2
,但是您没有使用ACF字段值填充它们。您可以使用get_field()
函数返回值,并使用the_field()
来回显值(类似于循环中的WordPress函数:the_title()
和get_the_title()
) 。您可以在if语句中使用get_field()
,因为如果未设置该字段,它将返回false
。
您还有一些语法错误。虽然你不能在PHP标签中嵌入PHP标签,但是对于“背景”的if语句通常是不正确的。您有if $color_text = ("#FFF")
但应该有if ($color_text == "#FFF")
- 左边的paren位置错误,您正在使用=
(分配)而不是==
(逻辑或)。我认为你只想设置背景图像,如果颜色是白色(或更确切地说是“#FFF”,因为“#FFFFFF”也是相同的颜色,但不匹配你的if)。函数bloginfo()
将回显结果,因此您无需在代码中echo
。
<?php
if ( get_field( 'colors_text' ) ){
// not false, so use the value from color_text
$color = get_field( 'colors_text' );
} else
if ( get_field( 'colors_2' ) ){
// color_text is not set, but colors_2 is, so use that
$color = get_field( 'colors_2' );
} else {
// the default if neither color_text nor colors_2 are set
$color = '#005b92';
}
?>
<style>
#logo {
position:absolute;
top: 17px;
left: 14px;
height: 20px;
padding: 7px 0 0 85px;
/* if the upper case $color is either #FFF or #FFFFFF set the background image */
<?php if ( in_array( strtoupper( $color ), array( "#FFF", #FFFFFF" ) ) ): ?>
background: url(<?php bloginfo("stylesheet_directory")?>/img/image_white.png) no-repeat 0 2px;
<?php endif; ?>
/* this was set in the PHP, so we can just echo it */
color: <?php echo #color; ?>;
}
</style>