Как сгенерировать аудио шорткод, если в Wordpress есть mp3 в теге ссылки - PullRequest
1 голос
/ 23 апреля 2019

Я пытаюсь написать функцию, которая перезапишет любой тег <a> с URL-адресом .mp3 с помощью шорткода Wordpress audio.

Я загружаю сообщения в Wordpress из API - поэтому я не могу вручную добавить аудио шорткод к ссылкам mp3 в каждом сообщении - или даже иметь URL-адрес mp3 в отдельной строке, что автоматически генерируеткороткий номер.Посты - это радио-истории.Каждый начинается с тега <a>, структурированного в точности так:

<a href="https:storyurl.mp3" class="asset-audio">Hear the radio version of this story.</a>

И я считаю, что это то, что мне нужно для преобразования этого тега в:

[audio mp3="https:storyurl.mp3" class="asset-audio" title="Hear the radio version of this story."]

Существуют плагины аудиоплеераон распознает любой mp3 и оборачивает его в свой собственный шорткод, но Wordpress не делает этого по умолчанию с его основным mediaelement.js.Я надеюсь достичь этого в functions.php моей дочерней темы.

Ответы [ 2 ]

1 голос
/ 24 апреля 2019

Да, регулярные выражения довольно мощные.Вот как я могу сделать замену:

$reg = "#<a [^>]*href=['\"]([^\"']+\.mp3)['\"][^>]*>(.*?)</a>#";
$content = preg_replace($reg, "[audio mp3='$1' class='asset-audio' title='$2']", $content);

Где $content - это любая переменная, которая содержит содержимое сообщения.Я объясню, что делает регулярное выражение:

"#" - первый и последний символы являются разделителями.На самом деле они не являются частью матча

" ] " - [] означает, что он ищет какую-либо группу символов.^ Является отрицателем, что означает «НЕ».«» означает 0 или более из этих символов.В целом это означает, что «ищите 0 или более символов из любого символа accept»>, что удерживает нас внутри тега «a».

«href =» - просто чтобы найти этот текст

"['\ "]" - Открывающая кавычка

"([^ \"'] +. Mp3) "- Скобка позволяет нам получить доступ к этой строке позже (в части замены). Часть в скобках означаетмы ожидаем, что любой символ примет закрывающую кавычку (поскольку ни одна из кавычек обычно не отображается в ссылке, мы в большинстве случаев делаем это безопасно). «+» означает, что он ищет 1 или более из этих символов.символ буквального периода и mp3 (поэтому мы сопоставляем только mp3 ссылки!)

"['\"] "- заключительная кавычка

" [^>] *> "- любое числоиз не ->> символов, за которыми следует>

"(. *?)" - снова скобки для захвата этой строки."."означает любой символ, * означает 0 или более, а "?"означает не быть агрессивным ... чтобы соответствовать как можно меньшему количеству символов (иначе это будет продолжаться до закрывающего тега последней ссылки в сообщении

"

0 голосов
/ 24 апреля 2019

Вставьте код в свой файл JavaScript, и он решит вашу проблему.Я надеюсь, что это так.

$('.asset-audio').each(function(){
   var newtag = "[audio mp3="+ $(this).attr('href') +" class="+ 
   $(this).attr('class') +" title="+ $(this).html() +"]";
   $(this).after(newtag);
   $(this).remove();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...