Используйте текущий идентификатор пользователя с модулями для WordPress
Pods Framework для WordPress, специальная утилита, которая существует уже давно, предлагает множество функций, позволяющих работать с расширенными типами контента, пользовательскими настройками и так далее.
Я упоминаю об этом, потому что Pods — популярная утилита, и есть некоторые доступные функции, которые обеспечивают некоторые полезные функции.
Благодаря использованию коротких кодов можно выполнять некоторые мощные запросы к базе данных для получения информации для динамического заполнения форм.
Один из вариантов использования, который я вижу в нескольких результатах, заключается в том, как заполнить шорткод идентификатором текущего пользователя. Здесь есть сообщение на форуме об этом, а также продолжается обсуждение этого вопроса на Stack Overflow.
Но если вы ищете способ отфильтровать контент, чтобы сделать это, не перерабатывая некоторые из существующих шорткодов, есть еще один способ сделать это.
Используйте текущий идентификатор пользователя с модулями
Допустим, вы хотите заполнить форму идентификатором текущего пользователя без шорткода; вы можете сделать это с помощью токена и фильтра.
Например, предположим, что ваш шорткод выглядит примерно так :
[pods-form name="user" fields="first_name, last_name" where="current_user_id = user_id" label="Update"]
Чтобы отфильтровать это, в отличие от использования шорткода, вы можете сделать следующее :
<?php
add_filter('the_content', __NAMESPACE__. 'filter_pods_by_current_user');
/**
* Replaces the current_user_id = user_id with the current user ID in the
* incoming content (which includes the Pods shortcode).
*
* @param string $content the content of the shortcode.
* @return string the result of the parsed shortcode.
*/
function filter_pods_by_current_user($content)
{
$user = wp_get_current_user();
return str_ireplace(
'current_user_id = user_id',
"id='". $user->ID. "'",
$content
);
}
Это будет искать определенный токен в строке, заменять его, а затем возвращать его с атрибутом шорткода, удобным для Pods, до того, как шорткод будет обработан.
Затем поды будут выполнять запрос таким образом, чтобы он выглядел примерно так (при условии, что идентификатор текущего пользователя равен 100):
[pods-form name="user" fields="first_name, last_name" where="id = 100" label="Update"]
Одна вещь, которую я хочу прояснить, это то, что я не обязательно рекомендую это использовать манипуляции с коротким кодом.
Вместо этого используйте то, что лучше всего соответствует ситуации. Если это шорткоды, см. код, указанный во вступлении; в противном случае, возможно, вышеупомянутый фильтр работает нормально.
