Плагины – Как Сохранить Настройки Страницы Продукта С Настраиваемой Вкладкой На Стороне Администратора В Базе Данных?

  • Автор темы Palilotek-K22
  • Обновлено
  • 22, Oct 2024
  • #1

Плагины – Как сохранить настройки страницы продукта с настраиваемой вкладкой на стороне администратора в базе данных?

У меня есть следующий код:


                     <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_postmeta, что делать. Я новичок в WordPress. Кто-нибудь знает, как мне его сохранить?

Palilotek-K22


Рег
24 Oct, 2020

Тем
89

Постов
199

Баллов
654
  • 25, Oct 2024
  • #2

В зависимости от вашей ситуации я не рекомендую и не одобряю это, но ответ на ваш вопрос — взглянуть на

 <?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;
?>
 
class and the $wpdb функция. Это интерфейс, который WordPress предоставляет для добавления пользовательских таблиц.

Однако будьте осторожны: с большой силой приходит и большая ответственность. С использованием dbDelta() bypasses many of the built-in WordPress security features, so you need to be очень будьте осторожны при очистке и экранировании данных, чтобы избежать появления уязвимостей SQL-инъекций и других дыр в безопасности.

Тем не менее, вот абстрактный класс, который я недавно использовал для этого для клиента, с которым вам может быть полезно работать. Я не проверял это, это абстракция гораздо большего класса, поэтому вам придется перенастроить и протестировать его самостоятельно. Как бы то ни было, я не думаю, что вам нужна специальная таблица для этого варианта использования.

$wpdb
 

Freardoll


Рег
31 Oct, 2006

Тем
68

Постов
205

Баллов
585
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно