Элементарная замена кода в записи на WordPress
У меня на блоге есть слайдер изображений. Допустим, как вот тут. Что бы его поставить, мне нужно каждый раз писать код:
1 2 3 4 | <ul class="slide"> <li><img src="..."/></li> ... </ul> |
Лично мне не особо лениво вписывать этот код каждый раз, да и он не настолько большой, чтобы прятать его в более маленький, но вот недавно мне заказали сделать такой же слайдер, и со знанием html-кода у заказчиков довольно туго. Я решил заменить html-код на bb-код.
Конечно, крутой программист может и сам за пару секунд соорудить несложный код для сего дела, либо воспользоваться уже готовыми плагинами. Я не стал использовать плагины, потому что во-первых, я не знаю как они работают, придется прочесывать его код, а я не хочу тратить на это время. Так что я решил воспользоваться первым.
Можно, конечно, все время добавлять кое-какой код в файлы темы, но это совсем не удобно.
Начинаем
1. Создаем в папке с темой файл replace.php. Добавляем в него следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?php // Помещаем весь контент в переменную (как строку, разумеется). // Тут важно заметить, что используем функцию get_the_content(), а не просто the_content(). В случае со второй // у нас ничего не получится, текст будет выводится независимо от наших манипуляций, а нам этого не надо. $content = get_the_content('Читать далее'); // То, на что заменяем, помещаем в массив. Можете сделать это и через $search = array(...), // но лично мне приятней именно так, как ниже. $search[0] = "/\[photo\]/i"; $search[1] = "/\[li\]/i"; $search[2] = "/\[\/li\]/i"; $search[3] = "/\[\/photo\]/i"; // То, что заменяем на $search[]. Обратите внимания на индексы, на самом деле в данном случае нет разницы, // соответствуют ли индексы из $search индексам из $replace. Обработка идет в порядке написания. // Т.е. $search[0] сопоставляется $replace[3]. Если задать сортировку, то $search[0] будет сопоставляться $replace[0] $replace[3] = "<ul class=\"slide\">"; $replace[2] = "<li>"; $replace[1] = "</li>"; $replace[0] = "</ul>"; echo preg_replace($search, $replace, $content); ?> |
Редактируем файлы темы
Редактируем все файлы, содержащие the_content(), такие как index.php, single.php и т.д. Код ниже:
1 | <?php the_content(); ?> |
заменяем на:
1 | <?php include(TEMPLATEPATH . '/replace.php'); ?> |
Теперь у нас в каждый файл, в который мы вставили include, будет транслироваться файл replace.php
Конец
Всё. Можно писать записи типа:
1 2 3 4 | [photo] [li]<img src="..." />[/li] ... [/photo] |
Советую
Обязательно прочитайте про функцию preg_replace и вообще про работу со строками. Хотя, сайт про строки мне абсолютно ничем не помог.



Старый формат комментариев
Комментариев нет. (К.О.)