Как делегировать функцию шорткода для фильтрации элементов модуля, созданных текущим пользователем, с помощью Pods Framework в Wordpress

Я хочу перечислить некоторые элементы стручка на переднем конце. Для этого я обычно использую pods короткий номер. Для фильтрации данных я использую where атрибут внутри стручков. Например:

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

Я хочу отфильтровать элементы под author.ID, Пользователь должен увидеть элементы стручка, которые он создал сам. Доступ к текущему пользователю возможен через API WordPress. global $current_user;, Также возможно получить это, используя волшебные признаки Стручков {@user.ID},

Но проблема в том, что я не могу использовать код php или магические теги внутри шорткода, например:

[pods name="salon" where="author.ID = '{@user.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 в $atts и делегировать остальное фактическому pods функция шорткода?

1 ответ

Решение

В вашей функции pods_by_current_user попробуйте выполнить:

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

и затем верните нормальный шорткод Pod:

return pods_shortcode( $atts );

Это позволит вам использовать любые обычные атрибуты шорткода [pods], как обычно, но установит "где" для автоматического ограничения текущего идентификатора пользователя. Я уверен, что вы можете сделать это более сложным, но это будет делать то, что вы после.

Другие вопросы по тегам