如何获取所有多选用户元值并将其添加到数组中?

时间:2019-06-13 作者:Michael

我试图从用户配置文件的多选字段中获取meta\\u值,并将其转换为用户名,然后将其输入到数组中。假设用户选择了两个选项(数百个选项中的两个),分别等于“4889”和“4982”。这些需要转换为用户名“shop4889”和“shop4982”(只需在选择的开头添加“shop”)。结果应放入我的数组中,如下所示:$usernames = array(\'shop4889\', \'shop4982\'); 这是我到目前为止的情况。

/**
 * Create Shortcode for Grabbing Users
 * Usage: [get_shop_users meta_key="stores" user_id="211"]
 */
function get_shop_users_shortcode( $atts ) {
    $atts = extract( shortcode_atts( array(
        \'user_id\' => um_profile_id(),  // Profile ID of franchisee
        \'meta_key\' => \'\',  // Field we will look up shop numbers
    ), $atts ) );
    if ( ! $user_id || empty( $meta_key ) ) return;

    $meta_value = get_user_meta( $user_id, $meta_key, true );
    if( is_serialized( $meta_value ) ){
       $meta_value = unserialize( $meta_value );
    } 
    if( is_array( $meta_value ) ){
         $meta_value = implode(", shop",$meta_value );
    }  
    return \'shop\' . apply_filters("um_user_shortcode_filter__{$meta_key}", $meta_value ) . \'\';

    }
add_shortcode( \'get_shop_users\', \'get_shop_users_shortcode\' );
此代码将文本输出为“shop4889,shop4982”,但在我的数组中无法正常工作。我猜有更好的方法来衡量结果吗?

该数组需要使用以下代码,如果我输入用户名而不是从用户配置文件中调用用户名,则效果很好。

// Search these Usernames
$usernames = array(\'shop4889\', \'shop4982\');

// Fetch the User IDs
$prof_ids = array(); 
foreach ($usernames as $prof_id) {
    $user = get_user_by(\'login\', $prof_id); 
    $prof_ids[] = $user->ID;
}

// WP_User_Query arguments
$args = array(
    \'include\' => $prof_ids,
);

1 个回复
SO网友:Michael

我想出来了。。。

$meta_value = get_user_meta( $atts[\'owner\'], $meta_key, true );

$store_numbers = array();
foreach ($meta_value as $store_number) {
    $store_numbers[] = \'shop\'.$store_number;
}

$usernames = $store_numbers;

相关推荐

Loop stopped working

我有一个巨大的问题,我打破了我的had,试图找到正确的解决方案。我有以下循环代码。此循环位于我的页面产品中。php文件:<?php $terms = get_the_terms( get_the_ID(), \'colour\' ); if ( $terms && ! is_wp_error( $terms ) ) : ?> <section class=\"colour__chart\"> <