web-dev-qa-db-ja.com

カスタムフィールド/ユーザーメタデータでユーザーを取得する方法

次のコードを使用してユーザープロファイルにカスタムフィールドを追加しました。

/*** Adding extra field to get the the user who creates the another user during ADD NEW USER ***/

<?php

function custom_user_profile_fields($user){
    if(is_object($user))
        $created_by = esc_attr( get_the_author_meta( 'created_by', $user->ID ) );
    else
        $created_by = null;
    ?>
    <h3>Extra profile information</h3>
    <table class="form-table">
        <tr>
            <th><label for="created_by">Created By</label></th>
            <td>
                <input type="text" class="regular-text" name="created_by" value="<?php echo $created_by; ?>" id="created_by" /><br />
                <span class="description">The person who creates this user</span>
            </td>
        </tr>
    </table>
<?php
}
add_action( 'show_user_profile', 'custom_user_profile_fields' );
add_action( 'edit_user_profile', 'custom_user_profile_fields' );
add_action( "user_new_form", "custom_user_profile_fields" );

function save_custom_user_profile_fields($user_id){
    update_user_meta($user_id, 'created_by', $_POST['created_by']);
}
add_action('user_register', 'save_custom_user_profile_fields');
add_action('profile_update', 'save_custom_user_profile_fields');

?>

管理者パネルから新しいユーザーを作成すると、フィールドcreated byが表示されます。そして、フィールドcreated_byでユーザーを取得したいと思います。

コーデックス: https://codex.wordpress.org/Function_Reference/get_users

コーデックスに従って、それはこのような何かであるべきです:

<?php 
get_users( $args ); 
$args = array(  
        'meta_key'     => '',
        'meta_value'   => '',
    )   
$blogusers = get_users( $args );
// Array of stdClass objects.
foreach ( $blogusers as  $my_users ) {
    echo  $my_users. '<br/>';
}
?>

私はmeta_keymeta_valueのために様々なオプションを試してみました。

関数meta_keyを使って作成したフィールドのexactmeta_valuecustom_user_profile_fieldsは何ですか?

カスタムフィールドcreated_byでユーザーを取得する方法

2
Riffaz Starr

関数custom_user_profile_fieldsを使用して作成したフィールドの正確なmeta_keyとmeta_valueは何ですか?

created_byとユーザーID。たとえば、次のようになります。

$args = array(  
        'meta_key'     => 'created_by',
        'meta_value'   => 123,
)

もっと複雑な検索には meta_query を使うことができます。

$args = array( 
  'meta_query' => array(
    array(
        'key' => 'created_by',
        'compare' => 'EXISTS',
    ),
  ) 
);
var_dump(get_users($args));

しかし、本質的には、あなたがしていることは正しいです。

4
s_ha_dum