Я искал ответ на простой вопрос, но безрезультатно.
У меня есть вывод HTML, например:
<div id="attachment_1098" class="wp-caption alignleft" style="width: 160px">[[ a href="mydomain.com/wp-content/uploads/2010/11/photo-1.jpg" ]][[img class="size-thumbnail wp-image-1098" title="John Doe" src="mydomain.com/wp-content/uploads/2010/11/photo-1.jpg" alt="John Doe" width="150" height="200" /]][[ /a ]]<p class="wp-caption-text">John Doe</p></div>
<div id="attachment_1080" class="wp-caption alignleft" style="width: 160px">[[ a href="mydomain.com/wp-content/uploads/2010/11/photo-2.jpg" ]][[img class="size-thumbnail wp-image-1080" title="Fred Bloggs" src="mydomain.com/wp-content/uploads/2010/11/photo-1.jpg" alt="Fred Bloggs" width="150" height="200" /]][[ /a ]]<p class="wp-caption-text">Fred Bloggs</p></div>
<div id="attachment_1099" class="wp-caption alignleft" style="width: 160px">[[ a href="mydomain.com/wp-content/uploads/2010/11/photo-3.jpg" ]][[img class="size-thumbnail wp-image-1099" title="Jane Doe" src="mydomain.com/wp-content/uploads/2010/11/photo-3.jpg" alt="Jane Doe" width="150" height="200" /]][[ /a ]]<p class="wp-caption-text">Jane Doe</p></div>
<div id="attachment_1096" class="wp-caption alignleft" style="width: 160px">[[ a href="mydomain.com/wp-content/uploads/2010/11/photo-4.jpg" ]][[img class="size-thumbnail wp-image-1096" title="Joe Public" src="mydomain.com/wp-content/uploads/2010/11/photo-4.jpg" alt="Joe Public" width="150" height="200" /]][[ /a ]]<p class="wp-caption-text">Joe Public</p></div>
(Приведенный выше html на самом деле хорошо сформирован, пришлось заменить <&> в якорях и изображениях на [[и]] соответственно, так что он будет публиковаться.)
Я хотел бы обернуть ссылку вокруг текстового содержимого каждого (p) классом "wp-caption-text", URL которого должен иметь следующий формат:
'/my-page-root/'.strtolower(str_replace(' ','-',$linkText)).'';
(поэтому Джон Доу будет ссылаться на: / my-page-root / john-doe и т. Д.)
Теперь, я до сих пор с preg_replace, но я не могу понять, как создать URL ссылки из обратной ссылки. Это заставляет меня думать, что должен быть более простой способ сделать это (и, возможно, более быстрый способ?)
В любом случае, вот код, который я получил:
<?php $contentLinked = preg_replace("/(<p class=\"wp-caption-text\">.*<\/p>)/Us", "<p class=\"wp-caption-text\"><a href=\"\">$1</a></p>",$content); ?>
Это прекрасно заменяет текст пустым якорем, я застрял в том, как использовать обратную ссылку для создания URL ссылки.
Несколько заметок :
Ссылка должна заключать в себе только текст (возможно, потребуется позже обернуть только часть текста, но я перейду этот мост, когда подойду к нему)
Wordpress не разрешит это через wysiwyg без обходного пути, чтобы предотвратить разбор ссылок, однажды кто-нибудь может прийти и испортить формат (отсюда и жесткое кодирование), так что для этого нет полезных обходных путей wp. *
Ссылка на изображение должна оставаться в полноразмерном изображении (продолжается галерея jquery), поэтому перенос всего изображения и / или элемента div в ссылку не поддерживается
Приветствую за любую помощь, которую вы можете мне дать.
Andy