如何在数据库管理员端保存自定义页签产品页面的设置?

时间:2016-04-06 作者:Dipika

enter image description here

我有以下代码:


                    <tr>
                        <th><?php _e(\'Custom Stock Message\'); ?></th>
                             <td>
                                <input type="text" name="customstock-msg"  value=""/>
                             </td>
                    </tr>

                    <tr>
                        <th><?php _e(\'Order Processing Time\'); ?></th>
                             <td>

                               <input type="text" name="customstock-Processing-time">
                             </td>
                    </tr>

                    <tr>
                        <th><?php _e(\'Instock Date\'); ?></th>
                             <td>
                               <!-- <input type="date" name="customstock-date"  value=""/>-->
                               <input type="text" id="datepicker" name="customstock-instockdate">
                             </td>
                    </tr>

                    <tr>
                        <th><?php _e(\'Show Quantity when Instock\'); ?></th>
                             <td>
                               <!-- <input type="date" name="customstock-date"  value=""/>-->
                               <select name="customstock-quantity" id="showquantity">
                                    <option value="yes">Yes</option>
                                    <option value="no"> No</option>
                               </select>
                             </td>
                    </tr>

                    <tr>
                        <th><?php _e(\'Show on Catlog Page\'); ?></th>
                             <td>
                               <!-- <input type="date" name="customstock-date"  value=""/>-->
                               <select name="customstock-catlogpage" id="showcatlogpage">
                                    <option value="yes">Yes</option>
                                    <option value="no"> No</option>
                               </select>
                             </td>
                    </tr>

                    ?>

                     <p>
                     <input type="submit" class="button-primary" name="customstock_submit_specific_product" value="<?php  _e(\'Save Changes\') ?>" />
                     </p>
                  </form>

  if(isset($_POST[\'customstock_submit_specific_product\']))
 {
                    global $wpdb,$product;
                     $id = $product->id;

                    $custommsg = sanitize_text_field( $_POST[\'customstock-msg\'] );
                    $customprocessingtime = sanitize_text_field( $_POST[\'customstock-Processing-time\'] );
                    $customstockquantity = sanitize_text_field( $_POST[\'customstock-quantity\'] );
                    $customstockcatlogpage = sanitize_text_field( $_POST[\'customstock-catlogpage\'] );
                    $customstockinstockdate = sanitize_text_field( $_POST[\'customstock-instockdate\'] );
                    $customstockinstockdate = date("Y-m-d", strtotime($customstockinstockdate) );

  $wpdb->insert(\'wp_woocommerce_specific_product_settings\', array(
                                                                    \'custom_msg\' => $custommsg,
                                                                    \'order_processing_time\'  => $customprocessingtime,
                                                                    \'exp_instock_date\' => $customstockinstockdate, 
                                                                \'show_stockstatus_quantity\' => $customstockquantity,
                                                                    \'showon_catlog\' => $customstockcatlogpage,
                                                                    \'specific_product_id\' =>  $id
                                                                ));
  }
按下提交按钮时,会删除上述代码。我不想存储在wp\\U Posteta中,然后该怎么办。我是wordpress的初学者。有人知道我该怎么拯救它吗?

1 个回复
SO网友:Kevin Leary

根据你的情况,我不建议或原谅你这样做,但你的问题的答案是看看$wpdb 类和dbDelta() 作用这是WordPress为添加自定义表提供的界面。

但要小心,权力越大,责任越大。使用$wpdb 绕过许多内置WordPress安全功能,因此您需要very 谨慎清理和转义数据,以避免引入SQL注入漏洞和其他安全漏洞。

这就是说,这里有一个抽象类,我最近用于为客户机执行此操作,它可能对您的工作有用。我没有测试这个,它是从一个更大的类中抽象出来的,所以您需要自己重新配置和测试它。无论如何,我认为您不需要为这个用例定制表。

<?php
/**
 * Database
 *
 * Add custom tables to a WordPress database
 */

if ( ! class_exists(\'DB_Table\') ) :

class DB_Table 
{
    protected $table;

    /**
     * Create Database Table
     *
     * Given a schema array, create a custom table in the WP database
     */
    public static function create() {
        require_once( ABSPATH . \'wp-admin/includes/upgrade.php\' );

        global $wpdb, $charset_collate;

        $table = \'custom_table_name\'; // The name of your custom DB table
        $schema = self::schema();

        // create database table
        $table_name = $wpdb->prefix . $table;
        $sql = "CREATE TABLE IF NOT EXISTS $table_name ( ";
        $sql .= $schema;
        $sql .= " ) $charset_collate;";

        // run create process
        dbDelta( $sql );
    }

    /**
     * Schema: Level Term Rates 
     *
     * Schema definition for the custom table
     */
    public static function schema() {

        // Define your schema here for the table
        $schema = "id int(8) unsigned NOT NULL AUTO_INCREMENT,
        age int(3) NOT NULL DEFAULT \'0\',
        first_name text NOT NULL DEFAULT \'\',
        last_name text NOT NULL DEFAULT \'\',
        gender char(1) NOT NULL DEFAULT \'\',
        PRIMARY KEY (id)";

        return $schema;
    }
}

/**
 * Register Hooks
 */
register_activation_hook( __FILE__, array( \'DB_Table\', \'create\' ) );

endif;
?>

相关推荐

如何修改WP_INCLUDE/BLOCKS/LATEST_posts.php

我是WordPress开发的初学者,希望得到一些帮助。我在一个简单的WordPress网站上工作。基本上,用户希望在主页上显示最新的帖子。我使用了最新帖子块,并将其设置为显示整个帖子内容,现在用户不希望帖子标题链接到单个帖子页面(因为帖子的内容显示在主页上)。如何安全地修改模板文件,使其像h2标记一样使用,而不是在主题中使用的href标记。我知道您可以创建子主题并修改wp_content 文件,但我不确定如何处理中的文件wp_include. 我读到一些关于修改functions.php 但我不确定,如果