自定义WP表还是添加新表?

时间:2016-06-19 作者:Riccardo

我想扩展用户数据,添加图片、部门、电话等。您可以通过向usermeta添加自定义字段来实现这一点,但我想知道这种技术是否已被弃用,最好使用自定义数据创建新表,以防止将来更新WP时可能出现的陷阱。

什么是正确的方法?

2 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

您应该避免添加新表或自定义现有表来为用户添加字段。

如果要存储电话号码等,请使用用户元:

add_user_meta( $user_id, \'riccardo_phone_number\', \'0123-456-7890\' );
....
$phone_number = get_user_meta( $user_id );
User meta是数据库中具有post ID的键和值。无需更改表结构/模式来添加新信息。

修改WP_User 表将导致WordPress的未来升级出现重大问题。当WordPress Core修改其数据库模式时,您可能会面临更新失败或数据破坏的风险。

创建新表和修改核心表还意味着编写自定义SQL查询、复制主查询、放弃所有用于数据访问的API,以及引入新的故障点。自定义帖子类型、帖子元和自定义分类法几乎总是更好的选择,并带来其他好处。

SO网友:vasquez_jesus

为WordPress数据库创建表需要相当长的时间。Wordpress Codex有一篇文章提供了如何实现这一点的分步指南,主要包括创建插件和添加函数以创建表并在插件安装时触发函数。

1。创建表格:

W函数是:

<?php

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

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

$table_name = $wpdb->prefix . \'liveshoutbox\';

$charset_collate = $wpdb->get_charset_collate();

$sql = "CREATE TABLE $table_name (
    id mediumint(9) NOT NULL AUTO_INCREMENT,
    time datetime DEFAULT \'0000-00-00 00:00:00\' NOT NULL,
    name tinytext NOT NULL,
    text text NOT NULL,
    url varchar(55) DEFAULT \'\' NOT NULL,
    UNIQUE KEY id (id)
) $charset_collate;";

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

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

function jal_install_data() {
    global $wpdb;

    $welcome_name = \'Mr. WordPress\';
    $welcome_text = \'Congratulations, you just completed the installation!\';

    $table_name = $wpdb->prefix . \'liveshoutbox\';

    $wpdb->insert( 
        $table_name, 
        array( 
            \'time\' => current_time( \'mysql\' ), 
            \'name\' => $welcome_name, 
            \'text\' => $welcome_text, 
        ) 
    );
}

2。在插件文件上调用函数:

register_activation_hook( __FILE__, \'jal_install\' );
register_activation_hook( __FILE__, \'jal_install_data\' );
原文可在此处找到:Creating Tables with Plugins

如果你真的想通过实践来学习,你可以尝试这个选项;然而,如果您正在从事一个项目,我建议您使用一个维护良好的插件,名为“高级自定义字段”,目前该插件的安装量超过100万次,评级为5星级。这个插件可以让您轻松地使用GUI添加自定义用户元,从而节省大量时间。

相关推荐

Bulk Action in wp_list_table

我只想对delete函数执行批量操作。我在谷歌上研究了这么多例子,但还是做不到。如果有人能帮我解决这个问题,我将不胜感激。下面是我的代码。当选择并选择“在下拉列表中删除”并单击“应用”时,不会发生任何情况。public function get_bulk_actions(){ $action = array( "delete" =>"Delete" ); return $action; &