#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(); по какой-то причине не хочет работать вне функции