Intereting Posts
База данных WP генерирует контент для столбца post_name Почему первая страница одной категории перенаправляется на пустую страницу 4? Как установить параметр для всех сайтов в моей сети? WordPress: Можно ли добавлять категории / теги ко всем сайтам в моей сети сразу? Виджеты не отображаются с 4.3 esc_html__ security: что в этом примере? Пользовательская постоянная ссылка, зависящая от категории WordPress вставить запрос, но запрос обновления не запускается Проблемы с установкой WordPress Получить PHP Не работает Ответ Запрос по дате из пользовательского поля Показать окно с информацией о конкретной категории Запустить несколько инсталляций, используя те же wp-admin & wp-includes? Как сохранить пользовательскую мета на пользовательской странице администратора Хорошо ли переименовать папку тем, загруженную с WordPress.org? Остановить wordpress автоматически сбрасывая данные $ _POST

Изменение и отображение 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 (я сам рубин), поэтому я думаю, что есть простая проблема, которую я не вижу. Обратите внимание, что это временный взлом. Я планирую превратить его в плагин, но для этого потребуется больше времени и обучения, и я хотел бы продолжить работу и теперь работать.

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

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

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