Mam zamiar napisać skrypt, aby pobrać świeżą instalację WordPress 3.0.1 i dodać wszystkie początkowe funkcje strony internetowej . To jest dla firmy, która instaluje wiele podobnych stron internetowych i potrzebuje standardowego punktu wyjścia w konfiguracji i danych.
- Zastanawiam się, czy ktoś już to zrobił, a jeśli tak, czy może udostępnić swój kod?
Przewiduję, że poprawimy ten skrypt za każdym razem, gdy tworzą nową stronę, więc kodowanie jest w porządku, chociaż ostatecznie (po wystarczającym doświadczeniu) chciałbym przekonwertować na wtyczkę.
Oto podstawowa lista zadań, które moim zdaniem będą potrzebne (zakładam, że zacząłem z WordPress 3.0.1 już zainstalowanym, a moje niestandardowe wtyczki i motyw niestandardowy skopiowane do odpowiednich katalogów) :
// Create users for the current site
// Delete Hello Dolly Plugin
// Download, Install and Activate repository plugins
// Activate Custom Plugins (assume the plugins are already there)
// Activate Custom Theme
// Delete Hello Post
// Delete Comment on Hello Post
// Create Pages with Starter Content
// Create Initial Custom Post Types with Starter Content
// Create Multiple Menus
// Create Menu Items for those Menus linking to Pages and wp-login.php
// Create Initial Taxonomy Terms
// Set Desired Permalinks Setting
// Set Static Front Page Setting
To wszystko (chociaż mogę się w tym dowiedzieć więcej).
Ponownie szukam kodu, który mogę po prostu skopiować i zmodyfikować, aby nie musiałem samodzielnie wymyślać wszystkich tych szczegółów (co nie jest trudne, po prostu żmudne i czasochłonne) .
Och, jeszcze jedno, muszę zacząć od tego teraz, więc im szybciej, tym lepiej! :-)
źródło
Create Menus for Custom Pages
? Masz na myśli poszczególne obszary menu na niektórych stronach lub co?Odpowiedzi:
Jak wspomniałem , od razu zacznę pracować nad tą potrzebą, więc robię postępy. Biorąc pod uwagę, że je przewracam, pomyślałem, że najlepiej zacząć je publikować. Mimo to, jeśli ktoś inny może / opublikuje (niektóre) części, których nie zrobiłem, z przyjemnością pozwolę Ci skopiować wszystko, czego nie zrobiłem, i wybierz odpowiedź jako najlepszą odpowiedź. Do tego czasu zacznę pisać kod.
Pierwsza rzecz: obejmują
wp-load.php
:Ponieważ tworzymy samodzielny plik w katalogu głównym witryny, aby uruchomić inicjalizację, która będzie używana tylko do „bootstrapowania” witryny (nazwałem moją
/my-init.php
) , zaczynamy od włączenia/wp-load.php
funkcji API WordPress:Tworzenie użytkowników dla witryny
Użyjemy
wp_insert_user()
funkcji znajdującej się w,/wp-includes/registration.php
aby utworzyć naszych użytkowników. Ten plik nie jest domyślnie ładowany, więc będziemy musieli załadować go sami z wywołaniemrequire_once()
.Użyjemy również tej
get_user_by()
funkcji, aby najpierw sprawdzić, czy użytkownik został już utworzony; nie trzeba uruchamiać kodu dwa razy, jeśli nie. UWAGA: wzór ten nastąpi; np. nasz skrypt nie powinien powielać ani zastępować niczego, jeśli zostanie wywołany wiele razy, szczególnie po dodaniu lub zmianie danych przez użytkownika dla dowolnego elementu, który planujemy zainicjować.Usuwanie wtyczki „Hello Dolly”
Aby usunąć wtyczkę „Hello Dolly” ( przepraszam Matt ) użyjemy tej
delete_plugins()
funkcji.delete_plugins()
oczekuje tablicy ścieżek do plików względem/wp-content/includes/
katalogu. W przypadku wtyczki Hello Dolly ścieżka pliku jest po prostu,hello.php
ponieważ wtyczka Hello Dolly nie jest przechowywana we własnym katalogu, ale w przypadku większości wtyczek będzie miała postać{$subdir}\{$filename}.php
; tzn. ścieżka pliku dla Akismet toakismet/akismet.php
.Jednak
delete_plugins()
nie jest dostępny, dopóki go nie uwzględnimy,/wp-admin/includes/plugin.php
i istnieje również zależność,wp-admin/includes/file.php
więcrequire_once()
oboje przed zadzwonieniemdelete_plugins()
. Na koniec używamyWP_PLUGIN_DIR
stałej w połączeniu z,file_exists()
aby sprawdzić, czy główny plik wtyczki istnieje, zanim spróbujemy go usunąć ( to nie ma znaczenia, jeśli spróbujemy usunąć brakujący plik, ale bardziej elegancko jest najpierw sprawdzić i być może będziesz musiał wiedzieć, jak to zrobić z innego powodu) :Pamiętaj, że czasami
delete_plugins()
zawodzi z powodu uprawnień do plików lub z powodu faktu, że wtyczka jest obecnie aktywowana lub z innego powodu, który musisz najpierw rozwiązać, ale w naszym przypadku użycia Hello Dolly odchodzi bez walki.Pobieranie, instalowanie i aktywowanie wtyczek repozytorium
Tak naprawdę nie muszę teraz pobierać wtyczek z repozytorium (myślałem, że byłoby miło mieć taką możliwość) , pozwolimy, aby to wymaganie się zmieniło i wrócimy do niego później.
Aktywowanie wtyczek
Następnie aktywujemy własne niestandardowe wtyczki. Zakładamy, że już przesłaliśmy je do katalogu wtyczek i wszystko, co musimy zrobić, to aktywować je dla WordPress. ( Uwaga : ta technika będzie działać również w przypadku aktywacji wtyczek repozytorium, po prostu nie pobierze i nie zainstaluje ich najpierw).
Skorzystamy z
activate_plugin()
funkcji, któradelete_plugins()
wymaga/wp-admin/includes/plugin.php
włączenia, ale nie jest potrzebna,/wp-admin/includes/file.php
jeśli potrzebujesz tylko zautomatyzować aktywację, a nie usuwanie.Ponownie przetestujemy istnienie (nie trzeba aktywować, jeśli nie istnieje, co?), A także zweryfikujemy za pomocą
is_plugin_active()
funkcji, że wtyczka nie została jeszcze aktywowana. Uwaga: Tym razem użyłem kilku zmiennych ($plugin_filepath
i$plugin_dir
), aby nie powielać identyfikatora wtyczki wiele razy.Poniższy przykład aktywuje wtyczkę,
my-custom-plugin.php
która znajduje się wmy-custom-plugin
podkatalogu:Aktywowanie preferowanego motywu
Aktywacja motywu jest nieco łatwiejsza niż usunięcie lub aktywacja wtyczki, mówiąc wprost; jedno wywołanie funkcji jest wszystko, co jest wymagane:
switch_theme()
.switch_theme()
Funkcja przyjmuje dwa (2) parametry: szablon i stylów . Cóż, przynajmniej tak nazywają się parametry. Możesz być bardziej zaznajomiony z terminami Temat nadrzędny i Temat podrzędny .Zakładając, że utworzyłeś motyw podrzędny z domyślnym motywem TwentyTen, który zawiera WordPress jako motyw nadrzędny, i nazwałeś go „moim niestandardowym motywem” i umieściłeś go w
/wp-content/themes/my-custom-theme
katalogu, możesz aktywować swój motyw za pomocą tego połączenia:Ale co, jeśli nie jest to motyw podrzędny? To proste, wystarczy podać identyfikator ślimaka katalogu / motywu (tj. Nazwę podkatalogu
/wp-content/themes
zawierającego motyw) jako oba parametry. Zakładając, że chcesz włączyć motyw tematyczny przez Ian D Stewart pan rozmowęswitch_theme()
tak:Osobiście uważam, że śledzenie obu szczegółów tutaj jest trochę dziwne, więc napisałem funkcję o
activate_my_theme()
tej nazwie, która najpierw sprawdza, czyget_current_theme()
funkcja jest aktywowana, a jeśli nie, to ją aktywuje. Wystarczy, że powiesz mu motyw potomny (zwany również „arkuszem stylów”), a on obliczy dla Ciebie motyw nadrzędny (zwany również „szablonem”) , pobierając szczegóły zget_theme()
funkcji.Jeden kluczowy punkt, o którym należy pamiętać ; że
get_theme()
oczekuje funkcyjne mają być przekazane na nazwę tego tematu dziecka, NIE jest to identyfikator katalogu ślimak / motywu. (Nazwa pochodzi od sekcji „Nazwa motywu:” w nagłówkustyle.css
pliku motywu . Na szczęścieget_current_theme()
funkcja zwraca również nazwę).Po sprawdzeniu nagłówka w
style.css
pliku domyślnego motywu WordPress Twenty Ten widzimy, że jego nazwa to w rzeczywistości'Twenty Ten'
:Usuwanie posta „Hello World”
Następnie chcemy usunąć post „Hello World” . Być może zauważyłeś, że @Rarst pokazał nam, jak korzystać z
wp_delete_post()
funkcji, której dokładnie potrzebujemy. Jak wyjaśnił, drugi parametr całkowicie usunie post, w przeciwieństwie do przeniesienia go do kosza, a pierwszym parametrem jest$post->ID
.Oczywiście byłoby miło móc określić ślimak zamiast
$post->ID
i dlatego postanowiłem znaleźć sposób, aby to zrobić. Po jakimś spelunkowaniu odkryłem, że WordPress ma niestety nazwaną funkcję,get_page_by_path()
która w rzeczywistości pozwala nam wyszukać dowolny typ postu przez jego ślimak (jest niestety nazwany, ponieważ możesz go przeoczyć, próbując znaleźć coś, co działa z typami postów innymi niż'page'
).Ponieważ
get_page_by_path()
miniemy stałą zdefiniowaną w WordPressOBJECT
, zwróci nam post w postaci obiektu posta. W przypadku trzeciego parametru przekazaliśmy,'post'
aby wskazać, że chcemy, aby wyszukiwał typy wpisów'post'
. Ponieważget_page_by_path()
zwróci potrzebny nam post lub zwróci,null
jeśli żaden post nie pasuje do ślimaka, możemy sprawdzić, czy istnieje i jednocześnie wyszukać:Uwaga: Moglibyśmy uruchomić kod, aby usunąć każdy post w bazie danych, ale gdybyśmy tak zrobili, nie moglibyśmy ponownie uruchomić tego kodu po dodaniu postów, które chcemy zachować, i to było jedno z naszych ograniczeń projektowych.
Kolejny...
Będę się do tego dodawał, jak to wymyślę, dopóki nie skończę lub dopóki ktoś inny nie pomoże.
źródło
Ustaw pożądane łącza bezpośrednie
Nowy (niesamowity) projekt motywu, na który natknąłem się w tym tygodniu, który mocno koncentruje się na funkcjonalności HTML5 / CSS3, ma własny skrypt „bootstrap” do tworzenia niektórych treści typu szablon, włączania ustawień permalink, ustawiania katalogu głównego instalacji witryny itp. Te są funkcje są wywoływane przy aktywacji motywu. Projekt nazywa się Roots, a kod można pobrać tutaj ; Nie biorę za ten kod. To powiedziawszy, oto kod do automatycznego ustawiania / year / postname jako struktury permalink (i haki aktywacyjne poniżej dla globalnego $ pagenow są wyjaśnione tutaj: http://foolswisdom.com/wp-activate-theme-actio/ .) .
?>
źródło
Usuń Hello Post (z komentarzem)
wp_delete_post( 1, true );
Prosto z
wp_delete_post()
dokumentów. Drugi parametr nukuje go całkowicie, zamiast przechodzić do kosza.Utwórz menu
Spowoduje to utworzenie nowego menu i dodanie do niego wszystkich istniejących stron. Nie jestem pewien, czy jest to całkowicie poprawne, nie mogłem uzyskać pozycji menu, aby pokazać
Page
między innymi etykietę. W każdym razie mój mózg się topi, więc robię sobie przerwę. Może ktoś będzie w stanie uaktualnić to do czegoś bardziej niezawodnego.źródło
Jeśli dobrze to rozumiem, potrzebujesz go do początkowej instalacji - obawiam się, że twoje podejście jest całkowicie błędne.
O wiele lepszym, łatwiejszym i ustandaryzowanym sposobem jest utworzenie install.php i umieszczenie go w folderze wp-content - jest on automatycznie ładowany podczas instalacji.
Tam możesz umieścić własną funkcję wp_install (jak używa własna funkcja wordpress if (! Function_exist)), dzięki czemu możesz łatwo skonfigurować opcje, aktywować wtyczki, wypełniać początkowe posty, kategorie, tagi, użytkowników ...
Druga opcja może dotyczyć sytuacji, w której chcesz wyczyścić już istniejące wp (np. Dla wersji demonstracyjnej konfigurowanej co 30 minut za pomocą crona) - możesz a) tratować bazę danych i skorzystać z powyższej procedury lub utworzyć wtyczkę, która wykona podobnie.
źródło
install.php
, a po drugie, istnieją inne przypadki użycia, w którychinstall.php
nie ma zastosowania. Tak,install.php
ma swoje zastosowanie, ale nie zajmuje się szczegółami ani nie sugeruje panaceum.Spójrz na ten skrypt instalacyjny. https://github.com/Pravdomil/WP-Quick-Install
Biorę twoje pomysły i trochę kodu i tworzę coś, czego prawdopodobnie szukasz.
Funkcje obejmują konfigurację bazy danych, różne języki, tworzenie użytkowników, ustawianie podstawowych ustawień witryny, usuwanie domyślnych wtyczek i szablonów, pobieranie instalacji i aktywacji wtyczek i motywów, domyślnego awatara, permalinki, statyczną stronę główną.
Nie krępuj się przyczynić.
źródło