在重复的meta_key上使用Foreach的问题

时间:2015-12-17 作者:Cam

Im使用发送到网站首页的add\\u user\\u meta自定义值进行存储。下面是php代码。

$user_query = new WP_User_Query( array(
          \'fields\' => \'ID\'
      ) );
    $user_ids = $user_query->get_results();
    foreach( $user_object->_custom_link as $user_id ) {
        $user_object = get_userdata( $user_ids );
        echo \'<li class="quick-link custom"><img src="http://compass/wp-content/uploads/2015/12/add-icon.png" /><h2><a href="\'.$user_object->_custom_link.\'">Custom Link</a></h2></li>\';
    }
当所有内容都生成时,只返回一个元值,但可以存储多个值。enter image description here

我的问题是,现在我的循环只检查ID,我不完全确定如何让它检查ID,然后检查\\u custom\\u link的meta\\u键有多少。enter image description here

这表明只返回了一个meta\\u密钥。如果您有更好的方法,我们将不胜感激。

2 个回复
SO网友:jgraup

下面是一个获取用户ID的示例,循环遍历每个ID,获取一个meta\\u键作为数组,向其中添加新值并删除旧值,保存回meta,然后再次获取它以循环遍历数组中的每个项以进行输出。数组只是重复键的一个示例。

$user_query = new WP_User_Query( array( \'fields\' => \'ID\' ));
$user_ids = $user_query->get_results();

echo "<ul>";

foreach ( $user_ids as $user_id ) {

    // all meta for user
    $all_meta_for_user = array_map( function( $a ){ return $a[0]; }, get_user_meta( $user_id ) );

    echo "<pre>";
    print_r ( $all_meta_for_user ); // see all the values
    echo "</pre>";

    $key = \'__TEST_KEY\';
    $value_set = array();
    if( isset( $all_meta_for_user [ $key ] )) {
        $value_set = get_user_meta ( $user_id, $key, true );
        if( ! is_array( $value_set )) $value_set = array(); // make sure we\'re working with an array
    }

    // add to existing values
    $value_set[] = timer_stop(4);

    // remove old items
    if( count ($value_set) > 4 ) array_shift ($value_set);

    // set the meta
    update_user_meta($user_id, $key, $value_set );

    // LATEST VALUES
    $value_set = get_user_meta ( $user_id, $key, true );

    echo "<pre>";
    print_r ( $value_set ); // the value set currently in our meta
    echo "</pre>";

    foreach ( $value_set as $inx => $value ){
        echo "<li>{$user_id} - {$key} - {$inx} - {$value}</li>";
    }
    echo "</ul>";
}

echo "</ul>";

SO网友:DiBritto

我在wp\\u usermeta中寻找这类查询的解决方案已经有很长时间了,现在我可以对每个注册用户的值进行排序,创建一个查询并使用wpdb类的左连接,我知道这篇文章有点过时,但我不得不分享我的脚本,因为你的文章让我坚持到找到解决方案为止,我希望它能有所帮助。

<?php
   $sql_query =<<<SQL
   SELECT
     {$wpdb->users}.user_email,
     {$wpdb->users}.user_nicename,
     {$wpdb->usermeta}.meta_value
   FROM
     {$wpdb->users}
     LEFT JOIN {$wpdb->usermeta} ON {$wpdb->users}.ID = {$wpdb->usermeta}.user_id
   WHERE 1=1
     AND {$wpdb->users}.user_status = \'0\'
     AND {$wpdb->usermeta}.meta_key = \'ma_deposito\'
    /* AND {$wpdb->usermeta}.meta_value = \'50\'// busca meta_value pelo valor*/ 
   SQL;
     $users = $wpdb->get_results($sql_query);
    //header(\'Content-type:text/plain\');
    // print_r($usersemails);
    foreach ( $users as $indce => $valor ) :
        echo \'Apelido: \'. $valor->user_nicename . \' - E-mail: \'. $valor->user_email. \' - Valor: \'. $valor->meta_value.\'<br />\';
    endforeach;
   ?>

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请