Kann ich eine Tabelle in meiner database erstellen, ohne ein Plugin zu erstellen?

Ich habe ein eingebautes Formular, das ich auf meiner WP-Website erstellt habe. Ich möchte die Eingaben in einer Tabelle in meiner DB speichern. Alle Tutorials, die erklären, wie man ein Talke erstellt, beinhalten die Tatsache, dass ich dafür ein Plugin erstellen muss.

Alle meine functionen sind in functions.php geschrieben und ich schreibe lieber die function, die dort auch die DB erstellt.

Wenn ich die function schreibe, die die Tabelle in functions.php erstellt – wird es mehrere Tabellen oder etwas ähnliches machen? oder funktioniert es nur einmal?

Kann ich nur eine mit PHPMYADMIN erstellen? oder es wird nicht die integrierte WordPress Security ect ‘enthalten?

Solutions Collecting From Web of "Kann ich eine Tabelle in meiner database erstellen, ohne ein Plugin zu erstellen?"

Als ich mit WordPress anfing, war ich Anti-Plugin. Ich wollte alles in der functions.php meines Themes hinzufügen. Als ich mir das Gesamtbild anschaute, machte es Sinn, einige functionalitäten in einem Plugin zu haben und zu belassen.

Es gibt viele Berichte darüber, was in ein Plugin gehen sollte und was in ein Thema einfließen sollte. Ich habe zum einen ein oder zwei Beiträge zu diesem Thema geschrieben, also tun Sie sich selbst den Gefallen und lesen Sie es weiter. Ich glaube, es wird sehr hilfreich und aufschlussreich sein.

functionen in einem Plugin und functionen in einem themes.functions.php macht genau die gleiche Arbeit, es gibt keinen Unterschied. Das einzige Problem ist, dass Sie keine function im Plugin deklarieren und in Ihrem Theme nicht erneut deklarieren können. Dies wird einen fatalen Fehler verursachen, der die Site zum Absturz bringt

Um Ihr Problem zu beantworten, ja, wenn Sie logisch darüber nachdenken, sollte Ihre functionalität in ein Plugin gehen, da dies Ihrer Site functionalität und nicht das Theme verleiht. Dies ist die functionalität, die Sie benötigen, wenn Sie Themen wechseln. Es ist einfach einfacher im Plugin, da Sie diesen Code nicht immer wieder in ein neues Thema schreiben oder kopieren müssen.

Aber die Entscheidung liegt immer bei Ihnen. Hinzufügen zu Ihrem Thema ist Ihre eigene Wahl, obwohl, wie gesagt, nicht wirklich empfohlen. Aber so oder so, der Code wird in einem Thema und in einem Plugin perfekt funktionieren, so dass Sie die Wahl haben, wo Sie ihn hinzufügen können

Ich habe das kürzlich nicht gemacht, aber 2014 habe ich in einigen WordPress-Projekten, in denen ich zusätzliche Tabellen brauche, Laravel-Komponenten verwendet.

Wenn Sie in WordPress eigene Tabellen erstellen möchten, indem Sie wpdb- und mysql-Abfragen verwenden. Aber mit den Laravel-databaseklassen habe ich das viel eleganter gemacht.

Ein kurzer Überblick wie ich das mache: (Hinweis: Zu der Zeit habe ich Laravel 4 Komponenten benutzt, habe ich nicht mit 5 probiert)

 "require": { "illuminate/database": "*", "illuminate/container": "*", "shuber/curl": "dev-master", "sunra/php-simple-html-dom-parser": "v1.5.0" }, 

Ich habe die notwendigen Pakete (erste zwei) mit Composer in functions.php (oder in einem functions-Plugin) installiert

Ich habe es verwendet, um einen Index von Zeitschriftenartikeln zu speichern, eine Recorder-class (nicht sehr SOLID-Ansatz, sorry)

 < ?php namespace Dion\Volumes; use Illuminate\Database\Capsule\Manager as Capsule; class Recorder { public static $table = 'volume_content'; public function __construct(Page $page){ $this->recordPage($page); } public static function createTables() { if( ! Capsule::schema()->hasTable(static::$table) ) { Capsule::schema()->create(static::$table, function($table) { $table->increments('id'); $table->string('volume'); $table->integer('month'); $table->integer('year'); $table->integer('page'); $table->longtext('page_content'); }); } } public function recordPage($page) { //check if exists $exists = Capsule::table(static::$table)->where('volume',$page->volume) ->where('page',$page->page)->get(); if( empty( $exists ) ) { $insert = Capsule::table(static::$table)->insert($page->toArray()); } else { $update = Capsule::table(static::$table)->where('volume',$page->volume) ->where('page',$page->page) ->update($page->toArray()); } } } 

und in der functions.php habe ich die Laravel database Komponente hinzugefügt und es so gemacht.

 global $wpdb; $capsule = new Capsule; $capsule->addConnection(array( 'driver' => 'mysql', 'host' => DB_HOST, 'database' => DB_NAME, 'username' => DB_USER, 'password' => DB_PASSWORD, 'prefix' => $wpdb->prefix, 'charset' => DB_CHARSET, 'collation' => 'utf8_unicode_ci', )); $capsule->bootEloquent(); // Make this Capsule instance available globally via static methods... (optional) $capsule->setAsGlobal(); //this one creates table if not exists. Its better to run it in a WP action, like admin_init $createVolumes = Dion\Volumes\Recorder::createTables(); 

Ich hoffe, es hilft, wenn Sie diese Lösung mögen und Fragen haben, werde ich gerne mehr hinzufügen.

Kann ich nur eine mit PHPMYADMIN erstellen?

Ja, du kannst. Und es ist ein kürzester Weg, es zu tun.