在数据库中存储插件特定信息的位置

时间:2018-03-08 作者:sazr

我的插件需要在数据库中存储一个值(时间戳)。该值与任何帖子/页面等都没有关联。它与插件关联。我应该在哪里将此值写入数据库-什么表?

我用过add_post_meta(); 这可以很好地存储与帖子/页面相关的信息。是否有类似于编写插件特定信息的内容?也许是add_plugin_meta()?

2 个回复
SO网友:Jacob Peattie

将其存储在wp_options() 使用update_option() 并用get_option():

update_option( \'my_plugin_timestamp\', $value );

$value = get_option( \'my_plugin_timestamp\' );

SO网友:Hassan Alvi

如果要存储单个值,请使用以下代码。。

update_option( \'plugin_timestamp_data\', $timestamp);
$timestamp = get_option( \'plugin_timestamp_data\' );

https://codex.wordpress.org/Function_Reference/update_option


如果要保存多个条目,可以使用自定义表存储时间戳数据。。

//Define table name to use everywhere
define( \'TABLE_NAME\', \'plugin_timestamp_data\' );
下面是初始化插件的代码

global $jal_db_version;
$jal_db_version = \'1.0\';

function jal_install() {
    global $wpdb;
    global $jal_db_version;

    $table_name = TABLE_NAME;

    $charset_collate = $wpdb->get_charset_collate();

    $sql = "CREATE TABLE $table_name (
        id    BIGINT(20)  NOT NULL AUTO_INCREMENT,
        time  DATETIME    NOT NULL,
        PRIMARY KEY  (id)
    ) $charset_collate;";

    require_once( ABSPATH . \'wp-admin/includes/upgrade.php\' );
    dbDelta( $sql );

    add_option( \'jal_db_version\', $jal_db_version );
}

//Calling the activation hook
register_activation_hook( __FILE__, \'jal_install\' );
要删除插件卸载时的数据,请使用以下代码。。

function jal_uninstall() {
  global $wpdb;
  $table_name = TABLE_NAME;

  $dropsql = "DROP TABLE IF EXISTS {$table_name};";
  $wpdb->query( $dropsql );
}
//Calling the deactivation hook
register_deactivation_hook( __FILE__, \'jal_uninstall\' );
要添加时间戳值,只需在插件文件中声明下面的函数,并在任何需要的地方调用它。。

function jal_insert_record ($timestamp) {
  global $wpdb;
  $table_name = TABLE_NAME;

  $wpdb->insert(
    $table_name, 
    array(
      \'time\' => $timestamp
    ) 
  ); 
}

https://codex.wordpress.org/Creating_Tables_with_Plugins

结束

相关推荐