1

WordPress ユーザー クエリを使用して、カスタム メタ値で並べ替えられたユーザーのリストを作成しようとしています。1 から 100 までの単純な数値なので、最初に 1 を表示し、最後に 100 を表示する必要があります。

これは私の試みで、惨めに失敗しました:

<?php

    $args  = array(
        'role' => 'Author',
        'meta_key' => 'order-number',
        'orderby' => 'order-number',
        'order' => 'asc',  
    );

$wp_user_query = new WP_User_Query($args);
$authors = $wp_user_query->get_results();

if (!empty($authors))
{
    echo '<div style="float:left;">';
    foreach ($authors as $author)
    {
        $author_info = get_userdata($author->ID);
        echo '<div class="post team-member"><div class="image">';
        echo get_avatar( $author_info->ID, 91 );
        echo '</div>';
        echo '<div class="content"><div class="title"><a href="/author/' . $author_info->user_login . '">' . $author_info->user_firstname . ' ' . $author_info->user_lastname . '</a></div>';
        echo '' . substr( get_the_author_meta('user_description',$author_info->ID) , 0 , 100 ) . '...'; 
        echo '</div></div>';
    }
    echo '</div>';
} else {
    echo 'No authors found';
}

    ?>

問題は、wp_user_query が orderby のカスタム フィールドをサポートしていないことだと思います。そのため、これを回避するソリューションが必要です。

何か案は?

4

2 に答える 2

3

正しい。orderby パラメーターは、'login' (デフォルト)、'nicename'、'email'、'url'、および 'registered' の可能な値のみを受け入れることができます。

汚い修正は次のようになります。

<?php
global $wpdb; //Ignore this line if you're not within a function
$order = $wpdb->get_results("SELECT DISTINCT user_id FROM $wpdb->usermeta WHERE meta_key='order-number' ORDER BY meta_value ASC", "ARRAY_N");
$authors = array();
foreach($order as $aid)
    $authors[] = new WP_User($aid[0]);

if (!empty($authors))
{
    echo '<div style="float:left;">';
    foreach ($authors as $author)
    {
        $author_info = get_userdata($author->ID);
        echo '<div class="post team-member"><div class="image">';
        echo get_avatar( $author_info->ID, 91 );
        echo '</div>';
        echo '<div class="content"><div class="title"><a href="/author/' . $author_info->user_login . '">' . $author_info->user_firstname . ' ' . $author_info->user_lastname . '</a></div>';
        echo '' . substr( get_the_author_meta('user_description',$author_info->ID) , 0 , 100 ) . '...'; 
        echo '</div></div>';
    }
    echo '</div>';
} else {
    echo 'No authors found';
}

これはほとんどテストされていないため、すぐに動作することを保証することはできませんが、開始するには役立つはずです。

お役に立てれば!

于 2012-09-12T17:51:16.007 に答える