Intereting Posts
Редактируйте ошибки при входе в систему и в окне потерянного пароля в wordpress Внедрение крючков с использованием массива Почему у меня эта ошибка, когда я пытаюсь установить этот старый блог на моем локальном веб-сервере? Два точных шаблона, боковая панель отображается в одном, но не в другом Как удалить / год / месяц из загруженных медиа? Сделать пользовательское поле в ссылку на лицевой стороне? База данных WordPress резко возрастает, несмотря на отсутствие нового контента Производительность при получении метаданных для почты, полученной с помощью метазначения Как перенести мою статистику на собственный сайт? Проблема с кодировкой load-scripts.php WordPress Как добавить сообщения без категории в категорию Использование wp_tag_cloud только с текущим тегом post со специальным классом Переменная, если столбец липкий в functions.php Каков правильный / безопасный способ удаления всех комментариев? Можно ли создавать конкретные должности, редактируемые всеми авторами?

Изменение и отображение URL-адреса в шаблоне сообщений с использованием parse_url

У меня есть настраиваемый тип публикации с шаблоном с именем single-posttype.php . Я использую плагин Advanced Custom Fields для отображения определенной информации (цена и ссылки на фактический продукт).

Все работает хорошо. Тем не менее, я хочу взять ссылки, которые я ввел в пользовательские поля, и изменить их, чтобы удалить строки запросов и добавить мой партнерский код. У меня есть функция, которая использует parse_url() и отлично работает для моих целей. Проблема в том, что она не показывает строку, когда я пытаюсь отобразить ее в других частях страницы.

Вот полный код моего шаблона: http://pastebin.com/SrWrQ15L

Вот функция, о которой идет речь, и как я ее называю:

  $theme_link_raw = get_field('theme_link'); $preview_link_raw = get_field('theme_preview_link'); $author_link_raw = get_field('author_link'); $theme_parts = parse_url("$theme_link_raw"); $preview_parts = parse_url("$preview_link_raw"); $author_parts = parse_url("$author_link_raw"); $theme_link = $theme_parts['scheme'] . "://" . $theme_parts['host'] . $theme_parts['path']; $preview_link = $preview_parts['scheme'] . "://" . $preview_parts['host'] . $preview_parts['path']; $author_link = $author_parts['scheme'] . "://" . $author_parts['host'] . $author_parts['path']; function affiliatize($link, $parts) { switch ($parts['host']) { case "themeforest.net": echo $link . "?ref=gorrillamcd"; break; case "www.elegantthemes.com": echo "http://www.elegantthemes.com/affiliates/idevaffiliate.php?id=22953" . "&" . $link; break; case "themefuse.com": echo $link . "?r=42892"; break; default: echo $link; break; } } $theme_affiliate = affiliatize($theme_link_raw, $theme_parts); $theme_affiliate_preview = affiliatize($preview_link_raw, $preview_parts); $theme_author = affiliatize($author_link_raw, $author_parts); 

Я знаю, что это, наверное, не идеально, но я не очень хорошо знаком с PHP (я сам рубин), поэтому я думаю, что есть простая проблема, которую я не вижу. Обратите внимание, что это временный взлом. Я планирую превратить его в плагин, но для этого потребуется больше времени и обучения, и я хотел бы продолжить работу и теперь работать.

Хорошо, я глуп. Я подумал, что это что-то простое.

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