数组/通过数字循环到get_post_meta


array / looping through numbers to get_post_meta

我在WordPress中有post-meta,它存储slide_image1-9、slide_text1-9和slide_embed1-9。

我希望能够循环浏览所有的可能性,并存储元值(如果有的话),然后检查它们是否为空,以决定是否应该显示幻灯片。基本上,我们想说,检查幻灯片#的任何数据,如果有值,那么显示一张幻灯片。

以下是我现在拥有的:

for ($i = 1; $i < 10; $i++) {
$slide_image . $i = get_post_meta($post->ID, 'slide_image'.$i, true);
$slide_embed . $i = get_post_meta($post->ID, 'slide_embed'.$i, true);
$slide_text . $i = get_post_meta($post->ID, 'slide_text'.$i, true);
if ($slide_image.$i !=='' || $slide_embed.$i !=='' || $slide_text.$i !==''){
echo 'there is a thing for this'
}}

这显然不起作用——我想我需要使用一个数组,但我想不通——有人能帮忙吗??

你可以试试这个:

$slides = [];
for ($i = 1; $i < 10; $i++) {
    $slides[$i]['image'] = get_post_meta($post->ID, 'slide_image'.$i, true);
    $slides[$i]['embed'] = get_post_meta($post->ID, 'slide_embed'.$i, true);
    $slides[$i]['text'] = get_post_meta($post->ID, 'slide_text'.$i, true);
    if ($slides[$i]['image'] !=='' || $slides[$i]['embed'] !=='' || $slides[$i]['text'] !=='') {
        echo 'there is a thing for this'
    }
}

从你的问题中还不太清楚你是想显示一张幻灯片,如果它具有所有属性,还是具有任何属性。您的代码是说,"如果我有任何可用的数据,请显示幻灯片",而不是"如果我拥有所有可用的数据"。

您必须将$side_image和以下内容定义为数组:

$slide_image = []; // or $slide_image = array();
$slide_embed = [];
$slide_text = [];

现在你可以在for循环中使用它,如下所示:

$slide_image[$i] = get_post_meta($post->ID, 'slide_image'.$i, true);