我试图仅在填充了metabox的情况下显示#firstimg,因为否则它只会显示一个空框,因为它正在搜索不存在的图像。
我正在使用“自定义帖子类型”,可以显示到目前为止的图像,但是,一旦我尝试隐藏#firstimg,它所做的一切只会使我的代码混乱(它不会显示网站的其余部分,而且控制台日志中也没有任何内容,因此我不知道自己在做什么错。)
我假设我可能已经关闭了(希望吗?),但是我没有正确编写代码。希望有人愿意帮助我!
<img class="port-img" id="firstimg" src="
<?php $key_1_value = get_post_meta($post->ID, 'ecpt_img_1', true);
if( ! empty( $key_1_value ) ) {
echo $key_1_value;
document.getElementById("firstimg").style.display = "block";}
?>">
<img class="port-img" id="secondimg" src="<?php $key_2_value = get_post_meta($post->ID, 'ecpt_img_2', true); if( ! empty( $key_2_value ) ) { echo $key_2_value;}?>">
<img class="port-img" id="thirdimg" src="<?php $key_3_value = get_post_meta($post->ID, 'ecpt_img_3', true); if( ! empty( $key_3_value ) ) { echo $key_3_value;}?>">
答案 0 :(得分:1)
看来您的php中有JavaScript。也许尝试这样的事情?我假设您的CSS在.port-img或#firstimg ...上没有display: none
...
<?php $key_1_value = get_post_meta($post->ID, 'ecpt_img_1', true);
if( !empty( $key_1_value ) ) : ?>
<img class="port-img" id="firstimg" src="<?php echo $key_1_value; ?>"/>
<?php endif; ?>
<img class="port-img" id="secondimg" src="<?php $key_2_value = get_post_meta($post->ID, 'ecpt_img_2', true); if( ! empty( $key_2_value ) ) { echo $key_2_value;}?>">
<img class="port-img" id="thirdimg" src="<?php $key_3_value = get_post_meta($post->ID, 'ecpt_img_3', true); if( ! empty( $key_3_value ) ) { echo $key_3_value;}?>">
答案 1 :(得分:1)
您没有转义或回显JavaScript,这是导致网站无法加载超过该点的原因(您遇到致命错误)。
如果键不存在,为什么不根本不显示图像呢?
$key_1_value = get_post_meta( $post->ID, 'ecpt_img_1', true );
$key_2_value = get_post_meta( $post->ID, 'ecpt_img_2', true );
$key_3_value = get_post_meta( $post->ID, 'ecpt_img_3', true );
if( $key_1_value ) echo '<img class="port-img" id="firstimage" src="'. $key_1_value .'" />';
if( $key_2_value ) echo '<img class="port-img" id="secondimage" src="'. $key_2_value .'" />';
if( $key_3_value ) echo '<img class="port-img" id="thirdimage" src="'. $key_3_value .'" />';
或者更好的是,您甚至可以将1、2和3作为数组循环(请注意,您必须将CSS从#firstmage
更改为#image-1
,依此类推-但这确实您也不需要定义键变量,然后再检查它,因为get_post_meta()
将返回一个 truthy 值,或者返回false
(如果没有)存在,因此您可以在定义它的同时进行比较:
foreach( range(1,3) as $i ){
if( $image_src = get_post_meta( $post->ID, "ecpt_img_$i", true ) ){
echo "<img class='port-image' id='image-$i' src='$image_src' />";
}
}