Intereting Posts
Ошибка WordPress HTTP 500 Отображать пользовательскую галерею в каждом сообщении WordPress Неподходящее название для сообщений Добавление формата сообщения ссылки в тему и постоянную ссылку на rss-канал Переадресация проблем с помощью архивной страницы и переменных GET Довольно URL с категориями и тегами Мой поиск по умолчанию не работает Добавить элемент в пользовательское меню TinyMCE Убедитесь, что в массиве сообщений есть сообщения из определенной категории Хорошие URL-адреса RSS-ленты для каждого настраиваемого типа сообщений Автоматическое заполнение поля мета-поля из другого поля мета-поля при публикации или сохранении Выберите страницу главной страницы и страницы блога на странице настроек пользовательских тем Добавить дополнительные области виджета в тему Использовать созданную страницу в качестве страницы результатов поиска и настраиваемого шаблона Несколько конечных точек на одной странице

ACF проверяет, имеет ли переменная http, если else возвращает строку

Попытка проверить, имеет ли $link http:// перед ним или нет. Если кто-то помещает на сайт www.google.com для поля ссылки, он действует как ссылка на сайте WordPress, то есть: www.website.com/www.google.com .

 $link = get_field('advertisement_link'); $ad_code = '<a href="'.$link.'" target="_blank">Test</a>'; 

Пример кода выше, с которым я работаю. Это также общий вопрос PHP. Как мне это сделать правильно? Пробовал ниже, заменяет the_content() $link .

 $link = get_field('advertisement_link'); if(strpos($link, 'http://') !== 0) { return 'http://' . $link; } else { return $link; } $ad_code = '<a href="'.$link.'" target="_blank">Test</a>'; 

Изменить: мне нужно сохранить $ad_code потому что я использую его внутри return prefix_insert_after_paragraph( $ad_code, 3, $content ); чтобы вставить это объявление в сообщение каждые 3 абзаца.

Вы не должны return значение, но изменяете $link varialbe $link

 if(strpos($link, 'http://') !== 0) { $link = 'http://' . $link; } //no else needed 

Имейте в виду, что если ваша ссылка начинается с https:// она также добавит http:// и приведет к http://https://example.com .

Лучший способ сделать это будет отсюда , с учетом ваших потребностей:

В functions.php :

 function addhttp($url) { if (!preg_match("~^(?:f|ht)tps?://~i", $url)) { $url = "http://" . $url; } return $url; } 

Код для вас:

 $link = addhttp( get_field('advertisement_link') ); $ad_code = '<a href="'.$link.'" target="_blank">Test</a>'; 

Я предполагаю, что это возможный дубликат – или, по крайней мере, похожий на « Проверка, содержит ли строка HTTP: // » в stackoverflow, но все же: сначала вместо проверки на «0» вы должны проверить «false». И тогда вы также должны проверить «https: //». Я бы, наверное, сделал что-то вроде этого:

 if (substr($link, 0, 7) == 'http://') { // do nothing } elseif (substr($link, 0, 8) == 'https://') { // do nothing } else { $link = 'http://'.$link; } 

(Я знаю, что есть более элегантные способы написать это)