【问题标题】:Wordpress Options-Page to own Database Table拥有数据库表的 Wordpress 选项页面
【发布时间】:2017-01-15 05:05:48
【问题描述】:

我正在学习为 Wordpress 编写插件。 现在我必须创建一个带有一些输入字段的选项页面。它将起作用,输入数据将保存在 Wordpress 数据库表 wp_options 中。

我在 WordPress 中创建了一个自己的数据库表,并希望将这些输入字段中的信息保存在我自己的表中。

有人知道我必须如何准备一份 options.php 副本,以便将我自己的信息保存在我自己的表中吗?

【问题讨论】:

标签: wordpress options


【解决方案1】:

由于您的值保存在 wp_options 表中,我相信您在该页面上与您的 WP 数据库建立了有效连接。 要保存到您自己的表中,只需使用 WordPress 数据库类参考 $wpdb:

$wpdb->insert( 
    'table', 
    array( 
        'column1' => 'value1', 
        'column2' => 123 
    ), 
    array( 
        '%s', 
        '%d' 
    ) 
);

“table”是您的自定义表格,“column1”是您的列,“value1”是您的表单值。 通过以下方式查看 WordPress 数据库类参考的完整详细信息 https://codex.wordpress.org/Class_Reference/

【讨论】:

  • 我不想将数据保存在 wp_options 表中。我想直接把它放到我自己的表中。有可能这样做吗?我花了 4 天的时间尝试了它,但我不知道它会如何工作?
  • 就像我说的,由于该表在您的本地 WordPress 数据库中,只需将我的代码中的“表”更改为您的表的名称。
  • 我的插件中也会有相同的代码。问题是如何在按下应用按钮后从输入字段中获取数据?我曾尝试使用 $_Post 命令,但它不起作用。我通过插件中的代码尝试,通过代码外部.php文件尝试。
【解决方案2】:

在代码中将提交按钮发送信息到“options.php”。 我会将它更改为一个自己的 php "options.own.php" 文件作为顶部的示例。

但是在 Wordpress 中会显示文件未按请求找到?

<form action="options_own.php" method="post">
            <?php
                settings_fields("section");
                do_settings_sections("theme-options");      
                submit_button(); 
            ?>          
        </form>
        </div>

我将放入的自己的表也与 Worpress 在同一个数据库中。

