Поиск и замена кода, отдаваемого в браузер
-
Каждый раз, когда Я устанавливаю новую тему, Я удаляю из ней некоторые элементы, в которых не вижу смысла, руководствуясь принципом Бритвы Оккама. Ну, и иногда переставляю местами некоторые элементы, в общем — однозначно переход на другую тему сопровождается её модифицированием.
Но когда-нибудь тема обновляется, из неё исчезают ошибки и добавляется функционал (добавляя новые 😀 ). И перед обновлением приходится переносить все внесенные изменения, вспоминая, что где поменял (ведь записывать всё это зачастую просто нереально).
И вот, после нескольких событий и мыслей, Мне в голову пришла замечательная мысль. «А если есть плагин, который может искать и заменять куски кода? Ведь в таком случае при обновлении темы ничего переносить не придётся!» — подумал Я.
И вот, поискав немного, нахожу плагин “Real-Time Find and Replace”. В его настройках всё просто: в поле слева вставляешь код, который нужно найти, а в поле справа вставляешь код, на который нужно заменить. Но в его описании написано следующее: «Set up find and replace rules that are executed AFTER a page is generated by WordPress, but BEFORE it is sent to a user’s browser.» Он вносит изменения в код ПОСЛЕ того, как WordPress генерирует страницу (т.е. исполняется PHP-код, который часто и хочется заменить), и ДО того, как страница отправляется в браузер. Получается, что заменить можно только сгенерированный HTML-код, который можно найти в исходном коде, отображаемом браузером.
Вообще — прекрасный плагин, Я смог убрать некоторые ненужные мне элементы дизайна — например, список тэгов, которых можно использовать при оформлении комментария. Ведь у меня на сайте стоит плагин NicEdit (это WYSIWYG для комментов).
Но вот что странно: одно правило по поиску и замене PHP-кода работает, иное — нет.
Вот то, что работает:
ищем<?php // Check if this is a post or page, if it has a thumbnail, and if it's a big one if ( is_singular() && has_post_thumbnail( $post->ID ) && ( /* $src, $width, $height */ $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'post-thumbnail' ) ) && $image[1] >= HEADER_IMAGE_WIDTH ) : // Houston, we have a new header image! echo get_the_post_thumbnail( $post->ID, 'post-thumbnail' ); else : ?> <img src="<?php header_image(); ?>" width="<?php echo HEADER_IMAGE_WIDTH; ?>" height="<?php echo HEADER_IMAGE_HEIGHT; ?>" alt="" /> <?php endif; ?>
и заменяем на
<img src="http://grawl.ru/other/randomheader/<?php echo(rand(1,24)); ?>.png" width="image_width" height="image_height" alt="image_alt_text" />
Тем самым Я реализовал у себя на сайте динамическое изменение изображения в шапке сайта на одно из 24-х из коллекции, не меняя при этом код темы.
А вот то, что не работает:
ищем<?php twentyten_posted_in(); ?> <?php edit_post_link( __( 'Edit', 'twentyten' ), '<span class="edit-link">', '</span>' ); ?>
и заменяем на
<?php twentyten_posted_on(); ?> <?php edit_post_link( __( 'Edit', 'twentyten' ), '<span class="edit-link">', '</span>' ); ?>
Это Я хотел заменить надпись «Запись опубликована в рубрике Без рубрики. Добавьте в закладки постоянную ссылку.» на дату публикации.
Хотелось бы понять, почему так, ну или найти плагин, который смог бы вносить правки в код, который WordPress ещё не скомпилировал в чистый HTML.Надеюсь, достаточно точно дал название темы.
- Тема «Поиск и замена кода, отдаваемого в браузер» закрыта для новых ответов.