Чего мне не хватает, чтобы заставить глобальную переменную работать в функции?

#php #global

#php #глобальный

Вопрос:

Я новичок в php и не уверен, почему этот глобальный вызов не работает. Я пытаюсь получить URL (сайт WordPress) и экспортировать URL Facebook sharing в короткий код. Мой текущий результат — это просто «https://www.facebook.com/sharer/sharer.php?u =»

 $dhURL = urlencode(get_the_permalink());

function facebookshare_function() {
    global $dhURL;
    $FBURL = 'https://www.facebook.com/sharer/sharer.php?u='.$dhURL;
    return $FBURL;
}
add_shortcode('facebookshare', 'facebookshare_function');
  

Ответ №1:

Ваш глобальный вызов правильный. Почему вы используете urlencode() в get_the_permalink()?

Просто используйте get_the_permalink() или esc_url(get_permalink())

Второй не будет кодироваться /

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

1. urlencode был рекомендован для совместимости. Выглядит намного лучше без! Итак, если я правильно написал глобальный вызов, есть идеи, почему он не работает?

2. Если вы проверяете случайную строку как $ dhURL , она работает нормально. Таким образом, get_the_permalink() приводит к нулю

3. Если я использую get_the_permalink() внутри функции, она работает правильно и возвращает, как задумано. Я хочу, чтобы она была вне функции (и, следовательно, глобальной), хотя она будет использоваться в других функциях

4. Попробуйте добавить глобальный $ dhURL; также перед тем, как вы его объявите. Итак, перед get_the_permalink. Переменные дочерних функций странные. Проверьте комментарии на странице «Область видимости переменной» руководства

5. Вы имеете в виду добавить глобальный $ dhURL; перед объявлением вне функции? Я пробовал это, но безуспешно. Похоже, что $dhURL = get_permalink(); по какой-то причине не хочет работать вне функции