Jak zainstalować WordPress za pomocą Composer: Instrukcja instalacji krok po kroku

Opublikowany: 2023-02-28

Wprowadzenie: Dlaczego WordPress opiera się na Composer?

Jak każda inna aplikacja, Twoja witryna WordPress jest najbezpieczniejsza, gdy możesz zapewnić powtarzalne kompilacje i możliwe do zatwierdzenia aktualizacje kodu i jego zależności. Twoja infrastruktura jest zatwierdzana za pomocą zestawu plików konfiguracyjnych, które określają, której wersji PHP i MariaDB chcesz użyć. Jest to najlepszy sposób na zapewnienie powtarzalności projektu podczas opracowywania nowych funkcji.

Rdzeń WordPressa oraz jego motywy i wtyczki powinny idealnie działać w ten sam sposób, ale często tak nie jest. Panel administracyjny WordPress zapewnia przyciski jednym kliknięciem, aby zaktualizować wszystkie te komponenty, gdy są nieaktualne lub w inny sposób oczekują dostępu do zapisu w systemie plików w celu wprowadzenia zmian konfiguracyjnych w czasie wykonywania. Rozwój w ten sposób ma jednak swoje konsekwencje.

Po pierwsze, nie zawsze będziesz mieć dostęp do zapisu w systemie plików w czasie wykonywania. Tak więc poleganie na tym mechanizmie aktualizacji i zmian konfiguracji jest całkowicie ograniczone dla wielu rozwiązań hostingowych. Z drugiej strony, jeśli masz dostęp do zapisu w środowisku wykonawczym, w którym obecnie hostujesz, instalacja nowego modułu lub motywu stanowi nietrywialne zagrożenie bezpieczeństwa (gdy źródło jest nieznane).

Ale, co być może najważniejsze, aktualizacja WordPressa w czasie wykonywania oddziela stan witryny od kodu w repozytorium. Kolega pracujący nad nową funkcją w swoim lokalnym klonie projektu równie dobrze może być pełną wersją za działającą witryną. W wyniku tego przepływu pracy możesz wprowadzić błędy o nieznanych (i nieprzetestowanych) konsekwencjach.

Zalety korzystania z Composera

Biorąc pod uwagę powyższe fakty, zarządzanie witryną WordPress za pomocą Composera ma wyraźne zalety. Po pierwsze, umożliwia jawne zdefiniowanie zależności w zatwierdzonym pliku (composer.lock). Ten plik blokady jest generowany na podstawie bardziej opisowej listy ograniczeń zależności (composer.json) podczas instalowania zależności i staje się częścią historii zatwierdzania projektu. Od tego momentu każda nowa gałąź będzie działać od identycznego zbioru zależności do dokładnego skrótu zatwierdzenia. W tym momencie nie ma znaczenia, kto wnosi wkład w projekt, a nawet gdzie zostanie wdrożony — wszędzie obowiązuje ten sam kod.

Composer eliminuje również konieczność umieszczania dużej ilości zewnętrznego kodu w repozytorium. W przypadku WordPressa rezygnacja z Composera zwykle wymaga zatwierdzenia całego kodu motywu, a nawet rdzenia WordPressa i samych wtyczek do własnego projektu. Poza tym, że repozytorium jest niepotrzebnie duże i powolne w klonowaniu, aktualizacja tych kopii staje się żonglerką, z którą nikt nie musi sobie radzić.

Dzięki Composer możesz dodawać i aktualizować zależności do swojego projektu, a następnie blokować ich dokładne wersje, aby każda nowa gałąź otrzymywała tę samą aktualizację. Gdyby aktualizacja została przeprowadzona na wdrożonej witrynie w czasie wykonywania, musiałbyś najpierw pamiętać o git pull.

Instalowanie rdzenia WordPress za pomocą Composer

