0

フロントエンドにいくつかのポッドアイテムをリストしたいと思います。これを行うために、私は通常podsショートコードを使用しています。データをフィルタリングするには、whereポッドのショートコード内の属性を使用します。例えば:

[pods name="salon" where="author.ID = '2'"]
    <li>{@name}</li>
[/pods]

ポッドアイテムをでフィルタリングしたいauthor.ID。ユーザーは、自分で作成したポッドアイテムを確認する必要があります。ワードプレスAPIで現在のユーザーにアクセスすることが可能 global $current_user;です。また、ポッドのマジックタグを使用して取得することもできます{@user.ID}

しかし、問題は、次のようなショートコード内でphpコードやマジックタグを使用できないことです。

[pods name="salon" where="author.ID = '{@user.ID}'"]

私はこの問題を克服する方法を探しています。

現在のユーザーのIDを取得して、次のようなショートコード関数を呼び出すことができる新しいショートコード関数を作成できるのではないかと思いましたpods

function pods_by_current_user($atts) {
    $current_user = wp_get_current_user();
    $user_id = $current_user->ID;
    // put it into 'where' attribute and delegate to the "pods" function

これがこの問題を解決する正しい方法だと思いますか?そして、残りを実際のショートコード関数に$user_id入れて委任する方法を知っていますか?$attspods

4

1 に答える 1

1

pods_by_current_user 関数で、次のことを試してください。

$atts[ 'where' ] = 'author.ID = ' . (int) $user_id;

次に、通常のポッド ショートコードを返します。

return pods_shortcode( $atts );

これにより、通常の [pods] ショートコード属性を通常どおり使用できますが、「where」が現在のユーザー ID に自動的に制限されるように設定されます。これをもっと複雑にすることができると確信していますが、それはあなたが求めていることをするでしょう.

于 2012-11-21T17:22:22.547 に答える