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-адрес...