W ten sam sposób korzystanie z Composer sprawia, że ​​nie musisz zatwierdzać całego WordPressa w swoim repozytorium, ponieważ możesz dodać go jako zależność. Można to zrobić na kilka sposobów (np. Bedrock), w zależności od tego, ile założeń chcesz przyjąć dla swojej konfiguracji i struktury projektu. Najprostszy wykorzystuje widelec John Bloch Composer, aby dodać instalator do twoich kompilacji dla WordPress:

 $ kompozytor wymaga johnpbloch/wordpress-core-installer
$ kompozytor wymaga johnpbloch/wordpress-core

Powyższe polecenie utworzy plik composer.json i zainstaluje rdzeń WordPress w katalogu WordPress. Plik composer.json będzie wyglądał tak

 {
    "wymagać": {
        "johnpbloch/wordpress-core-installer": "^2.0",
        "johnpbloch/wordpress-core": "^6.1"
    },
    "konfiguracja": {
        "zezwalaj na wtyczki": {
            „johnpbloch/wordpress-core-installer”: prawda
        }
    }
}

Mamy rdzeń WordPress w folderze WordPress. Ale musimy skopiować plik index.php poza katalog WordPress, abyśmy mogli skierować serwer WWW do katalogu głównego.

Aby w pełni zarządzać WordPress za pomocą Composer , musimy użyć innego katalogu dla treści wp zamiast domyślnego, WordPress/wp-content.

Utwórzmy nowy katalog w katalogu głównym projektu o nazwie wp-content.

Skopiuj plik index.php z folderu WordPress. Musimy zmienić lokalizację pliku wp-blog-header.php, w którym znajduje się nasz katalog WordPress.

Po zmianie plik index.php będzie wyglądał tak

 <?php 
zdefiniuj („WP_USE_THEMES”, prawda);
wymagaj (nazwa_katalogu(__PLIK__). '/wordpress/wp-blog-header.php');

Musimy utworzyć plik .htaccess w katalogu głównym o następującej zawartości:

 # ROZPOCZNIJ WordPressa
<Moduł_rewrite.c>
Przepisz silnik włączony
Przepisz Bazę /
RewriteRule ^index.php$ - [L]
Warunek przepisania %{NAZWA_PLIKU_WNIOSKU} !-f
Warunek przepisania %{NAZWA_PLIKU_WNIOSKU} !-d
Przepisz regułę . /index.php [L]
</IfModule>
# KONIEC WordPressa

Przejdźmy dalej i skopiujmy przykładowy plik wp-config.php, a następnie dodajmy następujący kod:

 $domena = 'mojadomena.com;
