php - 为自定义 Woocommerce 插件存储动态值
问题描述
我阅读了不同的文章,但它们描述了更多其他的东西。我不想用太多空间制作错误的代码。在模块中,将有一个可以在管理面板和其他无关功能中更改的值。如何正确地在插件中为该窗口的值创建数据库?我找到了文档,但如果是的话,我没有足够的经验来减少多余的部分。
我的代码/plugins/custom-counter/custom-counter.php
/*
Plugin Name: Custom Counter
Plugin URI: https://example.com
Description: This plugin adds counter.
Author: Kuznetsova Alexandra
Author URI: https://example.com
*/
// Hook for adding admin menus
add_action('admin_menu', 'custom_counter_menu');
// action function for above hook
function custom_counter_menu() {
// Add a submenu to Woocommerce menu:
add_submenu_page('woocommerce', 'Custom Counter', 'Custom Counter', 'administrator', 'custom-counter', 'custom_counter_page');
}
// custom_counter_page() displays the page content
function custom_counter_page() {
?>
<div class="wrap">
<h2>Custom Counter</h2>
<form method="post" action="options.php">
<?php settings_fields( 'baw-settings-group' ); ?>
<table class="form-table">
<tr valign="top">
<th scope="row">Total Counter</th>
<td><input type="text" name="custom-counter" value="..." /></td>
</tr>
</table>
<p class="submit">
<input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
</p>
</form>
</div>
<?php }
解决方案
已更新- 由于这是一个将多次更新的唯一值,因此您可以将wp_options
表格与以下 WordPress 专用功能一起使用:
get_option($option);
$option
要检索的选项名称在哪里update_option($option, $new_value);
其中$option
是选项的名称和$new_value
要更新的新值。
如果您使用下面将看到的一些技巧来避免缓存此数据,则缓存选项的事实不是问题。
所以试试下面的代码:
// Add a custom admin submenu to Woocommerce
add_action('admin_menu', 'custom_counter_menu');
function custom_counter_menu() {
add_submenu_page('woocommerce', 'Custom Counter', 'Custom Counter', 'administrator', 'custom-counter', 'custom_counter_page');
}
// Content for the custom Woocommerce admin submenu
function custom_counter_page() {
$option_name = 'wc-custom-counter' ;
if( isset($_POST[$option_name]) ){
$new_value = sanitize_text_field( $_POST[$option_name] );
if ( get_option( $option_name ) !== false ) {
update_option($option_name, $new_value );
} else {
add_option( $option_name, $new_value, null, 'no' );
}
}
$default = ''; // Set the default value
$value = get_option( $option_name ) ? get_option( $option_name ) : $default;
?>
<div class="wrap">
<h2><?php _e('Custom Counter'); ?></h2>
<form method="post" action="">
<?php settings_fields( 'baw-settings-group' ); ?>
<table class="form-table">
<tr valign="top">
<th scope="row"><?php _e('Total Counter'); ?></th>
<td><input type="text" name="<?php echo $option_name; ?>" value="<?php echo $value; ?>" /></td>
</tr>
</table>
<p class="submit">
<input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
</p>
</form>
</div>
<?php
}
代码位于活动子主题(或活动主题)的 function.php 文件中。测试和工作。
如果该选项已经存在,为避免缓存问题,您应该使用以下命令将其删除:
delete_option('wc-custom-counter');
并将其添加到您的 function.php 文件中。然后浏览您网站的任何页面并将其删除。
推荐阅读
- c - C中带有插入排序程序的双向链表
- xml - 无法从嵌套的多人游戏 XML 创建数据框
- php - Laravel 通过 eloquent 存储多对多关系
- r - 我可以对主成分分析进行事后分析吗?
- pandas - 根据列名删除重复列
- java - mvn dependency:go-offline 在升级几个依赖项后失败
- matlab - 试图将 8 个数字放入 2 个窗口中
- greasemonkey-4 - Greasemonkey Get and Set Value 不工作并且没有错误地杀死脚本
- javascript - JavaScript 中的带提升的时间死区
- c++ - 基于 C++ 中的种子混淆字符串的代码?