@HAbRAhabp

Почему не работает конструкция с кастомным полем в профиле?

Помогите пожалуйста. Что тут не так?
function my_user_contactmethods($user_contactmethods){
 
  $user_contactmethods['wmr'] = '<a name="wmr"></a> WMR кошелек';
 
  return $user_contactmethods;
}
$user_idd = get_current_user_id();
$key1 = 'wmr';
$usermeta = get_user_meta($user_idd, $key1);

function notice_wmr() {
	$class = 'updated';
	$message = 'Ваш WMR кошелек не задан! Задайте его <a href="http://root1.ru/wp-admin/profile.php#wmr">здесь</a>';
  echo "<div style=\"position: relative;\" class=\"$class\"> <p>$message</p> <button type=\"button\" class=\"notice-dismiss wmr\"><span class=\"screen-reader-text\">Скрыть это уведомление.</span></button></div>"; 
}
if ($usermeta == null)
add_action( 'admin_notices', 'notice_wmr' );

Объявление в итоге не отображается.
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
1. Не надо экранировать двойные кавычки бекслешем внутри двойных кавычек. Используйте одинарные кавычки (а внутри - уже двойные).
2. get_user_meta(), если не найдет ключ в БД, возвращает пустую строку (если указан третий аргумент true), или пустой массив. Никак не Null. Тем более, если делать сравнение на Null, то нужно делать $var === NULL.
3. Получение $usermeta и проверку этого ключа надо запихнуть в notice_wmr().

Не тестировал, но что-то вроде этого:

add_action( 'admin_notices', 'notice_wmr' );

function notice_wmr() {

    $user_idd = get_current_user_id();
    $key1 = 'wmr';
    $usermeta = get_user_meta( $user_idd, $key1, true );

    if( empty( $usermeta ) ) {

        $class = 'updated';
        $message = 'Ваш WMR кошелек не задан! Задайте его <a href="http://root1.ru/wp-admin/profile.php#wmr">здесь</a>';
        echo '<div style="position: relative;" class="' . $class . '">
            <p>' . $message . '</p>
            <button type="button" class="notice-dismiss wmr">
                <span class="screen-reader-text">Скрыть это уведомление.</span>
            </button>
        </div>'; 

    }

}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы