为自定义Woocommerce插件存储动态值

时间:2018-07-08 13:34:03

标签: php html wordpress plugins woocommerce

Example

我阅读了不同的文章,但它们描述了更多其他内容。我不想用太多空间制作错误的代码。在模块中,将有一个可以在管理面板和其他无关功能中更改的单个值。如何在插件中为该窗口的值正确创建数据库? 我找到了documentation,但是我没有足够的经验来减少多余的部分。

我的代码gamma = 0.97

gamma > 0.98

2 个答案:

答案 0 :(得分:1)

如果您只想存储一件事(例如设置),则可以使用wp_options。然后,您可以使用WordPress函数与数据库进行交互,而无需编写自己的SQL。

答案 1 :(得分:1)

已更新-由于这是一个将多次更新的唯一值,因此您可以将wp_options表与以下WordPress专用功能一起使用:

如果您使用一些技巧来避免选项数据被缓存,那么缓存选项的事实就不成问题了。

因此,请尝试以下代码:

// 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文件中。然后浏览您网站的任何页面并将其删除。

相关问题