Actions i Filters – dostosuj WP Staging

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
For using the hooks and filters, we recommend installing our separate plugin, named  WP STAGING Hooks, or using the hooks and filters on this page in a 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

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.

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:

PHP
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.

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.

PHP
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:

PHP
​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.

PHP
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:

  1. sprawdzić wartość bazy
  2. wykryć, czy zawiera zakodowane dane
  3. zdekodować wartość
  4. uruchomić str_replace() z tablicami search i replace
  5. ponownie zakodować wartość
  6. 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:

  1. Sprawdza, czy wartość bazy wygląda jak JSON.
  2. Dekoduje JSON.
  3. Rekursywnie przechodzi przez wszystkie zagnieżdżone tablice i obiekty.
  4. Próbuje zdekodować base64 każdą wartość ciągu.
  5. Uruchamia wartości search/replace WP Staging na zdekodowanej treści.
  6. Jeśli coś się zmieniło, ponownie koduje zmodyfikowaną wartość w base64.
  7. 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.com przez https://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 $data niezmienione, 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:

PHP
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
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.

PHP
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:

['=', '&gt;', '&gt;=', '&lt;', '&lt;=', '&lt;&gt;', '!=', 'LIKE', 'NOT LIKE']

PHP
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:

['=', '&gt;', '&gt;=', '&lt;', '&lt;=', '&lt;&gt;', '!=', 'LIKE', 'NOT LIKE']

PHP
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.

PHP
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.

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.

PHP
/**
* 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:

  • .htaccess
  • Absolute/path/to/WordPress/directory/wp-content/db.php
  • Absolute/path/to/WordPress/directory/wp-content/object-cache.php
  • Absolute/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:

PHP
/**
* 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.

PHP
/**
* 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.

PHP
**
* 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:

PHP
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.

PHP
// 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:

PHP
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:

PHP
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ą.

PHP
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.

PHP
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:

['=', '&gt;', '&gt;=', '&lt;', '&lt;=', '&lt;&gt;', '!=', '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.

PHP
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:

['=', '&gt;', '&gt;=', '&lt;', '&lt;=', '&lt;&gt;', '!=', '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.

PHP
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:

PHP
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:

PHP
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.

PHP
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
<?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ą.

PHP
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:

PHP
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:

PHP
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.

PHP
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.

PHP
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:

PHP
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:

PHP
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.

PHP
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.

PHP
/**
 * 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:

PHP
// 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:

PHP
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:

PHP
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:

PHP
//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.

PHP
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.

PHP
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:

PHP
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.

PHP
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ć:

PHP
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.

PHP
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:

PHP
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.

PHP
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.

Updated on 3 czerwca, 2026

Rene Hermenau

Autor: Rene Hermenau

O autorze: René Hermenau jest założycielem WP STAGING. Zajmuje się kopiami zapasowymi WordPressa, środowiskami stagingowymi, migracjami, obsługą baz danych oraz bezpiecznymi procesami wdrażania.