1

標準データベースに「会社」というカスタム ユーザー フィールドがあります。「会社」が「Widgets Inc」と一致するユーザーのユーザーメタ情報のみをページに出力したい...

それ、どうやったら出来るの?

私ができるようにしたいと思うのは、これをページテンプレートに入れるのを避け、代わりにフィールド属性によって制限する機能を備えたユーザー情報をリストするショートコードを作成することです. {listusers company="Widgets Inc"}

しかし、私はそれを行う方法がわかりません。

ありがとう

4

1 に答える 1

1

これを試してみてください

add_shortcode( 'list-company-users', 'company_users_shortcode' );
function company_users_shortcode($atts)
{
    ob_start();
    $query = array('meta_key' => 'company', 'meta_value' => 'Widgets Inc');

    $user_query = new WP_User_Query($query);

// User Loop
    if (!empty($user_query->results)) {
        foreach ($user_query->results as $user) {
            echo '<p>' . $user->display_name . '</p>';
        }
    } else {
        echo 'No users found.';
    }
    $myvariable = ob_get_clean();
    return $myvariable;
}

そして、ここにあなたのショートコードがあります[list-company-users]

短いコードでパラメーターを使用するように定義するには、次のようにすることができます

[list-company-users company="Widgets Inc"]

次に、ショートコードで渡された値を抽出する必要がありますshortcode_atts()

 extract(shortcode_atts(array("company" => 0), $atts));


function company_users_shortcode($atts)
{
    ob_start();
    extract(shortcode_atts(array("company" => 0), $atts));
    $query = array('meta_key' => 'company', 'meta_value' => $atts[company]);

    $user_query = new WP_User_Query($query);

// User Loop
    if (!empty($user_query->results)) {
        foreach ($user_query->results as $user) {
            echo '<p>' . $user->display_name . '</p>';
        }
    } else {
        echo 'No users found.';
    }
    $myvariable = ob_get_clean();
    return $myvariable;
}

参考文献

ショートコードを作成する

WP_User_Query

于 2013-10-11T10:28:53.177 に答える