Шорткод URL WordPress

#php #wordpress

Вопрос:

Я никогда не писал никакого кода на php, но я создаю панель управления wordpress, для которой требуется перенаправление на страницу на основе имени пользователя. Мне нужна кнопка на главной странице, которая приведет зарегистрированного пользователя на нужную страницу, поэтому я создаю короткий код(не знаю, является ли это лучшим решением).

До сих пор, после поиска в Интернете, у меня есть этот код:

 function url_sc() {
    $current_user = wp_get_current_user() {
        $username = $current_user->login_user {
            $username_link = "https://testwebpage.no/?username=<?php echo $username; ?>"
        }
    }
    return $username_link;
}

add_shortcode( 'username-url', 'url_sc' );
 

Я не знаю, сработает ли это еще, потому что я получаю эту синтаксическую ошибку:

синтаксическая ошибка, неожиданное «возвращение» (T_RETURN)

Может ли кто-нибудь объяснить мне, почему я получаю ошибку и, возможно, как ее исправить?

Комментарии:

1. Пожалуйста, добавьте точку с запятой после $username_link = » <a rel=»noreferrer noopener nofollow» href=»https://testwebpage.no/?username= testwebpage.no/?username=<?php echo $имя пользователя; ?>»;

2. Вы, кажется, используете { там, где вы должны использовать ; . Кроме того, вы не можете использовать <?= ?> внутри инструкции PHP, да это и не нужно.

3. Пожалуйста, не обновляйте свой вопрос исправленным кодом — вопросы должны оставаться такими, какими они были для других пользователей, у которых также есть аналогичные проблемы, и правильный ответ уже принят в разделе «Ответы».

4. @FluffyKitten удалил его

Ответ №1:

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

 function url_sc() {       
    $current_user  = wp_get_current_user();
    $username      = $current_user->user_login;
    $username_link = "https://testwebpage.no/?username=".$username;       
    return $username_link;
}
add_shortcode( 'username-url', 'url_sc' );
 

Комментарии:

1. Это возвращает «синтаксическую ошибку, неожиданную»; «» в строке «$username_link».

2. Этот ответ сбивает с толку. Почему существует 2 блока кода, в одном из которых много ошибок? А другой добавил функциональность, которой нет в вопросе, — проверку на наличие определенного имени пользователя.

Ответ №2:

Я не эксперт по PHP, но я балуюсь. Весь этот функциональный блок выложен неправильно, попробуйте;

 function url_sc() {
    $current_user = wp_get_current_user();
    $username = $current_user->user_login;
    $username_link = "https://testwebpage.no/?username=" . $username;
    return $username_link;
}
add_shortcode( 'username-url', 'url_sc' );
 

Вы можете сделать этот шаг дальше здесь и создать html-код кнопки в этом блоке кода, затем он будет выведен в виде полной связанной кнопки с коротким кодом.

 function url_sc() {
   $current_user = wp_get_current_user();
   $username = $current_user->user_login;
   $username_link = "https://testwebpage.no/?username=" . $username;
   $button = '<a href="' . $username_link . '" class="button" target="_blank">Go To My Profile Page</a>';
   return $button;
}
add_shortcode( 'username-url', 'url_sc' );
 

Комментарии:

1. Это проявляется как » testwebpage.no/?username= » на веб-сайте

2. @KasperAamodt Вы уверены, что сейчас вошли в систему?

3. @Bhautik да, я уверен

4. если вы сомневаетесь, найдите функции wordpress developer.wordpress.org/reference/functions/wp_get_current_user

5. я думаю, что это должно быть user_login

Ответ №3:

Это потому, что вы забыли точку с запятой после:
$username_link = "https://testwebpage.no/?username=<?php echo $username; ?>" и забыл избежать php-кода
, это должно быть:
$username_link = "https://testwebpage.no/?username=". echo $username; .""; Таким образом, полный код выглядит следующим образом:

 function url_sc() {
    $current_user = wp_get_current_user() {
        $username = $current_user->login_user {
            $username_link = "https://testwebpage.no/?username=". echo $username; ."";
        }
    }
    return $username_link;
}

add_shortcode( 'username-url', 'url_sc' );
 

Комментарии:

1. Это возвращает «синтаксическую ошибку, неожиданную»; «» в строке «$username_link».

2. В этом есть множество ошибок — как и в исходном вопросе, вы добавили еще одну, повторив имя пользователя в середине функции, которая будет выполняться при загрузке WP.