【讨论】:

    【解决方案3】:

    这是我的第一个 Wordpress 插件,可以看到我想要的。 它将在 Wordpress 数据库中创建一个名为“wp_datenbanktest”的表。 后端有一个菜单,我将输入一个信息以将其放入我自己的数据库中。 我知道这是大多数 cmets,但在我第一次学习时就会如此。

    <?php
    /*
    Plugin Name: Datenbank Testprogramm
    */
    
    //-----------------------------------------------------------------------------
    // Deklaration der Action-Hooks
    
    // Die aktivieren/deactivieren Funktionen registrieren
    add_action('activate_' . plugin_basename(__FILE__), 'mm_datenbank_aktivieren');
    add_action('deactivate_' . plugin_basename(__FILE__), 'mm_datenbank_deaktivieren');
    
    //-----------------------------------------------------------------------------
    
    // Funktion die beim aktivieren des Plugins aufgerufen werden soll
    function mm_datenbank_aktivieren() {
        // Hinzufügen einer Datenbanktabelle
    
        // Funktion zum erstellen der Tabelle wp_datenbanktest
        function mm_tabelle_erstellen() {
    
            // Globales Datenbankobjekt um Eigenschaften in WP ansprechen zu können
            global $wpdb;
    
            // Tabellenname bestimmen
            $tabellenname = $wpdb->prefix . "datenbanktest";
    
            // Wenn die Tabelle noch nicht existiert, dann wird diese erstellt
            if ($wpdb->get_var("SHOW TABLES LIKE '$tabellenname'") != $tabellenname) {
                // Der SQL-String der Tabelle wird erzeugt
                $sql_string = "CREATE TABLE " . $tabellenname . " (
                    user_id int(11) NOT NULL,
                    person_geschlecht varchar(1) DEFAULT NULL,
                    UNIQUE KEY user_id (user_id)
                    );";
    
                // Die Funktion dbDelta muss vor der Verwendung mit /wp-admin/includes/upgrade.php 
                // per require_once verfügbar gemacht werden, bevor die dbDelta() Funktion aufgerufen wird.
                require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
    
                // dbDelta überprüft die Datenbank und vergleicht den SQL-Query mit bestehnden Tabellen.
                // Falls die Tabelle bereits existiert, wird die Abfrage nicht ausgeführt.
                dbDelta($sql_string);
            }
        } // ENDE Funktion datenbank Tabelle erstellen
    
        function mm_daten_tabelle_einfuegen() {
    
            // Globales Datenbankobjekt um Eigenschaften in WP ansprechen zu können
            global $wpdb;
    
            // Tabellenname bestimmen
            $tabellenname = $wpdb->prefix . "datenbanktest";
    
            // Das Datenbankobjekt beinhaltet drei Parameter
            // 1. Methode insert()
            // 2. Tabellenname $tabellenname
            // 3. Array mit Daten und Format der jeweiligen Parameter. "'%d', '%f', '%s' (integer, float, string)"
            // $wpdb->insert('$tabellenname', array('user_id' =>10, 'person_geschlecht' => 'm'), array('%d','%s'));
            $wpdb->insert($tabellenname, array('user_id' => 10, 'person_geschlecht' => 'm'));
    
        } // ENDE Funktion Daten in Tabelle einfügen    
    
    
    // Hinzufügen einer Datenbanktabelle
    mm_tabelle_erstellen();
    
    // Daten zur Tabelle hinzufügen
    // mm_daten_tabelle_einfuegen();
    
    function mm_zeige_option_seite(){
    
    
    
    } // ENDE Funktion Options Seite
    
    
    
    } // ENDE Funktion beim Aktivieren des Plugins
    
    //-----------------------------------------------------------------------------
    
    // Funktion die beim deaktivieren des Plugins aufgerufen werden soll
    function mm_datenbank_deaktivieren() {
    
        // Funktion zum löschen der Tabelle wp_datenbanktest
        function mm_tabelle_loeschen() {
    
            // Benötigt das globale Datenbankobjekt
            global $wpdb; 
    
            // Tabellenname bestimmen
            $tabellenname = $wpdb->prefix . "datenbanktest";
    
            // SQL-Befehl erzeugen
            $sql = "DROP TABLE ". $tabellenname;
    
            // SQL-Befehl ausführen
            $wpdb->query($sql);
        } // ENDE Funktion datenbank Tabelle loesschen
    
    
    // Tabelle beim deaktivieren löschen
    mm_tabelle_loeschen();
    
    } // ENDE Funktion beim deaktivieren des Plugins
    
    
    
    //-----------------------------------------------------------------------------
    // Menü im Admin-Bereich erstellen
    function db_optionen()
    {
        // Erstellt das Menü im Backend
        add_menu_page("Datenbank",          // Seitentitel  (Browserregsiter)
                      "Datenbank",          // Menütitel    (Backend)
                      "manage_options",             // Berechtigung (Super - Administratoren)
                      "mm_datenbank_plugin",            // eindeutigen internen Namen (slug)
                      "datenbank_formular",     // Funktionsaufruf
                      null,                         // Kann ein Pfad zu einem Iconbild eingefügt werden
                      70);                          // Position im Menü
    } // ENDE Funktion Menü im Backend erstellen
    
    //-----------------------------------------------------------------------------
    // Darstellung der Eingabeseite
    function datenbank_formular(){
        ?>
            <!-- Options Seite -->
            <div class="wrap">
            <h1>Datenbank Dateneingabe</h1>
    
            <!-- Sende Schaltfläche -->
            <form action="options-ft.php" method="post">
                <?php
                    settings_fields("section");
                    do_settings_sections("theme-options");      
                    submit_button(); 
                ?>          
            </form>
            </div>
        <?php   
    } // ENDE Funktion Darstellung der Eingabeseite
    
    // Eingabe-Elemente auf der Seite einfügen
    function datenbank_eingabefelder()
    {
        ?>
            <!-- Eingabeelement für Text, Zeitangaben, Zahlen, Auswahlen, Elemente, Benutzeraktionen -->
            <!-- https://wiki.selfhtml.org/wiki/HTML/Formulare/input -->
            <!-- 1. Parameter für Text -->
            <!-- 2. Parameter Variable für den Inhalt-->
            <!-- 3. Parameter eindeutige ID für die Variable-->
            <!-- 4. Parameter inhalt der Variable -->
    
            <!-- Benutzer ID -->
            <input type="text" 
                   name="person_user_id"        
                   id="person_user_id"      
                   value=                   
                   "<?php echo get_option('person_user_id'); ?>"/>
        <?php
    } // ENDE Funktion Elemente einfpgen
    
    //-----------------------------------------------------------------------------
    // Funktion zum einblenden der Eingabefelder auf der Eingabe Seite
    function datenbank_eingabefelder_anzeigen()
    {
        // Bereich für Persönliche Daten
        add_settings_section("section",             // ID Attribut der Sektion
                             "Personendaten",   // Titel der Sektion
                             null,                  // Funktion die den Inhalt füllt
                             "theme-options");      // Menüseite die diesen Abschnitt anzeigt
    
        // Feld hinzufügen - Benutzer ID
        add_settings_field("person_user_id",                    // Variablen ID (String)
                           "Benutzer ID",                       // Formatierter Titel (String)
                           "datenbank_eingabefelder",           // Funktion die das Feld füllt
                           "theme-options",                     // Menüseite die diesen Abschnitt anzeigt
                           "section");                          // Gruppenname Sektion (string)
    
        // Registrierung - Benutzer ID
        register_setting("section",                     // Gruppenname Sektion 
                         "person_user_id");             // Inhahalt der zu speichernden Variablen
    
    } // ENDE Funktion Eingabefelder anzeigen
    
    //-----------------------------------------------------------------------------
    // Menü im Admin-Bereich registrieren
    add_action("admin_menu",                                // Fügt Menüs im Administrations Panel hinzu
               "db_optionen");                  // Funktionsaufruf, zum erstellen des Backend Menüs
    
    // Eingabefelder im Admin-Bereich registrieren
    add_action("admin_init",                                // Wird ausgelöst wenn ein Benutzer auf das Backend zugreift
               "datenbank_eingabefelder_anzeigen");         // Funktionsaufruf, zum einblenden der Eingabefelder
    ?>
    

    【讨论】:

      猜你喜欢
      • 2012-02-25
      • 1970-01-01
      • 1970-01-01
      • 2022-01-02
      • 2015-02-25
      • 1970-01-01
      • 1970-01-01
      • 2013-05-17
      • 1970-01-01
      相关资源
      最近更新 更多