GET_POST_META数组中的随机元素

时间:2013-06-12 作者:Simon Cooper

我有一个自定义字段,其中包含逗号分隔的颜色列表。

我想随机选择其中一种颜色。

如果get\\u post\\u meta返回一个数组,我想我可以从该数组中随机选择。

如果我尝试回显$rand\\u color\\u值,它只会给出整个数组

如何从自定义字段的列表中随机选择一种颜色。

    $agrs = array(
        \'post_type\' => \'page\',
        \'tag\' => \'colors\'
    );

    $colorLoop = new WP_Query($agrs);

    if($colorLoop->have_posts()):
        while($colorLoop->have_posts()):
            $colorLoop->the_post();

    $theColor = get_post_meta($post->ID, \'colors\', false);

    /*random color*/
    $rand_color = array_rand($theColor,1);
    $rand_color_value = $theColor[$rand_color];
    echo $rand_color_value; 

    ?>

    <?php endwhile; endif;?>

    <?php wp_reset_postdata; ?>

1 个回复
最合适的回答,由SO网友:ndm 整理而成

由于元数据的内容实际上是一个字符串(根据您的注释),因此您的代码无法工作。get_post_meta(), 分别地get_metadata() 仅当内容实际serialized.

因此,如果您无法更改数据的保存方式,请确保array 或已将序列化内容传递给update_post_meta(), 然后,您必须手动将数据分解为数组:

$theColor = get_post_meta($post->ID, \'colors\', true);
$theColor = explode(\',\', $theColor);

结束

相关推荐

Fetch array with $wpdb

我正在尝试将此代码转换为使用$wpdb。$data = array(); $query = \"SELECT * FROM videos\"; $query_exec = mysql_query($query) or die(); while($row = mysql_fetch_array($query_exec)) { if ( $row[\'video\'] == \"http://youtu.be/\".end(explode(\'htt