Как делегировать функцию шорткода для фильтрации элементов модуля, созданных текущим пользователем, с помощью 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], как обычно, но установит "где" для автоматического ограничения текущего идентификатора пользователя. Я уверен, что вы можете сделать это более сложным, но это будет делать то, что вы после.