web-dev-qa-db-ja.com

サイドバーランダム作者スポットライト

私はワードプレスの作家を利用して、複数のユーザーからランダムに1人の作家を選択し、その1人のユーザーの情報だけを表示するスポットライトブロックをサイドバーに作成します。私は作者の表示名、サムネイル、彼らの略歴の抜粋、そして完全な作者ページへのリンクを含めたいと思います。これをサポートするプラグインが見つかりませんでした。私はPHP/MySQLの魔法使いではないので、関数をカスタムで書くことは私の能力の範囲外ですが、それを読んでコードに従うことはできます。私がこれまでに持っているのは、

<?php 
    global $wpdb;
    $ids = $wpdb->get_results( "SELECT {$wpdb->usermeta}.user_id from {$wpdb->usermeta} where ({$wpdb->usermeta}.meta_key='wp_capabilities') and ({$wpdb->usermeta}.meta_value >0 )" );
    $user_id = Rand(1,count($ids));
    $wpdb->show_errors(); 
?>
<h2><?php get_the_author_meta( 'display_name', $user_id ); ?></h2>
<img class="left" src="" alt="<?php print $selected_user; ?>" />
<p><?php get_the_author_meta( 'user_description', $user_id ); ?> <a href="<?php get_the_author_meta( 'user_url', $user_id ); ?>">read more</a>

これは配列を返しますが、必要な出力を取得するために何をすればよいかわかりません。前もって感謝します。

1
Keith

カスタムSQLクエリの代わりにget_users()を使用すれば、これから多くのステップを切り取ることができます。それからarray_Rand()(ネイティブPHP関数、wordpress関数ではありません)を使ってその配列からランダムなユーザーを選択することができます、そしてそれはあなたが使うべきであるキーを返します。これが例です:

$users = get_users( $your_params );
$id = array_Rand( $users, 1 );

$user = $users[$id];

これは$userであなたを残すでしょう、それはちょうどあなたがユーザーに望むことができるすべてのものを含むユーザーオブジェクトを含むでしょう…少なくともあなたが必要とするものを得る能力。 get_avatar()はサムネイルを表示します...デフォルトが欲しいと仮定します。

1
mor7ifer