Intereting Posts
Риск внедрения sql для пользовательской формы поиска Возможность создания CSS-сайта на нескольких сайтах Клиент не может видеть обновленный динамический контент 's' в расширенном классе WP_Query вызывает огромную утечку памяти (268 МБ) Как я могу изящно избежать ошибки? Получить категорию и выдержку из wp_get_recent_posts Отправить дополнительный параметр с помощью xml-rpc login? Как изменить счетчик комментариев в списке задних контуров, чтобы отражать несанкционированные комментарии, а не все комментарии? Выражения и str_replace Отображение значений из связанного поля – если пустым отображается ссылка и заголовок текущего типа сообщения Отображение разных изображений в зависимости от роли пользователя Как уменьшить исходное качество изображения при загрузке? Пользовательская таксономия переписывает запрос var возвращает% 2F в URL Запрос почты из многоузловой сети Плагин галереи jQuery для взаимодействия с Picasa

Функция для извлечения данных от пользователя не работает

Поэтому я пытаюсь создать ряд функций, которые вычисляют цену, основанную на уровне клиента, который я установил для каждого клиента. У некоторых клиентов может быть специальная сделка.

Для этого я создал настраиваемое мета-поле в метателе пользователя, которое позволяет мне назначать для этого клиента высокий, средний или низкий.

Затем я создал функцию, предназначенную для определения уровня клиента и использования его для расчета цены.

Если клиент не зарегистрирован или поле пуст, по умолчанию установлено значение Высокий

Я попробовал две версии этой функции и поместил ее в плагин для тестирования с помощью простого выражения echo, но ни один из них не меняет результат ни на что, кроме высокого, несмотря на то, что мета-поле установлено на низкое.

если вы можете помочь мне понять, что мне не хватает, это было бы здорово. Первая попытка:

function get_client_lvl () { $user_id = get_current_user_id(); If ($user_id == 0) { return 'high'; } Else { $client_lvl= get_user_meta($user_id, wpcf-client-lvl, true); if (empty($client_lvl)) { return 'high'; } Else { return $client_lvl; } } } $client_lvl=get_client_lvl(); echo $client_lvl; 

Вторая попытка

 function get_client_lvl () { $user_id = get_current_user_id(); $client_lvl= get_user_meta($user_id, wpcf-client-lvl, true); If ($user_id == 0 || empty($client_lvl)) { return 'high'; } Else { return $client_lvl; } } $client_lvl=get_client_lvl(); echo $client_lvl; 

Проблема в том, что когда вы передаете аргумент $key в функции get_user_meta() , вы не передаете действительный аргумент. $key должен быть строкой в ​​соответствии со страницей документации . Он представляет значение meta_key в таблице wp_usermeta .

Если с wpcf-client-lvl на самом деле является переменной, которая содержит имя поля (скажем, $wpcf-client-lvl = 'client_level' ), замените 'wpcf-client-lvl' на $wpcf-client-lvl . Я предполагал, что это было фактическое имя meta_key .

Я также изменяю некоторый синтаксический код, если вы не возражаете 🙂

Поэтому я считаю, что вы скопируете / вставьте следующий код, который он будет работать:

 function get_client_lvl(){ $global $current_user; get_currentuserinfo(); $user_id = $current_user->ID; if ($user_id == 0) return 'high'; else { $client_lvl= get_user_meta($user_id, 'wpcf-client-lvl', true); if (empty($client_lvl)) return 'high'; else return $client_lvl; } } $client_lvl = get_client_lvl(); echo $client_lvl; 

ОБНОВИТЬ

Чтобы get_current_user_id() вернул идентификатор, вы должны либо включить pluggable.php (который, как я считаю, не является хорошим подходом), либо использовать глобальные переменные для получения идентификатора. Я изменил код, используя global $current_user .

Вы можете прочитать это: get_userdata и раздел о возможностях.

Вы должны использовать пользователя global. Ваша функция не знает идентификатор пользователя. Вы можете объявить аргумент ( $user_id ) или использовать global $wp_user .

Надеюсь, это поможет вам.