Автоматически переименовывать тему _s (пакетный поиск и замена текста) - PullRequest
1 голос
/ 06 марта 2012

Я только начал использовать тему WordPress , и в инструкции там написано

Первое, что вы хотите сделать, это скопировать каталог _s и изменить имя к чему-то еще. Как, скажем, мегатериум. Тогда вам нужно сделать три шага найти и заменить имя во всех шаблонах.

  1. Поиск _s внутри одинарных кавычек для захвата текстового домена.
  2. Поиск _s_ для захвата всех имен функций
  3. Найдите _s с пробелом перед ним, чтобы заменить все вхождения в комментариях. (Вы бы заменили это на заглавную версию название вашей темы.)

или ...

Search for:'_s'  Replace with:'megatherium'   
Search for:_s_   Replace with:megatherium_   
Search for: _s   Replace with: Megatherium  

поэтому я попробовал это:

#!/bin/sh
find /path/to/wp-content/themes/mytheme/ -type f | xargs perl -pi -e "s/'_s'/'mytheme'/g"
find /path/to/wp-content/themes/mytheme/ -type f | xargs perl -pi -e "s/_s_/mytheme_/g"
find /path/to/wp-content/themes/mytheme/ -type f | xargs perl -pi -e "s/ _s/ mytheme/g"

использование perl для выполнения встроенного поиска / замены во всех файлах, однако это приводит к ошибкам и возвращает ошибку 500, когда я пытаюсь просмотреть свой wordpress.

Есть ли лучший способ выполнить поиск и заменить текст группы файлов? тот, который не будет мешать моему php?

EDIT

Я запускаю это на OSX Lion ...

когда я использую find ./mytheme -name \*.php -type f -exec php -l '{}' \; Это показывает, что нигде нет синтаксических ошибок.

РЕДАКТИРОВАТЬ 2

Спросив это и запустив пару раз на свежих копиях, он работает. Дополнительные глаза, как моджо для исправления вещей с помощью телепатии.

1 Ответ

4 голосов
/ 06 марта 2012

Если я правильно прочитал ваш вопрос, все текстовые токены, которые вы пытаетесь заменить, являются либо:

  1. текстовый токен _s или
  2. токен, который начинается с _s_

Так что '_s' и _s_setup() следует заменить, get_s и _substr() не следует. Здесь может помочь утверждение \b, соответствующее «границе слова».

$ find /path/to/wp-content/themes/mytheme/ -type f | \
    xargs perl -pi -e "s/\\b_s\\b/mytheme/g"


$ find /path/to/wp-content/themes/mytheme/ -type f | \
    xargs perl -pi -e "s/\\b_s_/mytheme_/g"

вероятно, приблизит вас к тому месту, где вы хотите быть.

...