Href="" автоматически добавляет текущий URL страницы (в PHP). Не могу понять это
Долговечный читатель stackoverflow, но первый вопрос.
Я работаю с Wordpress (в частности тезисной темой) в файле custom_functions.php и по какой-то причине автоматически добавляю текущий url страницы. Например, этот код предназначен для запроса базы данных, а затем циклического вывода каждого продукта в свой собственный div:
$result = db_connection($query);
while ($row = mysql_fetch_array($result)) { ?>
<div class="box"><a href="">
<img src="http://www.electricbikehub.co.nz<?php echo $row['product_root_directory'] . $row['mid_size_image'] ?>">
<h2><?php echo $row['name']?></h2>
<p><?php echo $row['description_brief'];?></p>
<p><span class="multiple_product_red"><span class="multiple_product_linethrough">RRP: <?php echo $row['list_price']; ?>.</span> Our discounted price: <?php echo $row['our_price']; ?>. Includes delivery and GST.</span></p>
</a>
</div>
<?php } ?>
Как вы можете видеть, 3-я строка говорит href= ", но фактическая ссылка, сгенерированная, является текущей страницей (в этом случае http://www.electricbikehub.co.nz/?page_id=1192 '). Если я добавлю что-нибудь в href, например href=" something ", он просто добавит его в конец, т.е. http://www.electricbikehub.co.nz/?page_id=1192something.
Любая помощь будет принята с благодарностью!
Ответы
Ответ 1
Вот как браузер интерпретирует и пуст href. Предполагается, что вы хотите вернуться на страницу, на которой вы находитесь. Это то же самое, что если вы не назначили действие элементу <form>
.
Если вы добавите какое-либо слово в href, оно добавит его на текущую страницу, если вы не выполните:
- Добавьте косую черту
/
, чтобы она добавила ее в ваш базовый url, например. http://www.whatever.com/something
- добавить знак
#
, в этом случае это привязка на странице
- или действительный URL
EDIT: Было предложено добавить ссылку, чтобы помочь прояснить ситуацию. Я нашел следующий сайт, который, по моему мнению, действительно хорошо объясняет атрибут href
тегов привязки и как он интерпретирует пути URL. Это не невероятно технично и очень понятно для человека. Он использует множество примеров для иллюстрации различий между типами путей: http://www.mediacollege.com/internet/html/hyperlinks.html
Ответ 2
Добавить http://перед URL
Некорректное
<a href="www.example.com">www.example.com</span></p>
Правильный
<a href="http://www.example.com">www.example.com</span></p>
Ответ 3
если вы хотите перенаправить его на какой-либо другой URL-адрес, дайте google.com, а затем сделайте так, как счастлив помочь другим, говорит rikin <a href="//google.com">happy to help other says rikin</a>
это приведет к удалению собственного URL-адреса сайта href.
Ответ 4
Вы понимаете, что это поведение по умолчанию, правильно? если вы добавите/что-то, результаты будут разными.
вы можете сделать несколько вещей, чтобы предотвратить поведение по умолчанию.
href= "#" не будет делать ничего, кроме привязки - не лучшее решение, так как оно может перейти на верх страницы.
href= "JavaScript: недействительным (0);" ничего не сделает и совершенно законно.
href= "ваш-фактический-предназначенный-ссылка", очевидно, лучший. Если вы не хотите, чтобы тег куда-то уходил, зачем вообще использовать тег?
Ответ 5
В любом случае ваш код будет генерировать недопустимую разметку: вы не должны обертывать содержимое блока в ссылку. теги не работают так. Если вам нужен этот эффект, вы должны использовать js или создать абсолютно позиционированную ссылку над содержимым (z-index). Подробнее об этом здесь: Сделайте div в ссылку.
Обязательно проверьте свой код при его рендеринге: http://validator.w3.org
Ответ 6
Используйте это:
<a href="<?php echo(($_SERVER['HTTPS'] ? 'https://' : 'http://').$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]); ?>">Whatever</a>
Он создаст HREF, используя текущий URL-адрес...