元值上的非法字符串偏移 === 1
Illegal string offset on meta value === 1
我想在检查 post 的元键值是否为 === 1 后显示来自自定义 post 的 post。但是我得到一个错误 "legal string offset 'isAirConditioning'".我做错了什么?
我创建了一个名为 "Works" 的自定义 post。对于这个习惯 post 我制作了一个元框,它允许我标记哪些工作将分配给空调、制冷或恢复。然后在页面模板上我 运行 一个 if 语句来检查我当前所在的页面以显示正确的作品。如果我在空调工作页面上,则会传递一个查询以从该自定义 post 获取所有带有元的 post,然后进行第二个 if 语句来检查 $meta['isAirConditioning'] === '1'。
<?php
$classes = get_body_class();
if(in_array('page-id-233', $classes)) {
echo '<p>do something</p>';
}
elseif(in_array('page-id-239', $classes)) {
echo '<ul>';
$args = array('post_type' => 'works', 'orderby' => 'date', 'order' => 'ASC', 'showposts' => 100);
$the_query = new WP_Query($args);
while ($the_query->have_posts() ) : $the_query->the_post();
$meta = get_post_meta( $post->ID, 'portfolio_details', true );
if ($meta['isAirConditioning'] === '1') {
?>
<li class="works-wrapper col-3 col-sm-3 col-md-3 col-lg-3">
<a class="works-img"href="<?php the_permalink() ?>" >
<span class="works-gradient"></span>
<?php the_post_thumbnail(); ?>
</a><!-- .works-img -->
<a class="works-title" href="<?php the_permalink() ?>" ><?php the_title(); ?></a>
</li><!-- .worsk-wrapper -->
<?php
}
endwhile;
echo '</ul>';
}
elseif(in_array('page-id-241', $classes)) {
echo '<p>do something</p>';
}
?>
正在显示 post,但出现错误 "Illegal string offset 'isAirConditioning'"
查看官方文档。您将 $single 设置为 true 并检索一个值而不是数组。所以我猜错误出现是因为您尝试使用字符串作为数组。
我通过检查 $meta 是否为空来解决问题
if(!empty($meta)) :
if ($meta['isAirConditioning'] === '1') {
?>
<li class="works-wrapper col-3 col-sm-3 col-md-3 col-lg-3">
<a class="works-img"href="<?php the_permalink() ?>" >
<span class="works-gradient"></span>
<?php the_post_thumbnail(); ?>
</a><!-- .works-img -->
<a class="works-title" href="<?php the_permalink() ?>" ><?php the_title(); ?></a>
</li><!-- .worsk-wrapper -->
<?php
}
endif;
我想在检查 post 的元键值是否为 === 1 后显示来自自定义 post 的 post。但是我得到一个错误 "legal string offset 'isAirConditioning'".我做错了什么?
我创建了一个名为 "Works" 的自定义 post。对于这个习惯 post 我制作了一个元框,它允许我标记哪些工作将分配给空调、制冷或恢复。然后在页面模板上我 运行 一个 if 语句来检查我当前所在的页面以显示正确的作品。如果我在空调工作页面上,则会传递一个查询以从该自定义 post 获取所有带有元的 post,然后进行第二个 if 语句来检查 $meta['isAirConditioning'] === '1'。
<?php
$classes = get_body_class();
if(in_array('page-id-233', $classes)) {
echo '<p>do something</p>';
}
elseif(in_array('page-id-239', $classes)) {
echo '<ul>';
$args = array('post_type' => 'works', 'orderby' => 'date', 'order' => 'ASC', 'showposts' => 100);
$the_query = new WP_Query($args);
while ($the_query->have_posts() ) : $the_query->the_post();
$meta = get_post_meta( $post->ID, 'portfolio_details', true );
if ($meta['isAirConditioning'] === '1') {
?>
<li class="works-wrapper col-3 col-sm-3 col-md-3 col-lg-3">
<a class="works-img"href="<?php the_permalink() ?>" >
<span class="works-gradient"></span>
<?php the_post_thumbnail(); ?>
</a><!-- .works-img -->
<a class="works-title" href="<?php the_permalink() ?>" ><?php the_title(); ?></a>
</li><!-- .worsk-wrapper -->
<?php
}
endwhile;
echo '</ul>';
}
elseif(in_array('page-id-241', $classes)) {
echo '<p>do something</p>';
}
?>
正在显示 post,但出现错误 "Illegal string offset 'isAirConditioning'"
查看官方文档。您将 $single 设置为 true 并检索一个值而不是数组。所以我猜错误出现是因为您尝试使用字符串作为数组。
我通过检查 $meta 是否为空来解决问题
if(!empty($meta)) :
if ($meta['isAirConditioning'] === '1') {
?>
<li class="works-wrapper col-3 col-sm-3 col-md-3 col-lg-3">
<a class="works-img"href="<?php the_permalink() ?>" >
<span class="works-gradient"></span>
<?php the_post_thumbnail(); ?>
</a><!-- .works-img -->
<a class="works-title" href="<?php the_permalink() ?>" ><?php the_title(); ?></a>
</li><!-- .worsk-wrapper -->
<?php
}
endif;