Ich bin im Begriff, ein Skript zu schreiben , um eine Neuinstallation von WordPress 3.0.1 durchzuführen und alle anfänglichen Funktionen für eine Website hinzuzufügen . Dies ist für ein Unternehmen gedacht, das viele ähnliche Websites installiert und einen Standard-Ausgangspunkt für Konfiguration und Daten benötigt.
- Ich frage mich, ob jemand dies bereits getan hat und wenn ja, ob er seinen Code teilen kann.
Ich stelle mir vor, dass wir dieses Skript jedes Mal optimieren, wenn sie eine neue Site erstellen, so dass eine harte Codierung in Ordnung ist, obwohl ich (nach ausreichender Erfahrung) irgendwann in ein Plugin konvertieren möchte.
Hier ist die grundlegende Liste der Aufgaben, die ich für erforderlich halte (vorausgesetzt, ich habe mit WordPress 3.0.1 begonnen und meine benutzerdefinierten Plugins und Designs wurden in die entsprechenden Verzeichnisse kopiert) :
// 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
Das war's auch schon (obwohl ich mehr identifizieren kann, wenn ich darauf eingehe.)
Ich bin wieder auf der Suche nach Code, den ich einfach kopieren und ändern kann, damit ich nicht all diese Details selbst herausfinden muss (was nicht schwer, nur mühsam und zeitaufwendig ist) .
Oh noch eine Sache, ich muss jetzt damit anfangen, je früher, desto besser! :-)
quelle
Create Menus for Custom Pages
? Meinen Sie einzelne Menübereiche auf einigen Seiten oder was?Antworten:
Wie ich bereits erwähnte, würde ich sofort anfangen, an diesem Bedarf zu arbeiten, damit ich Fortschritte mache. Angesichts der Tatsache, dass ich sie niederwerfe, denke ich, dass es am besten ist, mit dem Posten zu beginnen. Dennoch, wenn jemand anderes (einige) Teile posten kann / wird, die ich nicht getan habe, lasse ich Sie gerne kopieren, was ich getan habe, und wähle Ihre Antwort als beste Antwort aus. Bis dahin werde ich den Code veröffentlichen.
Erste Sache: Beinhaltet
wp-load.php
:Da wir eine eigenständige Datei im Stammverzeichnis der Website erstellen, um die Initialisierung auszuführen, die nur zum "Booten" einer Site (ich nannte meine
/my-init.php
) verwendet wird , beginnen wir mit/wp-load.php
dem Laden der WordPress-API-Funktionen:Erstellen von Benutzern für die Site
Wir werden die
wp_insert_user()
Funktion in verwenden/wp-includes/registration.php
, um unsere Benutzer zu erstellen. Diese Datei wird standardmäßig nicht geladen, daher müssen wir sie bei einem Aufruf von selbst ladenrequire_once()
.Wir werden die
get_user_by()
Funktion auch verwenden , um zunächst festzustellen, ob der Benutzer bereits erstellt wurde. Sie müssen den Code nicht zweimal ausführen, wenn dies nicht der Fall ist. HINWEIS: Dies ist ein Muster, das folgen wird. Beispiel: Unser Skript sollte nichts duplizieren oder überschreiben, wenn es mehrmals aufgerufen wird, insbesondere nachdem Benutzer Daten für Elemente hinzugefügt oder geändert haben, die initialisiert werden sollen.Löschen des "Hello Dolly" Plugins
Zum Löschen des "Hello Dolly" -Plugins ( sorry Matt ) verwenden wir die
delete_plugins()
Funktion.delete_plugins()
erwartet ein Array von Dateipfaden, die relativ zum/wp-content/includes/
Verzeichnis sind. Für das Hello Dolly- Plugin ist der Dateipfad einfach,hello.php
da das Hello Dolly- Plugin nicht in einem eigenen Verzeichnis gespeichert ist, sondern für die meisten Plugins in der Form von{$subdir}\{$filename}.php
; dh der Dateipfad für Akismet istakismet/akismet.php
.Allerdings
delete_plugins()
ist nicht verfügbar, bis wir aufgenommen haben/wp-admin/includes/plugin.php
und es gibt auch eine Abhängigkeit mit,wp-admin/includes/file.php
so dass wirrequire_once()
beide, bevor wir anrufendelete_plugins()
. Schließlich verwenden wir dieWP_PLUGIN_DIR
Konstante kombiniert mit, umfile_exists()
zu sehen, ob die Haupt-Plugin-Datei existiert, bevor wir versuchen, sie zu löschen. Dies ist nicht wichtig, wenn wir versuchen, eine fehlende Datei zu löschen aus irgendeinem anderen Grund) :Beachten Sie, dass dies manchmal
delete_plugins()
aufgrund von Dateiberechtigungen oder der Tatsache, dass ein Plugin derzeit aktiviert ist, oder aufgrund eines anderen Grundes, den Sie zuerst beheben müssen, fehlschlägt. Für unseren Anwendungsfall ist Hello Dolly jedoch kein Problem mehr .Herunterladen, Installieren und Aktivieren von Repository-Plugins
Ich muss im Moment eigentlich keine Plugins aus dem Repository herunterladen (ich dachte, es wäre nur schön, sie zu haben). Wir lassen diese Anforderung gleiten und sehen sie später noch einmal durch.
Aktivierung Ihrer Plugins
Als nächstes werden unsere eigenen Plugins aktiviert. Wir gehen davon aus, dass wir sie bereits in das Plugin-Verzeichnis hochgeladen haben und sie dafür für WordPress aktivieren müssen. ( Hinweis : Diese Technik funktioniert auch für die Aktivierung von Repository-Plugins, sie werden jedoch nicht zuerst heruntergeladen und installiert.)
Wir werden die Verwendung
activate_plugin()
Funktion , die gernedelete_plugins()
erfordert/wp-admin/includes/plugin.php
aufgenommen, aber nicht müssen ,/wp-admin/includes/file.php
falls Sie nur benötigen , Aktivierung und nicht die Löschung zu automatisieren.Wir werden erneut auf Existenz testen (müssen nicht aktiviert werden, wenn nicht, was?) Und wir werden auch mithilfe der
is_plugin_active()
Funktion überprüfen, ob das Plugin noch nicht aktiviert wurde. Hinweis: Ich habe dieses Mal ($plugin_filepath
und$plugin_dir
) einige Variablen verwendet , um die Plugin-ID nicht mehrmals zu duplizieren.In unserem folgenden Beispiel wird das Plugin aktiviert, das
my-custom-plugin.php
sich immy-custom-plugin
Unterverzeichnis befindet:Aktivieren Sie Ihr bevorzugtes Thema
Das Aktivieren eines Themas ist vergleichsweise einfacher als das Löschen oder Aktivieren eines Plugins. ein Funktionsaufruf ist alles , was erforderlich ist:
switch_theme()
. Dieswitch_theme()
Funktion akzeptiert zwei (2) Parameter: die Vorlage und das Stylesheet . Nun, zumindest heißen die Parameter so. Möglicherweise kennen Sie die Begriffe Übergeordnetes Thema und Untergeordnetes Thema besser .Vorausgesetzt , dass Sie ein erstellt haben Child Theme mit dem Standard - TwentyTen Thema , das mit Wordpress ist das kommt Geordnetes Thema und man nennt es „My Custom Theme“ und in das platziert
/wp-content/themes/my-custom-theme
Verzeichnis, dann würden Sie Ihr Thema mit diesem Anruf aktivieren:Aber was ist, wenn es kein Kinderthema ist? Das ist ganz einfach : Übergeben Sie als beide Parameter den Verzeichnis-Slug / Theme-Bezeichner (dh den Namen des Unterverzeichnisses, aus
/wp-content/themes
dem Ihr Theme stammt) . Angenommen, Sie möchten das Thematische Thema von Ian D Stewart aktivieren, das Sie folgendermaßen aufrufenswitch_theme()
:Persönlich finde ich es etwas umständlich, beide Details hier im Auge zu behalten, deshalb habe ich eine Funktion namens geschrieben
activate_my_theme()
, die zuerst prüft, ob dieget_current_theme()
Funktion funktioniert, und falls nicht, sie aktiviert. Sie müssen nur das untergeordnete Thema (auch als "Stylesheet" bezeichnet) angeben und das übergeordnete Thema (auch als "Vorlage" bezeichnet) ermitteln, indem Sie die Details aus derget_theme()
Funktion abrufen .Ein wichtiger Punkt, dessen Sie sich bewusst sein sollten ; Die
get_theme()
Funktion erwartet, dass der Name des untergeordneten Themas übergeben wird, NICHT die Verzeichnis-Slug / Theme-ID. (Der Name stammt aus dem Abschnitt "Themenname:" in der Kopfzeile derstyle.css
Themendatei. Glücklicherweise gibt dieget_current_theme()
Funktion auch den Namen zurück.)Wenn man den Header in der
style.css
Datei des WordPress-Standardthemas Twenty Ten betrachtet , sieht man, dass der Name tatsächlich so lautet'Twenty Ten'
:Löschen der „Hallo Welt“ Beitrag
Als nächstes wollen wir den Beitrag "Hallo Welt" löschen . Vielleicht haben Sie gesehen, dass @Rarst uns gezeigt hat, wie man die
wp_delete_post()
Funktion verwendet, die genau das ist, was wir brauchen. Wie er erklärte, löscht der zweite Parameter den Beitrag vollständig, anstatt ihn in den Papierkorb zu verschieben, und der erste Parameter ist der$post->ID
.Natürlich wäre es schön, den Slug anstelle des zu spezifizieren,
$post->ID
und so entscheide ich mich, einen Weg zu finden, dies zu tun. Nach einigem Spelunking fand ich , dass Wordpress eine leider benannte Funktion aufgerufen hat ,get_page_by_path()
die tatsächlich ermöglicht es uns , durch seine Slug all Post - Typen zu sehen (es leider genannt, weil man es übersehen könnte , wenn etwas , das funktioniert mit Post - Typen anders als zu finden versuchen'page'
.)Da wir
get_page_by_path()
die von WordPress definierte Konstante übergebenOBJECT
, wird ein Beitrag in Form eines Beitragsobjekts an uns zurückgegeben. Für den dritten Parameter, den wir übergeben haben'post'
, geben wir an, dass er Post-Typen von nachschlagen soll'post'
. Daget_page_by_path()
das von uns benötigte Post-Objekt zurückgegeben wird odernull
wenn kein Post mit dem Slug übereinstimmt, können wir das Vorhandensein überprüfen und gleichzeitig eine Suche durchführen:Hinweis: Wir hätten Code ausführen können, um jeden Beitrag in der Datenbank zu löschen. Wäre dies jedoch der Fall, könnten wir diesen Code nicht erneut ausführen, sobald wir die Beiträge hinzugefügt hätten, die wir behalten möchten. Dies war eine unserer Entwurfsbeschränkungen.
Nächster...
Ich werde noch etwas hinzufügen, bis ich fertig bin oder bis jemand anderes hilft.
quelle
Gewünschte Permalinks setzen
Ein neues (fantastisches) Theme-Projekt, das ich diese Woche kennengelernt habe und das sich stark auf HTML5 / CSS3-Funktionalität konzentriert, hat ein eigenes 'Bootstrap'-Skript zum Erstellen von Boilerplate-Inhalten, zum Einbeziehen von Permalink-Einstellungen, zum Festlegen eines relativen Stammverzeichnisses für die Site-Installation usw. Diese Funktionen werden bei der Themenaktivierung aufgerufen. Das Projekt heißt Roots und der Code kann hier heruntergeladen werden . Ich nehme keine Gutschrift für diesen Code. Das heißt, hier ist der Code zum automatischen Setzen von / Jahr / Postname als Permalink-Struktur (und die Aktivierungs-Hooks für globales $ pagenow werden hier erklärt: http://foolswisdom.com/wp-activate-theme-actio/ ). .
?>
quelle
Hallo Beitrag löschen (mit Kommentar)
wp_delete_post( 1, true );
Direkt von
wp_delete_post()
Dokumentation. Der zweite Parameter macht es komplett kaputt, anstatt in den Papierkorb zu wechseln.Erstellen Sie Menüs
Dadurch wird ein neues Menü erstellt und alle vorhandenen Seiten werden als Elemente hinzugefügt. Ich bin mir nicht sicher, ob es völlig korrekt ist. Ich konnte keine Menüpunkte finden, um
Page
unter anderem das Etikett anzuzeigen. Trotzdem schmilzt mein Gehirn und ich mache eine Pause. Vielleicht kann jemand ein Upgrade auf etwas Zuverlässigeres durchführen.quelle
Wenn ich es gut verstehe, willst du es für die Erstinstallation - dann befürchte ich, dass dein Ansatz völlig falsch ist.
Viel besser, einfacher und standardisierter ist es, install.php zu erstellen und in den Ordner wp-content zu legen - es wird automatisch während der Installation geladen.
Dort können Sie Ihre eigene wp_install-Funktion platzieren (wie es die wordpress-eigene Funktion if (! Function_exist) verwendet), um dort einfach Ihre Optionen einzurichten, Plugins zu aktivieren, erste Beiträge, Kategorien, Tags, Benutzer zu füllen ...
Die zweite Option ist möglicherweise für Situationen vorgesehen, in denen Sie das bereits vorhandene WP löschen möchten (z. B. für eine Demoversion, die alle z. B. 30 Minuten mit cron eingerichtet wird) gleich.
quelle
install.php
, und zweitens gibt es andere Anwendungsfälle, in denen diesinstall.php
nicht zutreffend ist. Ja, esinstall.php
hat seinen Nutzen, aber es kümmert sich nicht um die Details und ist auch nicht das Allheilmittel, von dem Sie meinen, dass es das ist.Schauen Sie sich dieses Installationsskript an. https://github.com/Pravdomil/WP-Quick-Install
Ich nehme Ihre Ideen und einen Code und erstelle etwas, wonach Sie wahrscheinlich suchen.
Features sind Setup-Datenbank, verschiedene Sprachen, Benutzer erstellen, grundlegende Site-Einstellungen festlegen, Standard-Plugins und -Vorlagen löschen, Plugins und Designs herunterladen, installieren und aktivieren, Standard-Avatar, Permalinks, statische Startseite.
Fiel frei, um einen Beitrag zu leisten.
quelle