Gdy domyślne zachowanie WP Staging nie pasuje do twojej witryny — wyklucz określone tabele, dezaktywuj pluginy na staging, obsłuż wartości bazy zakodowane w base64 — filtry i akcje PHP pozwalają dostosować każdy krok z poziomu mu-plugin bez modyfikowania samego pluginu. Ta strona to kompletny przewodnik po hookach WP Staging, z przykładem do skopiowania dla każdego dostępnego filtra.
Szybki przegląd: 6 najczęściej używanych filtrów
| Filter / Action | Co robi | Przejdź do |
|---|---|---|
wpstg.resources.ignoreMemoryLimit |
Wyłącza limit pamięci 256 MB | Pozwól na nieograniczone użycie pamięci |
wpstg.cloning.update_active_plugins |
Aktywuje lub dezaktywuje pluginy na staging po klonowaniu | Aktywuj lub dezaktywuj pluginy po klonowaniu |
wpstg_clone_excl_folders |
Wyklucza katalogi z procesu klonowania | Wyklucz foldery |
wpstg.database.searchreplace.replace_extended_data |
Obsługuje wartości bazy zakodowane w base64 lub niestandardowo | Niestandardowe Search & Replace dla zakodowanych wartości |
wpstg.pushing.update_active_plugins |
Aktywuje lub dezaktywuje pluginy na produkcji po push | Aktywuj lub dezaktywuj pluginy po push |
wpstg_preserved_options |
Zapobiega nadpisywaniu określonych wierszy wp_options podczas push |
Zachowaj dane w wp_options |
mu-plugin.Otherwise, not all actions might work as expected.
The majority of the filters on this page requires one of the WP Staging Pro plans.
Plugin WP Staging Hooks
Możesz pobrać plugin WP STAGING hooks, który zawiera wiele z filtrów wymienionych w tym artykule, dla łatwego użycia na twojej witrynie.
Uwaga: Nie wszystkie filtry wymienione w tym artykule są zawarte w repozytorium github.
Jeśli na tej stronie wspomniany jest filtr niedostępny w pluginu WP STAGING hooks, możesz skopiować konkretny kod z tej strony do nowego mu-plugin lub istniejącego, np. mu-plugin WP STAGING, który znajdziesz w wp-content/plugins/wp-staging-optimizer.php
Sprawdź ten artykuł „Naucz się tworzyć mu-plugin” na swojej witrynie.
Skopiuj cały kod na początek mu-plugin i dostosuj go do swoich potrzeb. Jeśli potrzebujesz pomocy, daj nam znać.
Contents
- Quick-start: najczęściej używane filtry
- Pozwól na nieograniczone użycie pamięci
- Zmień logo WP Staging na formularzu logowania (wersja Pro)
- Zmień tytuł witryny staging
- Zmień ścieżkę do folderu cache
- Wyklucz tabele z operacji Search & Replace
- Niestandardowe Search & Replace dla zakodowanych wartości bazy
- Filtry klonowania i staging
- Uruchom akcję na witrynie staging po klonowaniu
- Aktywuj lub dezaktywuj określone pluginy na witrynie staging po klonowaniu
- Wyklucz wiersze z Search & Replace w wp_options
- Wyklucz wiersze z klonowania
- Wyklucz niestandardowy typ wpisu z klonowania
- Wyklucz ciągi z Search & Replace
- Zmień parametry Search & Replace
- Wyklucz pliki
- Wyklucz pliki z klonowania przy użyciu pełnej ścieżki
- Wyklucz foldery
- Multisite: wyklucz foldery (pluginy) z klonowania w multisite
- Zapobiegnij search & replace prefiksu tabel w opcji tabeli wp_options
- Klonuj sieci multisite i zmień nazwę hosta docelowego
- Zachowaj wartość „upload_path” w bazie danych
- Filtry push
- Aktywuj lub dezaktywuj określone pluginy na witrynie produkcyjnej po push witryny staging
- Zmień parametry Search & Replace
- Wyklucz tabele z push
- Wyklucz wiersze z push. Kopiuj tylko określone wiersze
- Wyklucz określone typy wpisów z push
- Wyklucz foldery z push
- Wyklucz pliki z push
- Zachowaj dane w wp_options i wyklucz je z push
- Uruchom akcję po push witryny produkcyjnej.
- Filtry Backupu
- Przywróć pełny multisite na inny multisite (migracja)
- Przywróć witrynę sieciową multisite na inną sieć multisite (migracja)
- Rozszerz search and replace, aby zmienić URL wszystkich podwitryn w bazie
- Wyklucz rozszerzenie pliku z Backupu
- Wyklucz pliki większe niż określony rozmiar z Backupu
- Wyklucz pliki z określonymi rozszerzeniami większe niż określony rozmiar z Backupu
- Wyklucz katalogi z dołączenia do Backupu
- Wyklucz pliki z przywracania
- Przywróć Backup i zachowaj istniejące pliki mediów, pluginy lub motywy
- Zmień tymczasowy prefiks tabel bazy przywracania Backupu
- Aktywuj MultiPart Backups
- Wyklucz części podczas procesu przywracania Backupu
- Zwiększ chunki uploadu Backupu dostawców chmury
- Zwiększ opóźnienie między żądaniami dostawców chmury
- Wymuś wysyłanie do zdalnego storage FTP przez rozszerzenie FTP
- Przywróć Backup utworzony na witrynie HTTP na witrynę HTTPS lub odwrotnie
- Wyklucz pliki i katalogi z usuwania podczas przywracania Backupu
- Zastąp Collation bazy danych podczas przywracania Backupu niestandardową fallback collation
- Wyklucz tabele z przywracania Backupu
- Włącz tryb Safe Performance podczas Backupu/przywracania
- Filtry Remote Sync
Quick-start: najczęściej używane filtry
Wszystkie filtry umieszczasz w pliku mu-plugin, by ładowały się automatycznie przy każdym żądaniu. WP Staging przetwarza mu-pluginy przed własnym kodem, więc hooki zarejestrowane tam wykonują się we właściwym momencie zadania klonowania, push lub Backupu.
Dwa najprostsze filtry do natychmiastowego skopiowania:
Wyłącz limit pamięci — WP Staging domyślnie ogranicza się do 256 MB. Usuń ten limit:
add_filter( 'wpstg.resources.ignoreMemoryLimit', function() { return true; } );
Nadpisz limit czasu wykonania — zwiększ maksymalny czas wykonania PHP, o który prosi WP Staging (wartość w sekundach; trzymaj ją poniżej rzeczywistego max_execution_time twojego serwera):
add_filter( 'wpstg.resources.executionTimeLimit', function() { return 100; } );
Pozostałe popularne filtry — aktywacja pluginów, wykluczanie folderów, search-replace zakodowanych wartości, zachowywanie opcji — opisano w dedykowanych sekcjach poniżej. Każda sekcja zawiera pełny, gotowy do użycia blok kodu.
Pozwól na nieograniczone użycie pamięci
WP STAGING ogranicza maksymalne zużycie pamięci do 256M, co zwykle wystarcza dla procesu klonowania i Backupu. Podczas tego procesu wszystkie inne pluginy są wyłączone, ale nie wpłynie to na inne strony witryny.
Limit pamięci 256M zwykle wystarcza, aby WP STAGING działało pomyślnie. Nie zalecamy wyższego WP_MEMORY_LIMIT ani limitu pamięci PHP powyżej 512M, ponieważ wyższe wartości mogą wskazywać na problem z jednym z pluginów lub wieloma aktywnymi pluginami. Nie warto wychodzić poza te limity, ponieważ limit pamięci dotyczy każdego procesu PHP. Jeśli wysokie dozwolone zużycie pamięci jest ustawione dla każdego żądania WordPress, dostępna pamięć maszyny może szybko się zapełnić, czyniąc witrynę niedostępną.
Jednak w przypadkach, gdy konieczne jest przekroczenie limitu 256M, możliwe jest wyłączenie limitu pamięci WP STAGING. Pamiętaj, że nie jest to zalecane bez ważnego powodu i bez wystarczającej ilości dostępnej pamięci na serwerze.
Aby wyłączyć limit pamięci, użyj poniższego filtra, by zezwolić na nieograniczone zużycie pamięci dla WP STAGING. Jedynym limitem w tym przypadku jest maksymalny limit pamięci PHP.
add_filter('wpstg.resources.ignoreMemoryLimit', function() {
return true;
});Zmień logo WP Staging na formularzu logowania (wersja Pro)
Domyślnie witryna staging używa standardowego logo logowania WordPress. Zastąpienie go niestandardowym obrazem lub logo twojej firmy sprawia, że środowisko staging jest wizualnie odróżnialne od ekranu logowania produkcji, co pomaga zapobiec przypadkowej pracy na niewłaściwej witrynie.
Możesz użyć poniższego kodu, by zmienić logo formularza logowania witryny staging:
add_filter('wpstg_login_form_logo', function(){
return 'https://example.com/path/to/custom/image.png';
});Zwiększ czas żądania WP STAGING i maksymalny czas wykonania PHP
Zwykle Backup i przywracanie WP STAGING działa nawet na słabszych dostawcach Hostingu. Jeśli masz ogromną bazę danych lub witrynę z milionami wierszy, domyślny limit czasu wykonania PHP wynoszący 30 sekund może być za niski. Aby tworzenie/przywracanie Backupu działało, ustaw wartość PHP max_execution_time= 120 w php.ini.
Zwiększ też wartość apache Timeout 120 lub ustaw dyrektywę Nginx fastcgi_read_timeout 120;
Następnie dodaj poniższy filtr do mu-plugin, np. mu-plugin/wp-staging-optimizer.php.
add_filter('wpstg.resources.executionTimeLimit', function(){
return 100;
});Upewnij się, że wartość wejściowa jest mniejsza niż faktyczny maksymalny dozwolony czas wykonania PHP. Jest to konieczne, aby czas żądania WP STAGING nigdy nie przekraczał czasu wykonania PHP.
Zmień tytuł witryny staging
Domyślnie witryna staging ma ten sam tytuł co witryna żywa. Ustawienie odrębnej nazwy — na przykład [STAGING] Moja Witryna lub DEV — sprawia, że środowisko jest oczywiste na pasku administracyjnym WordPress i w karcie przeglądarki, co zmniejsza ryzyko publikowania lub edytowania treści na niewłaściwej instalacji.
function wpstg_get_title(){
return 'DEV';
}
add_filter('wpstg_staging_site_title', 'wpstg_get_title');Zmień ścieżkę do folderu cache
WP Staging domyślnie zapisuje tymczasowe pliki Backupu wewnątrz instalacji WordPress. Przeniesienie folderu cache — na przykład do systemowego katalogu temp poza webroot lub na ścieżkę na szybszym nośniku — może poprawić wydajność Backupu na serwerach z wolnym I/O na katalogu głównym dokumentów i spełnia polityki bezpieczeństwa ograniczające zapis do określonych katalogów.
Aby zmienić folder używany do przechowywania tymczasowych plików Backupu na globalny folder temp PHP lub gdzie indziej, możesz użyć poniższego kodu:
add_filter('wpstg.directory.cacheDirectory', function(){
return trailingslashit(sys_get_temp_dir()) . 'wpstagingcache';
});Wyklucz tabele z operacji Search & Replace
Użyj tego, jeśli proces search & replace pochłania dużo dostępnej pamięci, a klonowanie lub push kończy się błędem memory-exhausted. Możesz też tego użyć, aby zwiększyć prędkość klonowania i push.
Wyklucz tabele, które nie wymagają search & replace linków! Mogą to być tabele zawierające statystyki odwiedzających, adresy IP itp. Po wykluczeniu tych tabel możesz zwiększyć limit DB Search & Replace w ustawieniach WP STAGING dla lepszej wydajności.
function wpstg_searchreplace_excl_tables($default){
$tables = array('_posts', '_postmeta');
return array_merge($default, $tables);
}
add_filter('wpstg_searchreplace_excl_tables','wpstg_searchreplace_excl_tables');
Niestandardowe Search & Replace dla zakodowanych wartości bazy
Użyj tego filtra, by wykonywać operacje search and replace na danych zakodowanych w base64 w bazie danych (często używane przez page buildery lub złożone ustawienia pluginów). Zapewnia to, że URL i inne ciągi są poprawnie aktualizowane nawet gdy przechowywane w zakodowanym formacie podczas klonowania, push lub przywracania.
// Replace URLs inside base64-encoded database values during cloning/pushing/restore.
add_filter('wpstg.database.searchreplace.replace_extended_data', function ($data, $search, $replace) {
$plain = base64_decode($data, true);
if ($plain === false) {
return $data;
}
$replaced = str_replace($search, $replace, $plain);
if ($replaced === $plain) {
return $data;
}
return base64_encode($replaced);
}, 10, 3);Możesz użyć tego filtra, by zastąpić wszelkie niestandardowe dane w bazie, których WP Staging nie potrafi obsłużyć automatycznie.
Inny przykład: niektóre pluginy zapisują URL lub inne wartości w zakodowanych ciągach JSON zamiast jako zwykły tekst. Typowy przykład to JSON zawierający wartości właściwości zakodowane w base64.
W tych przypadkach normalne search/replace WP Staging nie wykryje oryginalnego URL, ponieważ jest on ukryty wewnątrz zakodowanej wartości.
Aby obsłużyć te przypadki, WP Staging udostępnia filtr:
wpstg.database.searchreplace.replace_extended_data
Ten filtr pozwala deweloperom zmodyfikować wartość kolumny bazy danych po tym, jak normalne search/replace już się wykonało.
Można go użyć podczas:
- klonowania
- push staging na produkcję
- przywracania Backupów
Kiedy powinienem użyć tego filtra?
Użyj tego filtra, gdy plugin lub motyw przechowuje dane w formacie typu:
- JSON z wartościami zakodowanymi w base64
- zagnieżdżone struktury JSON zawierające zakodowane ciągi
- niestandardowe formaty danych, gdzie URL nie są przechowywane jako zwykły tekst
Bez tego filtra URL wewnątrz tych zakodowanych wartości pozostaną niezmienione.
Parametry filtra
Filtr otrzymuje trzy parametry:
| Parametr | Typ | Opis |
|---|---|---|
$data |
string | Wartość kolumny bazy po normalnym search/replace |
$search |
array | Ciągi wyszukiwania |
$replace |
array | Ciągi zastępujące |
Podstawowa idea
Twój callback może:
- sprawdzić wartość bazy
- wykryć, czy zawiera zakodowane dane
- zdekodować wartość
- uruchomić
str_replace()z tablicami search i replace - ponownie zakodować wartość
- zwrócić zmodyfikowany wynik
Jeśli wartość nie pasuje do oczekiwanego formatu, po prostu zwróć ją niezmienioną.
Przykład: search/replace wewnątrz wartości JSON zakodowanych w base64
Poniższy przykład mu-plugin pokazuje, jak zastąpić URL wewnątrz wartości JSON, których właściwości są zakodowane w base64.
Utwórz ten plik:
wp-content/mu-plugins/wpstg-base64-search-replace.php
Dodaj ten kod:
<?php
/**
* Decode base64-encoded values inside JSON database columns during
* WP Staging search/replace so that URLs within them are replaced.
*/
add_filter('wpstg.database.searchreplace.replace_extended_data', function ($data, $search, $replace) {
// Only process JSON-looking data
if (empty($data) || ($data[0] !== '[' && $data[0] !== '{')) {
return $data;
}
$decoded = json_decode($data, false);
if (json_last_error() !== JSON_ERROR_NONE) {
return $data;
}
$changed = false;
// Recursively walk JSON to find base64-encoded string values at any depth
$walk = function ($node) use (&$walk, &$changed, $search, $replace) {
if (is_array($node)) {
foreach ($node as $item) {
$walk($item);
}
return;
}
if (!is_object($node)) {
return;
}
foreach ($node as $key => $value) {
if (is_array($value) || is_object($value)) {
$walk($value);
continue;
}
if (!is_string($value) || $value === '') {
continue;
}
$plain = base64_decode($value, true);
if ($plain === false) {
continue;
}
$replaced = str_replace($search, $replace, $plain);
if ($replaced !== $plain) {
$node->$key = base64_encode($replaced);
$changed = true;
}
}
};
$walk($decoded);
return $changed ? wp_json_encode($decoded) : $data;
}, 10, 3);Jak działa ten przykład
Ten przykład robi następujące rzeczy:
- Sprawdza, czy wartość bazy wygląda jak JSON.
- Dekoduje JSON.
- Rekursywnie przechodzi przez wszystkie zagnieżdżone tablice i obiekty.
- Próbuje zdekodować base64 każdą wartość ciągu.
- Uruchamia wartości search/replace WP Staging na zdekodowanej treści.
- Jeśli coś się zmieniło, ponownie koduje zmodyfikowaną wartość w base64.
- Zwraca zaktualizowany ciąg JSON.
Przykładowe dane
Wyobraź sobie, że plugin przechowuje to w bazie:
{ "title": "Example", "url": "aHR0cHM6Ly9vbGQtc2l0ZS5jb20vcGFnZQ=="}
Wartość url jest zakodowana w base64. Po zdekodowaniu zawiera:
https://old-site.com/page
Podczas klonu, push lub przywracania WP Staging normalne search/replace nie widzi tego URL bezpośrednio, ponieważ jest zakodowany.
Z powyższym filtrem WP Staging:
- decode the value
- zastąpić
https://old-site.comprzezhttps://new-site.com - zakodować ją ponownie
- zapisać zaktualizowaną wartość z powrotem do bazy
Wynik
Po uruchomieniu filtra przechowywana wartość staje się wersją zakodowaną w base64:
https://new-site.com/page
Gdzie umieścić ten kod?
Najbezpieczniejszą opcją jest umieszczenie go w mu-plugin, by ładował się automatycznie przy każdym żądaniu.
Zalecana ścieżka:
wp-content/mu-plugins/wpstg-base64-search-replace.php
Jeśli katalog mu-plugins jeszcze nie istnieje, utwórz go ręcznie.
Ważne uwagi
- Ten filtr jest przeznaczony dla niestandardowych formatów bazy, których nie obsługuje domyślne search/replace.
- Twój callback powinien zawsze zwracać oryginalne
$dataniezmienione, jeśli nie pasuje do oczekiwanego formatu. - Trzymaj logikę tak konkretną, jak to możliwe, by uniknąć zmiany niepowiązanych danych.
- Najpierw przetestuj to na witrynie staging przed użyciem na danych produkcyjnych.
Podsumowanie
Używaj wpstg.database.searchreplace.replace_extended_data, gdy URL lub inne wartości są ukryte w zakodowanej zawartości bazy.
Jest to szczególnie przydatne dla pluginów, które przechowują wartości w:
- JSON zakodowany w base64
- zagnieżdżone obiekty JSON
- inne niestandardowe zakodowane formaty
Daje deweloperom pełną kontrolę nad tym, jak te wartości są dekodowane, zastępowane i ponownie zapisywane.
Filtry klonowania i staging
Uruchom akcję na witrynie staging po klonowaniu
Użyj tej akcji, by wykonać jednorazową operację na bazie staging przy pierwszym otwarciu witryny staging — na przykład, by usunąć dane testowe z żywej witryny, wyczyścić tabelę logowania lub wstawić wiersze konfiguracji specyficzne dla staging. Akcja wykonuje się dokładnie raz przy pierwszym załadowaniu witryny staging.
Poniższy przykład wykona zapytanie sql po pierwszym otwarciu witryny staging:
add_action('wpstg.clone_first_run', 'wpstg_execute_after_cloning', 10);
function wpstg_execute_after_cloning() {
global $wpdb;
$sql = "DELETE * FROM wpstg0_tablename WHERE ....";
$wpdb->query($sql);
}To zapytanie zostanie wykonane tylko gdy jest to witryna staging i tylko na witrynie staging, ale dla dodatkowego bezpieczeństwa zalecamy zakodowanie na sztywno nazw tabel z konkretnym prefiksem staging, jak w przykładzie, by mieć pewność, że to zapytanie nigdy nie wyrządzi szkody na żywej witrynie, gdyby zostało tam przypadkowo wykonane.
Możesz dodać do tej akcji dowolny kod i zostanie on wykonany raz przy pierwszym otwarciu nowej witryny staging.
Aktywuj lub dezaktywuj określone pluginy na witrynie staging po klonowaniu
Aby aktywować lub dezaktywować pluginy na witrynie staging po klonowaniu, użyj filtra wpstg.cloning.update_active_plugins tak:
php
function wpstg_cloning_update_active_plugins($currentActivePlugins) {
// snippet to deactivate
$pluginsToDeactivate = array('plugin1-basename', 'plugin2-basename');
foreach ($pluginsToDeactivate as $pluginToDeactivate) {
$key = array_search($pluginToDeactivate, $currentActivePlugins, true);
if (false !== $key) {
unset($currentActivePlugins[$key]);
}
}
// snippet to activate
$pluginsToEnable = array('plugin3-basename');
$currentActivePlugins = array_merge($currentActivePlugins, $pluginsToEnable);
return $currentActivePlugins;
}
add_filter('wpstg.cloning.update_active_plugins','wpstg_cloning_update_active_plugins');Wyklucz wiersze z Search & Replace w wp_options
Użyj tego filtra, gdy określone wiersze opcji muszą zachować swoje wartości z witryny staging niezmienione podczas przebiegu search-and-replace przy klonowaniu — na przykład klucze licencyjne, endpointy API lub tokeny uwierzytelniania wskazujące różne usługi na staging i produkcji. Filtr przyjmuje tablicę wartości option_name do pominięcia.
function wpstg_clone_searchreplace_excl_rows($default){
$rows = array('siteurl', 'home');
return array_merge($default, $rows);
add_filter('wpstg_clone_searchreplace_excl_rows','wpstg_clone_searchreplace_excl_rows');
Wyklucz wiersze z klonowania
Ten przykład wykluczy wiersze z tabeli wp_options w zależności od nazwy opcji lub wykluczy wpisy z tabeli wp_posts na podstawie post_title i post_status oraz ich metadanych.
Dostępne są te operatory:
['=', '>', '>=', '<', '<=', '<>', '!=', 'LIKE', 'NOT LIKE']
function queryCloningRows($filters) {
$filters = [
// Clone only options where option_name is not 'wpstg_is_staging_site'
'wp_options' => [
'option_name' => [
'operator' => '<>',
'value' => 'wpstg_is_staging_site'
]
],
// Clone only posts where post_title LIKE 'Hello%' AND post_status = 'publish'
'wp_posts' => [
'post_title' => [
'operator' => 'LIKE',
'value' => 'Hello%'
],
'post_status' => 'publish'
],
// will filter postmeta depending upon filtered data in wp_posts, see above wp_posts filter
'wp_postmeta' => [
'join' => [
'table' => 'wp_posts',
'primaryKey' => 'ID',
'foreignKey' => 'post_id',
]
]
];
return $filters;
}
add_filter('wpstg.cloning.database.queryRows', 'queryCloningRows');
Wyklucz niestandardowy typ wpisu z klonowania
Użyj tego filtra, gdy niestandardowy typ wpisu na twojej żywej witrynie nie powinien być klonowany na staging — na przykład zamówienia sklepu, rezerwacje lub wpisy subskrypcji, które zaśmieciłyby bazę staging produkcyjnymi danymi transakcyjnymi.
Ten przykład wykluczy wpisy w niestandardowym typie „coupon” wraz z ich danymi postmeta:
These operators are available:
['=', '>', '>=', '<', '<=', '<>', '!=', 'LIKE', 'NOT LIKE']
function queryCloningRows($filters) {
$myFilters = [
// Clone only posts which do not belong to post_type coupon
'wp_posts' => [
'post_type' => [
'operator' => '<>',
'value' => 'coupon'
]
],
// will filter postmeta depending upon filtered data in wp_posts, see above wp_posts filter
'wp_postmeta' => [
'join' => [
'table' => 'wp_posts',
'primaryKey' => 'ID',
'foreignKey' => 'post_id',
]
]
];
// will filter postmeta depending upon filtered data in wp_posts, see above wp_posts filter
'wp_postmeta' => [
'join' => [
'table' => 'wp_posts',
'primaryKey' => 'ID',
'foreignKey' => 'post_id',
]
]
];
return array_merge($filters, $myFilters);
}
add_filter('wpstg.cloning.database.queryRows', 'queryCloningRows');Wyklucz ciągi z Search & Replace
Użyj tego filtra, gdy określone ciągi w twojej bazie muszą pozostać identyczne na staging i żywej witrynie — na przykład nazwa hosta CDN lub URL usługi zewnętrznej, którego nie należy podmieniać podczas zamiany URL przy klonowaniu. Dodaj każdy ciąg do tablicy wykluczeń, by zapobiec jego modyfikacji.
function wpstg_clone_searchreplace_excl(){
return array('blog.localhost.com','blog1.localhost.com');
}
add_filter('wpstg_clone_searchreplace_excl','wpstg_clone_searchreplace_excl');
Zmień parametry Search & Replace
Użyj tego filtra, gdy domyślne parametry search-and-replace URL nie obejmują wszystkich ciągów różniących się między twoją żywą witryną a staging — na przykład gdy musisz zastąpić alias domeny lub podmienić dodatkowe wartości niewykryte automatycznie. Pozwala on określić dokładne ciągi wyszukiwania i zastępowania oraz kontrolować flagi zamiany PHP.
function wpstg_cloning_custom_params($args){
// Default values - Can be changed
$args['search_for'] = array_merge(
$args['search_for'],
array('SEARCHSTRING', 'SEARCHSTRING')
);
$args['replace_with'] = array_merge(
$args['replace_with'],
array('REPLACESTRING','REPLACESTRING2')
);
$args['replace_guids'] = 'off';
$args['dry_run'] = 'off';
$args['case_insensitive'] = false;
$args['replace_guids'] = 'off';
$args['replace_mails'] = 'off';
$args['skip_transients'] = 'on';
return $args;
}
add_filter('wpstg_clone_searchreplace_params', 'wpstg_cloning_custom_params');Wyklucz pliki
Użyj tego filtra, by zapobiec kopiowaniu określonych plików z żywej witryny na staging. Jest to przydatne dla plików konfiguracyjnych specyficznych dla środowiska, dużych plików logów lub plików licencyjnych, które nie powinny istnieć na witrynie staging.
/**
* Cloning: Exclude files from cloning
* Example: You can use a wildcard pattern like *.log to exclude all log files
*/
function wpstg_clone_excluded_file_names($default)
{
$files = array('custom-file', '*LOG-*', '*.logs');
return array_merge($default, $files);
}
add_filter('wpstg_clone_excluded_files', 'wpstg_clone_excluded_file_names');
Wyklucz pliki z klonowania przy użyciu pełnej ścieżki
Domyślnie WP STAGING wyklucza te pliki z kopiowania, gdy tworzy witrynę staging:
.htaccessAbsolute/path/to/WordPress/directory/wp-content/db.phpAbsolute/path/to/WordPress/directory/wp-content/object-cache.phpAbsolute/path/to/WordPress/directory/wp-content/advanced-cache.php
Możesz zmienić to zachowanie i zmodyfikować listę wykluczonych plików, używając poniższego filtra:
/**
* Exclude files from cloning using full path
*/
function wpstg_clone_excluded_files_full_path($default)
{
$files = ['full/path/custom-file1', 'full/path/custom-file2'];
return array_merge($default, $files);
}
add_filter('wpstg.clone.excluded_files_full_path','wpstg_clone_excluded_files_full_path');Wyklucz foldery
Użyj tego filtra, by wykluczyć całe katalogi z procesu klonowania. Jest to powszechnie używane do pominięcia katalogów pluginów lub motywów niepotrzebnych na staging, dużych bibliotek mediów lub folderów z artefaktami buildu. Ścieżki są względem katalogu wp-content.
/**
* Excluded folders relative to the wp-content folder
*/
function wpstg_exclude_folders_custom($args){
$folders = array('plugins/wordpress-seo', 'custom-folder');
return array_merge($args, $folders);
}
add_filter('wpstg_clone_excl_folders', 'wpstg_exclude_folders_custom');
Multisite: wyklucz foldery (pluginy) z klonowania w multisite
Jeśli używasz sieci multisite, użyj filtra wpstg_clone_mu_excl_folders, by wykluczyć foldery względem folderu wp-content. Jest to pomocne, jeśli chcesz wykluczyć plugin.
**
* Excluded folders relative to the wp-content folder
*/
function wpstg_exclude_folders_custom($args){
$folders = array('plugins/wordpress-seo', 'themes/custom-folder');
return array_merge($args, $folders);
}
add_filter('wpstg_clone_mu_excl_folders', 'wpstg_exclude_folders_custom');
Zapobiegnij search & replace prefiksu tabel w opcji tabeli wp_options
Domyślnie WP STAGING klonuje wszystkie tabele i zastępuje wartości zaczynające się od prefiksu tabel nowej bazy. Możesz wykluczyć opcje z tej operacji zamiany, by nie były modyfikowane podczas klonowania:
function wpstg_excl_option_name_custom($args){
$cols = array('wp_mail_smtp', 'wp_mail_smtp_version');
return array_merge($args, $cols);
}
add_filter('wpstg_data_excl_rows', 'wpstg_excl_option_name_custom');Klonuj sieci multisite i zmień nazwę hosta docelowego
WP STAGING obsługuje multisite oparte na własnych domenach. Witryny sieciowe zostaną automatycznie utworzone w określonej subdomenie głównej witryny.
Przykład:
Jest witryna sieciowa z główną witryną example.com, podwitryną example.org i kolejną example.net:
Jeśli sklonujesz całą sieć do staging.example.com, witryny sieciowe zostaną sklonowane do:
- staging.example.org
- staging.example.net
Możesz dostosować każdą witrynę, używając poniższego filtra. To filtr ogólny, który można użyć dla podwitryn opartych na subdomenach, podkatalogach lub domenach.
// Convert staging site with ID 2 to dev.example.com
add_filter('wpstg.cloning.multisite.subsite_info', function ($subsiteInfo, $blogId, $stagingSiteURL, $addWWWPrefix) {
if ($blogId === 2) {
$subsiteInfo['domain'] = 'dev.example.com';
$subsiteInfo['path'] = '/';
$subsiteInfo['url'] = 'https://dev.example.com';
}
return $subsiteInfo;
}, 10, 4);Zachowaj wartość „upload_path” w bazie danych
W starych witrynach sieciowych WordPress możesz potrzebować zachować upload_path bez zmian – użyj tego filtra:
add_filter('wpstg.cloning.preserve_upload_path', '__return_true');Filtry push
Aktywuj lub dezaktywuj określone pluginy na witrynie produkcyjnej po push witryny staging
Aby aktywować lub dezaktywować pluginy na żywej witrynie po push witryny staging, użyj filtra wpstg.pushing.update_active_plugins tak:
function wpstg_pushing_update_active_plugins($currentActivePlugins)
{
// snippet to deactivate
$pluginsToDeactivate = array('plugin1-basename', 'plugin2-basename');
foreach ($pluginsToDeactivate as $pluginToDeactivate) {
$key = array_search($pluginToDeactivate, $currentActivePlugins, true);
if (false !== $key) {
unset($currentActivePlugins[$key]);
}
}
// snippet to activate
$pluginsToEnable = array('plugin3-basename');
$currentActivePlugins = array_merge($currentActivePlugins, $pluginsToEnable);
return $currentActivePlugins;
}
add_filter('wpstg.pushing.update_active_plugins','wpstg_pushing_update_active_plugins');Zmień parametry Search & Replace
Użyj tego filtra, gdy push wymaga dodatkowych zamian URL poza tym, co WP Staging wykrywa automatycznie — na przykład subdomeny CDN, endpointu API lub domeny aliasowej różniącej się między staging a produkcją.
function wpstg_push_custom_params($args){
// Default values - Can be changed
$args['search_for'] = array_merge(
$args['search_for'],
array('SEARCHSTRING', 'SEARCHSTRING2')
);
$args['replace_with'] = array_merge(
$args['replace_with'],
array('REPLACESTRING','REPLACESTRING2')
);
$args['replace_guids'] = 'off';
$args['dry_run'] = 'off';
$args['case_insensitive'] = false;
$args['replace_guids'] = 'off';
$args['replace_mails'] = 'off';
$args['skip_transients'] = 'on';
return $args;
}
add_filter('wpstg_push_searchreplace_params', 'wpstg_push_custom_params');Wyklucz tabele z push
Użyj tego filtra, by zapobiec wykonaniu push określonych tabel bazy danych na witrynę produkcyjną — na przykład niestandardowej tabeli logowania, tabeli analityki lub dowolnej tabeli pluginu zarządzającej danymi tylko produkcyjnymi niezależnie od staging.
function wpstg_push_excluded_tables($tables){
$customTables = ['options', 'posts'];
return array_merge($tables, $customTables);
}
add_filter('wpstg_push_excluded_tables','wpstg_push_excluded_tables');
Uwaga: Nazwy tabel w kodzie muszą być bez prefiksów!
Ten przykład wyklucza tabele wp_posts i wp_options z push na żywą witrynę.
Wyklucz wiersze z push. Kopiuj tylko określone wiersze
Ten przykład wykluczy określone wiersze z tabeli wp_options w zależności od nazwy opcji lub wykluczy wpisy z tabeli wp_posts na podstawie post_title i post_status oraz ich danych postmeta.
These operators are available:
['=', '>', '>=', '<', '<=', '<>', '!=', 'LIKE', 'NOT LIKE']
Uwaga: Prefiks tabel musi być wpstg0_, wpstg1_, wpstg3 itd. w zależności od rzeczywistego prefiksu witryny staging, więc musisz zastąpić wpstg[int]_ rzeczywistym prefiksem.
function queryPushingRows($filters) {
$filters = [
// will only push options where option_name is not 'wpstg_is_staging_site'
'wpstg0_options' => [
'option_name' => [
'operator' => '<>',
'value' => 'wpstg_is_staging_site'
]
],
// will only push posts where post_title LIKE 'Hello%' AND post_status = 'publish'
'wpstg0_posts' => [
'post_title' => [
'operator' => 'LIKE',
'value' => 'Hello%'
],
'post_status' => 'publish'
],
// will filter postmeta depending upon filtered data in wp_posts, see above wp_posts filter
'wpstg0_postmeta' => [
'join' => [
'table' => 'wpstg0_posts',
'primaryKey' => 'ID',
'foreignKey' => 'post_id',
]
]
];
return $filters;
}
add_filter('wpstg.pushing.database.queryRows', 'queryPushingRows');
Uwaga: Wykluczenie tych typów wpisów oznacza, że nie będą już dostępne i nie zostaną uwzględnione na żywej witrynie po skopiowaniu witryny staging na żywą.
Wyklucz określone typy wpisów z push
Użyj tego, gdy określone typy wpisów na staging nigdy nie powinny nadpisywać swoich produkcyjnych odpowiedników — na przykład zamówień, subskrypcji lub innych danych transakcyjnych zarządzanych niezależnie na żywej witrynie.
Ten przykład wykluczy wpisy z niestandardowym typem „coupon” wraz z ich danymi postmeta:
These operators are available:
['=', '>', '>=', '<', '<=', '<>', '!=', 'LIKE', 'NOT LIKE']
Uwaga: Prefiks tabel musi być wpstg0_, wpstg1_, wpstg3 itd. w zależności od rzeczywistego prefiksu witryny staging, więc musisz zastąpić wpstg0_ rzeczywistym prefiksem.
function queryPushingRows($filters) {
$myFilters = [
// Push only posts where post_type is not 'coupon'
'wpstg0_posts' => [
'post_type' => [
'operator' => '<>',
'value' => 'coupon'
]
],
// will push postmeta depending upon filtered data in wp_posts, see above wp_posts filter
'wpstg0_postmeta' => [
'join' => [
'table' => 'wpstg0_posts',
'primaryKey' => 'ID',
'foreignKey' => 'post_id',
]
]
];
return array_merge($filters, $myFilters);
}
add_filter('wpstg.pushing.database.queryRows', 'queryPushingRows');Wyklucz foldery z push
Domyślnie WP STAGING PRO nie przechodzi przez ani nie wykonuje push tych folderów na witrynę produkcyjną:
- cache
- wps-hide-login
- node_modules
- nbproject
- wp-staging
Możesz dodać niestandardowe foldery do tej listy, używając poniższego filtra:
function wpstg_push_directories_excl($default){
$dirs = array('custom-folder', 'custom-folder2');
return array_merge($default, $dirs);
}
add_filter('wpstg.push_excluded_directories', 'wpstg_push_directories_excl');
Wyklucz pliki z push
Domyślnie WP STAGING PRO nie wykonuje push tych plików na witrynę produkcyjną:
- .htaccess
- .DS_Store
- .git
- .svn
- .tmp
- desktop.ini
- .gitignore
- .log
- wp-staging-optimizer.php
Możesz dodać niestandardowe pliki do tej listy, używając poniższego filtra:
function wpstg_push_excluded_files($default){
$files = array('custom-file', 'custom-file2');
return array_merge($default, $files);
}
add_filter('wpstg_push_excluded_files','wpstg_push_excluded_files');Zachowaj dane w wp_options i wyklucz je z push
Zachowywanie danych oznacza, że możesz wykonać push witryny staging na produkcyjną i wykluczyć określone dane z nadpisywania podczas procesu push.
Poniższy przykład zachowuje wartości opcji WordPress 'siteurl’ i 'home’ w tabeli wp_options żywej witryny.
Można dodać dowolną liczbę dodatkowych opcji.
function wpstg_push_preserve_options($options){
$preserveOptions = ['siteurl', 'home'];
return array_merge($options, $preserveOptions );
}
add_filter('wpstg_preserved_options','wpstg_push_preserve_options');
Przykład: jak zachować klucz licencyjny WPML po push
Możesz użyć tego kodu jako pliku mu-plugin:
<?php
/*
Plugin Name: mu-plugin to keep the WPML license of the live site
Description: After you push the staging site to the live site, the live site's WPML license won't change
Version: 1.0
Author: WPSTAGING
*/
function wpstg_push_preserve_options($options){
$preserveOptions = ['wp_installer_settings'];
return array_merge($options, $preserveOptions );
}
add_filter('wpstg_preserved_options','wpstg_push_preserve_options');Uruchom akcję po push witryny produkcyjnej.
Ta akcja wykonuje się na witrynie produkcyjnej natychmiast po zakończeniu push staging. Użyj jej, by wyczyścić cache produkcji, powiadomić zewnętrzną usługę monitorowania lub uruchomić migracje bazy zależne od nowo wgranej treści.
Możesz użyć tego hooka, by wywołać metodę na witrynie produkcyjnej po push witryny staging na żywą.
function pushingComplete()
{
// do something
}
add_action( 'wpstg_pushing_complete', 'pushingComplete' );Filtry Backupu
Przywróć pełny multisite na inny multisite (migracja)
Jeśli utworzyłeś Backup z pełnej sieci multisite i chcesz go przywrócić na innej istniejącej sieci multisite, np. by skopiować multisite na inny serwer, jest kilka rzeczy do rozważenia, w zależności od typu multisite. Przeczytaj ten artykuł wyjaśniający szczegóły i użycie konkretnego filtra dla tej operacji.
Przywróć witrynę sieciową multisite na inną sieć multisite (migracja)
Ten filtr pozwala wykluczyć określone ścieżki katalogu uploads z usuwania podczas kroku czyszczenia przywracania przy migracji podwitryny sieciowej na inną sieć multisite.
Pobiera tablicę ścieżek (w katalogu uploads) (plik lub katalog) do wykluczenia z czyszczenia podczas przywracania Backupu. Przykład użycia:
add_filter('wpstg.backup.restore.exclude_media_during_cleanup', function ($pathsToExclude) {
$pathsToExclude[] = '/full/path/to/a/directory';
$pathsToExclude[] = '/full/path/to/a/file';
return $pathsToExclude;
});Domyślnie WP Staging zachowuje oryginalną treść (folder języków, mu-plugins, pluginy, motywy i inne pliki poza mediami) przy przywracaniu Backupu na podwitrynie sieciowej. Zamiast zachowywać istniejącą treść, możemy je zastąpić, używając tych filtrów:
add_filter('wpstg.backup.restore.replace_existing_languages', '__return_true');
add_filter('wpstg.backup.restore.replace_existing_mu_plugins', '__return_true');
add_filter('wpstg.backup.restore.replace_existing_other_files', '__return_true');
add_filter('wpstg.backup.restore.replace_existing_plugins', '__return_true');
add_filter('wpstg.backup.restore.replace_existing_themes', '__return_true');Rozszerz search and replace, aby zmienić URL wszystkich podwitryn w bazie
Domyślnie, aby przyspieszyć proces przywracania Backupu, zastąpione zostaną tylko URL należące do bieżącej witryny. Jeśli to multisite i witryna zawiera URL innych witryn z sieci, możesz użyć filtra, by zastąpić również te URL. Pamiętaj, że im więcej witryn masz, tym dłużej zajmie zastąpienie wszystkich URL.
add_filter('wpstg.multisite.full_search_replace', '__return_true');Wyklucz rozszerzenie pliku z Backupu
Użyj tego filtra, by pominąć z Backupu pliki określonych typów — na przykład skompilowane zasoby, tymczasowe archiwa lub pliki logów, które zajmują miejsce, ale nie są potrzebne do przywracania.
Pozwala użytkownikom wykluczyć określone rozszerzenia plików z eksportu Backupu.
function wpstg_backup_files_ignore_extensions($default_excluded){
return array_merge($default_excluded, ['zip', 'gz']);
}
add_filter( 'wpstg.export.files.ignore.file_extension', 'wpstg_backup_files_ignore_extensions');Wyklucz pliki większe niż określony rozmiar z Backupu
Domyślnie WP Staging pomija wszystkie pliki większe niż 200MB przy dodawaniu do Backupu. Możesz zwiększyć tę wartość, używając poniższego filtra:
function wpstg_backup_files_ignore_files_bigger_than($default){
return 200 * MB_IN_BYTES;
}
add_filter( 'wpstg.export.files.ignore.file_bigger_than', 'wpstg_backup_files_ignore_files_bigger_than');Wyklucz pliki z określonymi rozszerzeniami większe niż określony rozmiar z Backupu
Domyślnie WP Staging pomija pliki zip większe niż 50MB przy dodawaniu do Backupu. Możesz to zmienić, używając poniższego filtra dla każdego rozszerzenia osobno:
function wpstg_backup_files_ignore_files_w_extension_bigger_than($default){
$ignoreFiles = [
'gz' => 100 * MB_IN_BYTES,
'tar' => 200 * MB_IN_BYTES,
'zip' => 200 * MB_IN_BYTES
];
return array_merge($default, $ignoreFiles);
}
add_filter( 'wpstg.export.files.ignore.file_extension_bigger_than', 'wpstg_backup_files_ignore_files_w_extension_bigger_than');Wyklucz katalogi z dołączenia do Backupu
Użyj tego filtra, by pominąć z Backupu całe katalogi — na przykład foldery zawierające duże pliki logów, artefakty buildu lub dane z cache, które nie muszą być archiwizowane i niepotrzebnie zwiększyłyby rozmiar pliku Backupu.
function wpstg_backup_exclude_directories($excludedDirectories){
$customExcludedDirectories = [
'var/www/example.com/htdocs/wp-content/cache'
];
return array_merge($excludedDirectories, $customExcludedDirectories);
}
add_filter( 'wpstg.backup.exclude.directories', 'wpstg_backup_exclude_directories');
Wyklucz pliki z przywracania
Ten filtr wyklucza pliki lub cały folder z przywracania Backupu. Możesz przekazać tablicę ścieżek względem katalogu głównego instalacji WordPress i te pliki lub foldery nie będą wyodrębniane z Backupu podczas procesu przywracania.
/**
* Backup: Exclude files or folders from being restored.
* If path is a folder, the entire folder including all contained files and subfolders will be excluded from backup restoration.
*/
function wpstg_backup_restore_exclude_paths($excludedFiles)
{
$customExcludedFiles = [
ABSPATH . 'documents', // a path
ABSPATH . 'wp-content/share', // a path inside parent folder
ABSPATH . 'wp-content/plugins/wp-crontrol', // a plugin
ABSPATH . 'wp-content/plugins/foo.php', // a file inside plugins folder
ABSPATH . 'wp-content/themes/twentytwentyfour' // a complete theme
];
return array_merge($excludedFiles, $customExcludedFiles);
}
add_filter('wpstg.backup.restore.exclude_paths', 'wpstg_backup_restore_exclude_paths');Przywróć Backup i zachowaj istniejące pliki mediów, pluginy lub motywy
Te filtry zapobiegają nadpisywaniu lub usuwaniu przez WP Staging określonych typów plików podczas przywracania Backupu — przydatne, gdy chcesz zachować bieżące pliki pluginów lub motywów i przywrócić tylko bazę danych lub określoną treść.
Możesz użyć poniższych filtrów, by zachować istniejące pliki:
// Keep all plugins
add_filter('wpstg.backup.restore.keepExistingPlugins', function(){return true;});
// Keep all mu-plugins
add_filter('wpstg.backup.restore.keepExistingMuPlugins', function(){return true;});
// Keep all themes
add_filter('wpstg.backup.restore.keepExistingThemes', function(){return true;});
// Keep all media files in wp-content/uploads folder.
add_filter('wpstg.backup.restore.keepExistingMedia', function(){return true;});
// Keep all other files in wp-content folder.
add_filter('wpstg.backup.restore.keepExistingOtherFiles', function(){return true;});Zmień tymczasowy prefiks tabel bazy przywracania Backupu
Można użyć niestandardowego tymczasowego prefiksu bazy danych podczas procesu Backupu-przywracania.
Użycie:
add_filter('wpstg.restore.tmp_database_prefix', function ($defaultTmpPrefix) {
return 'wpstgt_';
});Ten przykład zastąpi {WPSTG_TMP_PREFIX} na wpstgt_ zamiast użycia domyślnego prefiksu tmp wpstgtmp_. Zmniejsza to ryzyko błędów przywracania, jeśli nazwa tabeli wraz z prefiksem tymczasowym przekracza 64 znaki, czyli limit znaków MySQL dla identyfikatorów w bazie.
Z powyższego przykładu, jeśli podczas przywracania istnieje już tabela z prefiksem wpstgt_, system wróci do używania domyślnego prefiksu tmp wpstgtmp_
Aktywuj MultiPart Backups
WP Staging obsługuje tworzenie multipart backupów, których możesz użyć, by ograniczyć rozmiar każdego pliku Backupu. Ta funkcja może tworzyć wiele plików Backupu dla pluginów, motywów, plików mediów i bazy. Jest to przydatne, jeśli masz bardzo dużą witrynę i nie jest możliwe utworzenie plików Backupu o wielogigabajtowych rozmiarach.
Użyj poniższego filtra, by aktywować tę funkcję i określić maksymalny rozmiar pliku Backupu:
add_filter('wpstg.backup.isMultipartBackup', function() {
return true;
});
// 256 MB
add_filter('wpstg.backup.maxMultipartBackupSize', function() {
return 256 * 1024 * 1024;
});Wyklucz części podczas procesu przywracania Backupu
Czasami nie chcesz przywracać całego Backupu, zamiast tego możesz użyć tego filtra, by przywrócić tylko określone części, np. pluginy, motywy, bazę, i zachować istniejące dane.
Przykład
Ten kod przywróci tylko mu-pluginy i wykluczy wszystkie pozostałe części:
//Will only restore mu-plugins
add_filter('wpstg.backup.restore.exclude_backup_parts', function ($partsToSkip)
{
return [
//'muplugins',
'plugins',
'uploads',
'themes',
'lang',
'wpcontent', // Doesn't include core wp directories inside wp-content (mu-plugins, plugins, themes, uploads, languages)
'wproot', // Doesn't include core wp directories (wp-admin, wp-content, wp-includes)
'wpstgdb' // database
];
});Zwiększ chunki uploadu Backupu dostawców chmury
To powinno pomóc zmniejszyć liczbę żądań do Google Drive (na przykład), co może pomóc, jeśli IP serwera zostało zablokowane przez Google. Poczekaj 6 godzin przed ponowieniem wysyłki Backupu na Google. To czas, przez który Google blokuje twój adres IP.
add_filter('wpstg.remoteStorages.chunkSize', function () {
return 10 * 1024 * 1024; // 10 MB chunk size, try increasing the chunk size in multiple of 5 MB if this still fails.
}); Zwiększ opóźnienie między żądaniami dostawców chmury
Użyj tego filtra, by zwiększyć opóźnienie między żądaniami z serwera do Google Drive podczas procesu Backupu. To powinno pomóc, jeśli twój IP został zablokowany przez Google. Poczekaj 6 godzin przed ponownym wysłaniem Backupu na Google. To czas, przez który Google blokuje twój adres IP.
add_filter('wpstg.remoteStorages.delayBetweenRequests', function() {
return 500; // 500ms, if this still fails, try increasing delay by multiple of 250ms.
});Wymuś wysyłanie do zdalnego storage FTP przez rozszerzenie FTP
Domyślnie WP STAGING wysyła pliki Backupu przez rozszerzenie curl do FTP, ale możesz przełączyć na curl, używając tego filtra:
add_filter('wpstg.ftpclient.forceUseFtpExtension', '__return_true');Przywróć Backup utworzony na witrynie HTTP na witrynę HTTPS lub odwrotnie
Ten filtr jest wymagany, gdy musisz przywrócić Backup z witryny HTTP na witrynę HTTPS lub odwrotnie.
add_filter('wpstg.backup.restore.use_current_scheme_on_same_site', '__return_true');Wyklucz pliki i katalogi z usuwania podczas przywracania Backupu
Jeśli przywracasz Backup i chcesz zachować określone pliki i foldery przed wyczyszczeniem i usunięciem, możesz użyć tego filtra, by je zablokować:
add_filter( 'wpstg.backup.restore.exclude_enqueue_delete',
function($excludedFiles) {
return array_merge(
$excludedFiles,
[
ABSPATH . 'wp-content/db.php',
ABSPATH . 'wp-content/database',
ABSPATH . 'wp-content/wp-staging',
ABSPATH . 'wp-content/plugins/wp-staging',
ABSPATH . 'wp-content/plugins/wp-staging-pro',
ABSPATH . 'wp-content/plugins/wpstg-sqlite-integration',
ABSPATH . 'wp-content/mu-plugins/0-staging-url.php',
ABSPATH . 'wp-content/mu-plugins/0-allow-wp-org.php',
ABSPATH . 'wp-content/mu-plugins/1-pretty-permalinks.php',
ABSPATH . 'wp-content/mu-plugins/2-deactivate-sqlite-plugin.php',
ABSPATH . 'wp-content/mu-plugins/sqlite-database-integration-main',
]
);
}
);Zastąp Collation bazy danych podczas przywracania Backupu niestandardową fallback collation
Ten filtr pozwala zastąpić brakujące lub nieobsługiwane collations bazy danych podczas procesu przywracania Backupu. Jeśli collation nie jest dostępna na serwerze docelowym, WP STAGING spróbuje zastąpić ją ogólnym wariantem (np. utf8mb4_general_ci).
Używając tego filtra, możesz zdefiniować własne preferowane fallback collations.
add_filter('wpstg.database.importer.replace_collation', function ($collationSearchReplace) {
$collationSearchReplace['utf8mb4_uca1400_ai_ci'] = 'utf8mb4_0900_ai_ci';
return $collationSearchReplace;
});Parametry:
$collationSearchReplace (array): Tablica asocjacyjna collations do zastąpienia, gdzie kluczem jest brakująca collation, a wartością zastępcza.
Przykład:
Jeśli twój Backup zawiera utf8mb4_uca1400_ai_ci, ale docelowy serwer MySQL go nie obsługuje, możesz zastąpić je utf8mb4_0900_ai_ci przy użyciu powyższego przykładu.
Wyklucz tabele z przywracania Backupu
Możesz wykluczyć określone tabele bazy danych z przywracania, używając poniższego fragmentu kodu:
add_filter('wpstg.backup.restore.exclude.tables', function ($excluded_tables) {
$excluded_tables[] = 'users';
$excluded_tables[] = 'usermeta';
return $excluded_tables;
});Włącz tryb Safe Performance podczas Backupu/przywracania
Tryb bezpieczny używa wolniejszego, ale bardziej kompatybilnego podejścia I/O, które działa na współdzielonym Hostingu, gdzie agresywne zapisy plików wywołują błędy 503. Włącz go tylko, jeśli Backupy lub przywracania bez niego zawodzą, ponieważ zmniejsza wydajność na wydajnych serwerach.
Użyj trybu bezpiecznego, by zapobiec błędom 503 na słabych serwerach. Wpływa na wydajność Backupu. Nie używaj, jeśli Backupy są tworzone poprawnie.
add_filter('wpstg.job.performance_mode', function ($mode) {
return 'safe';
});Filtry Remote Sync
Filtry Remote Sync pozwalają deweloperom dostosować sposób, w jaki WP STAGING obsługuje żądania między witryną źródłową a docelową podczas Remote Sync. Te filtry są przydatne w konfiguracjach z uwierzytelnianiem na poziomie serwera, regułami zapory, niestandardowymi nagłówkami lub ograniczeniami hostingu, które mogą uniemożliwić poprawne działanie połączenia.
Obchodzenie Apache Basic Authentication
Jeśli witryna docelowa jest za „Apache Basic Authentication” po stronie serwera, musisz użyć tego filtra, by funkcja Remote Sync działała prawidłowo. Obejdzie to ochronę hasłem po stronie serwera:
add_filter('http_request_args', function ($parsed_args, $url) {
$host = 'https://example.com/';
$username = 'admin';
$password = 'password';
if (strpos($url, $expectedUrl) !== false) {
$parsed_args['headers']['Authorization'] = 'Basic ' . base64_encode($username . ':' . $password);
}
return $parsed_args;
}, 10, 2);Zmień wartości $allowedHost, $username i $password na ustawienia twojego serwera.