define('WP_SITEURL', "https://{$domain}/wordpress");
zdefiniuj('WP_HOME',"https://{$domena}");
$httpHost = isset($_SERVER['HTTPS_HOST']) ? $_SERVER['HTTPS_HOST'] : $domena;
zdefiniuj ('WP_CONTENT_DIR', dirname( __FILE__). '/wp-content');
zdefiniuj („WP_CONTENT_URL”, „https://”. $httpHost. „/wp-content”);
/** Bezwzględna ścieżka do katalogu WordPress. */
if ( !zdefiniowane('ABSPATH') ) {
    define('ABSPATH', dirname(__FILE__) . '/wordpress');
}

Dodaliśmy WordPress w ABSPATH, ponieważ rdzeń WordPress znajduje się w /WordPress
Ponieważ plik wp-config.php zawiera poufne dane; nie zamieścimy go w naszym repozytorium poprzez utworzenie pliku .gitignore:

 /wp-config.php
/wordpress/
/wp-zawartość/
/sprzedawca/

Katalogi WordPress, wp-content i vendor również muszą zostać zignorowane, abyśmy mogli dodać je również do pliku .gitignore.

Uwaga: Musisz zmienić katalog wp-content na wypadek, gdybyś chciał dodać inną konwencję nazewnictwa dla swojej zawartości wp.

Nasz katalog główny projektu powinien wyglądać tak

 .git
gitignore
kompozytor.blokada
kompozytor.json
sprzedawca
wp-config.php
indeks.php
wordpress

Musisz utworzyć bazę danych i zmienić szczegóły w wp-config.php. Twoja witryna WordPress będzie nazywać się „mydomain.com”, a zaplecze WordPress będzie dostępne pod adresem mydomain.com/wordpress/wp-admin

Dodawanie wtyczek i motywów z repozytorium WordPress

Domyślnie Composer przegląda tylko repozytorium packagist.org. Ale nie zawiera wtyczek i motywów WordPress.

Aby móc pobierać wtyczki i motywy WordPress, musisz wskazać Composer w repozytorium wpackagist.org. Robisz to, dodając ten fragment konfiguracji do pliku composer.json:

 "repozytoria": [
  {
    "typ": "kompozytor",
    "url": "https://wpackagist.org",
    "tylko": [
      "wpackagist-plugin/*",
      "wpackagist-theme/*"
    ]
  }
],

Musimy również powiedzieć Composerowi, gdzie umieścić wtyczki i motywy. Wiąże się to z dodaniem nieco więcej konfiguracji do pliku composer.json:

 "dodatkowe": {
        "ścieżki-instalatora": {
            "wp-content/mu-plugins/{$name}/": [
                „typ: wordpress-muplugin”
            ],
           "wp-content/plugins/{$name}/": [
                „typ: wtyczka-wordpress”
            ],
           "wp-content/themes/{$name}/": [
                „typ: motyw wordpress”
            ]
        }
    }

Mając to na miejscu, możesz teraz zainstalować dowolną wtyczkę lub motyw z oficjalnych repozytoriów za pomocą polecenia composer require, tak jak zrobiliśmy to w przypadku instalacji WordPressa.

# Aby zainstalować wtyczkę, użyj tego formatu:

 kompozytor wymaga „wpackagist-plugin/:”

# Aby zainstalować motyw, użyj tego formatu:

 kompozytor wymaga „wpackagist-theme/:”

Ograniczenia wersji są skomplikowane, ale prawdopodobnie najprostszą formą do zapamiętania jest użycie symbolu wieloznacznego *. Aby zainstalować darmową wersję naszej wtyczki WP Migrate, korzystając z wersji 2.x, należy uruchomić:

composer require "wpackagist-plugin/wp-migrate-db:2.*"

Jeśli zawsze chciałeś, aby aktualizacje zapewniały najnowszą wersję, możesz użyć * jako ograniczenia wersji:

composer require "wpackagist-plugin/wp-migrate-db:*"

Przy pierwszym uruchomieniu takiego polecenia możesz zostać zapytany, czy chcesz „zaufać„ kompozytorowi / instalatorom ”, aby wykonali kod”. Jest to bezpieczne, ale pamiętaj, że pozwoli to Composerowi uruchomić kod na twoim komputerze.

Jeśli wszystko jest w porządku, powinieneś zainstalować wtyczkę (ale nie aktywowaną). Poleciłbym również zatwierdzenie zmian w Git w tym momencie.

Dodawanie wtyczek i motywów niestandardowych lub innych firm

To wszystko jest w porządku, jeśli chcesz mieć wtyczki i motywy z repozytorium. Ale co, jeśli chcesz dodać wtyczki innych firm, których nie ma w repozytorium wordpress.org, lub własny niestandardowy kod? Katalog WordPress nie znajduje się w Git, więc w jaki sposób kontrolujesz swoje własne rzeczy?

Niektórzy autorzy motywów i wtyczek obsługują niestandardowe repozytoria dla swoich wtyczek.

Niektóre motywy i wtyczki nie mogą używać żadnego repozytorium dla swoich wtyczek, na przykład płatnych wtyczek.

Ale jeśli to nie ma zastosowania, sztuczka polega na selektywnym anulowaniu ignorowania określonych katalogów za pomocą pliku .gitignore i dodaniu tych niestandardowych wtyczek i motywów w pliku composer.json.

Możemy również umieścić te wtyczki w innym katalogu, aby zainstalować je z pliku composer.json.

Ponieważ ignorujemy folder wtyczek w .gitignore, musimy utworzyć inny folder o nazwie dist,

W dist możemy mieć płatne i niestandardowe wtyczki i możemy je zainstalować z Composer.

  • odległość/
    • wtyczki/
    • motywy/
    • mu-plugins/

Musimy skopiować nasze niestandardowe wtyczki i motywy do odpowiedniego folderu.

I musimy utworzyć composer.json dla każdej wtyczki dodanej w dist/plugins.

Obecnie mamy advanced-custom-fields-pro, które jest płatne. Chcemy również dodać tę wtyczkę za pośrednictwem kompozytora w celu instalacji jednym kliknięciem i zautomatyzowania wdrożeń.

Musimy pobrać tę wtyczkę z portalu witryny autora i rozpakować ją w folderze dist/plugins/advanced-custom-fields-pro. I utwórz composer.json w tym samym folderze z następującą zawartością,

 {
   "name": "custom-plugins/acf-pro",

   "description": "Zaawansowane pola niestandardowe PRO",

   "wersja": "5.12.2",

   "typ": "wtyczka wordpress",

   "wymagać": {

       "kompozytor/instalator": "^1.0",
       "johnpbloch/wordpress-core": ">=5.4"
   }


}

Możemy tutaj dodać wersję i nazwę z niestandardowymi przedrostkami. I dodaj trochę kodu w głównym pliku composer.json, aby wywołać tę wtyczkę podczas instalacji.

W sekcji „repozytoria”: dodaj następujący kod w ostatniej,

 "repozytoria": [
{
     "typ": "ścieżka",

     "url": "dist/plugins/*",

     "opcje": {

       „dowiązanie symboliczne”: fałsz

     }

Masz również inne wpisy w sekcji repozytoriów. Aby zainstalować tę wtyczkę, mamy dwa sposoby, najpierw dodaj nazwę wtyczki z wersją w pliku

 "wymagać": {
     "custom-plugins/acf-pro": ">=5.12.2"
}

Lub uruchom następującą komendę, zainstaluje wtyczkę i doda powyższy wpis w pliku composer.json.

 $ kompozytor wymaga niestandardowych wtyczek/acf-pro

W ten sam sposób możemy zainstalować motywy i wtyczki mu.

W przypadku motywu musimy dodać lokalizację folderu motywu,

 "repozytoria": [
{
     "typ": "ścieżka",

     "url": "dist/themes/*",

     "opcje": {

       „dowiązanie symboliczne”: fałsz

     }

Konieczne jest dodanie pliku composer.json do niestandardowego motywu wraz ze szczegółami dotyczącymi nazwy i wersji. Korzystając z tej nazwy, możemy zainstalować motyw za pomocą polecenia Composer Require.

Podsumowując

Korzystanie z Composer to najskuteczniejsze podejście do zapewnienia bezpieczeństwa, aktualności i odtwarzalności WordPress. Composer umożliwia programistom łatwe dodawanie i aktualizowanie zależności w ich projektach oraz blokowanie ich dokładnych wersji, aby zapewnić, że każda nowa gałąź działa z tym samym kodem.

Dzięki tym zaletom Composer jest doskonałym wyborem do zarządzania projektami WordPress, zapewniając powtarzalne kompilacje i możliwe do zatwierdzenia aktualizacje.

Rozumiemy, że rozpoczęcie pracy z Composerem może być nieco przytłaczające. Jeśli masz jakiekolwiek pytania, nie wahaj się z nami skontaktować. Jesteśmy tutaj, aby pomóc Ci w pełni wykorzystać możliwości WordPressa.

Bibliografia:

    • https://docs.platform.sh/guides/wordpress/composer.html
    • https://deliciousbrains.com/storing-wordpress-in-git/
    • https://time2hack.com/composer-wordpress-deployment/