В наследие от старого плагина во многих постах остались шорткоды типа
[download#395#nohits]
Хочу сделать их рабочими, но без плагина.
Но дело в том что это не есть шорткоды вордпресса в классическом понимании, т.е. просто добавить в функции шорткод с таким же названием не получися. Надо как-то парсить данные шорткоды и потом уже производить с ними дейстия. Вопрос в том, как находить все, что начинается с
"[download"
и заканчивается
"]"
брать праметр между двумя # (все остальное мне не нужно)
и перезаписывать весь шорткод на нужный вывод. Думаю, я могу и сам что-нибудь сварганить но, боюсь, мое решение будет на пару страниц кода. Уверен, тут есть краткое и элегантное решение.
Денис Янчевский: там месиво кейсов, так как задумывалось что может быть много вариантов с разным количеством и порядком параметров - сложно что-то оттуда вычленить. Да и просто интересно как можно это все сделать просто. Мне надо фактически взять параметр между решетками, дальше я с этим параметром уже знаю что делать, останется перезаписать подготовленной строкой сам шорткод.
Mixa: тогда как то так: '/\[download#(\d+)/s' - эта регулярка вытаскивает только числа, которые идут после # (то есть оба варианта "[download#id#size#nohits]" и "[download#id]" сработают).
Ну а потом уже пробежаться по шорткодам, регуляркой которую я кидал первый раз.
Если речь о конкретно этом шорткоде, переопределите его в functions.php
A лишние атрибуты в таблице перепишите вот как советуют уже UPDATE wp_posts SET post_content = REPLACE(post_content, ‘[old_shortcode]’, ‘[new_shortcode]’);