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=1192что-то .

Любая помощь будет принята с благодарностью!

Вот как браузер интерпретирует и пуст href. Предполагается, что вы хотите вернуться на страницу, на которой вы находитесь. Это то же самое, что если вы не назначаете действие элементу <form> .

Если вы добавите какое-либо слово в href, оно добавит его на текущую страницу, если вы:

  • Добавьте косую черту / перед ней, чтобы она добавила ее в ваш базовый url, например http://www.whatever.com/something
  • добавьте знак # в этом случае это привязка на странице
  • или действительный URL-адрес

EDIT: Было предложено добавить ссылку, чтобы помочь прояснить ситуацию. Я нашел следующий сайт, который, по моему мнению, действительно хорошо объясняет атрибут href тегов привязки и как он интерпретирует пути URL. Это не невероятно технично и очень понятно для человека. Он использует множество примеров, чтобы проиллюстрировать различия между типами путей: http://www.mediacollege.com/internet/html/hyperlinks.html

Добавить http: // перед URL-адресом

некорректный

 <a href="www.example.com">www.example.com</span></p> 

Верный

 <a href="http://www.example.com">www.example.com</span></p> 

если вы хотите перенаправить его на какой-либо другой URL-адрес, дайте google.com, а затем сделайте так, чтобы он был рад помочь другим, говорит rikin <a href="//google.com">happy to help other says rikin</a> это удалит собственный URL-адрес сайта href.

Вы понимаете, что это поведение по умолчанию, правильно? если вы добавите / что-то, результаты будут разными.

вы можете сделать несколько вещей, чтобы предотвратить поведение по умолчанию.

href = "#" не будет делать ничего, кроме якоря – не лучшее решение, так как оно может перейти на верх страницы.

HREF = "JavaScript: недействительным (0);" ничего не сделает и совершенно законно.

href = "your-actual-purpose-link", очевидно, лучший. Если вы не хотите, чтобы тег куда-то уходил, зачем вообще использовать тег?

В любом случае ваш код будет генерировать недопустимую разметку: вы не должны обертывать содержимое блока в ссылку. теги не работают так. Если вам нужен этот эффект, вы должны использовать js или создать абсолютно позиционированную ссылку над содержимым (z-index). Подробнее об этом здесь: Сделайте div в ссылку .

Вы должны убедиться, что вы проверяете свой код при его визуализации: http://validator.w3.org

Использовать это:

 <a href="<?php echo(($_SERVER['HTTPS'] ? 'https://' : 'http://').$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]); ?>">Whatever</a> 

Он создаст HREF, используя текущий URL-адрес …