建站教程

建站教程

Products

当前位置:首页 > 建站教程 >

两种方法修改WordPress站点数据库默认表前缀wp(让WordPress后台搜索支持自定义域post meta)

GG网络技术分享 2025-03-18 16:12 0


两种方法修改WordPress站点数据库默认表前缀wp

很多第一次接触 WordPress 的博主站长们在安装 WordPress 的时候,都是直接使用数据库的默认表前缀 wp_,据说这个默认前缀会存在安全隐患,所以一般都建议在安装 WordPress 的时候直接修改数据库的默认表前缀 wp_,如改为 abc_ 等等。不过我们在安装的时候忘记修改也没事,今天 boke112 就跟大家介绍两种方法修改 WordPress 站点数据库默认表前缀 wp_ 为其他前缀。

一、安装WordPress时修改表前缀wp_

如下图所示,我们在安装 WordPress 的时候,在进行到『调整配置文件』时就可以直接修改表前缀,这时候修改默认表前缀是最简单的,这里就不展开说了。

二、安装WordPress成功后修改表前缀wp_

温馨提示

修改数据库有风险的,所以为了安全起见,boke112 强烈建议大家在折腾数据库前先行备份好数据库,以免出现意外!

方法一:使用插件法修改表前缀(适合新手)

对于新手而言,为了减少误操作导致数据库损坏,boke112 建议直接安装 Change Table Prefix 插件来修改默认的表前缀。方法很简单,可以直接在后台 > 插件 > 安装插件 > 搜索“Change Table Prefix”找到好直接点击『现在安装』,或点此下载 Change Table Prefix 插件到桌面然后点击『上传插件』> 选择文件后点击『现在安装』。

如上图所示,安装 Change Table Prefix 插件成功并启用后,直接在后台 > 设置 > Change Table Prefix > 勾选“Would you like to your own custom prefix.”,接着在下方填入我们想要修改的表前缀(如 abc_),最后点击『Click To Change Table Prefix』按钮即可成功修改表前缀,具体如下:

成功修改表前缀为 abc_

刷新后可以发现当前表前缀已经变成 abc_

方法二:手动修改表前缀(适合老手)

不过不是每个人都喜欢用插件(像这种比较简单的操作,boke112 就喜欢用插件,用完之后就删),部分博主反而喜欢自己动手去折腾数据库,所以说方法二比较适合动手能力相对比较强的博主站长。

具体手动修改表前缀的步骤如下:

1、修改配置文件 wp-config.php 中表前缀,找到以下代码:

  1. $table_prefix = \'wp_\';

直接修改为自定义表前缀(如 boke_)

  1. $table_prefix = \'boke_\';

2、登录你的 MySQL 数据库 phpMyAdmin,点击我们站点相对应的数据库,然后点击『SQL』按钮,运行以下 SQL 语句,修改默认表前缀为自定义前缀(boke_):

  1. RENAME table `wp_commentmeta` TO `boke_commentmeta`;

  2. RENAME table `wp_comments` TO `boke_comments`;

  3. RENAME table `wp_links` TO `boke_links`;

  4. RENAME table `wp_options` TO `boke_options`;

  5. RENAME table `wp_postmeta` TO `boke_postmeta`;

  6. RENAME table `wp_posts` TO `boke_posts`;

  7. RENAME table `wp_termmeta` TO `boke_termmeta`;

  8. RENAME table `wp_terms` TO `boke_terms`;

  9. RENAME table `wp_term_relationships` TO `boke_term_relationships`;

  10. RENAME table `wp_term_taxonomy` TO `boke_term_taxonomy`;

  11. RENAME table `wp_usermeta` TO `boke_usermeta`;

  12. RENAME table `wp_users` TO `boke_users`;

点击『执行』按钮后即可成功把表前缀都改为 boke_,刷新数据库后我们就能发现该数据库的表前缀均已变成 boke_。

3、继续点击『SQL』按钮,运行以下 SQL 语句,修改 options 表中的数据:

  1. update boke_options set option_name = replace(option_name,\'wp_\',\'boke_\');

4、继续点击『SQL』按钮,运行以下 SQL 语句,修改 usermeta 表中的数据:

  1. update boke_usermeta set meta_key = replace(meta_key,\'wp_\',\'boke_\');

至此,终于成功修改 WordPress 站点默认表前缀 wp_ 为 boke_。

结束语

从工作效率角度出发,boke112 强烈建议需要修改 WordPress 默认表前缀的博主站长们,直接采用方法一安装 Change Table Prefix 插件会比较简单,而且出错的概率会低很多。

本文来自本人旗下的boke112导航站点,原文地址:http://boke112.com/3758.html

让WordPress后台搜索支持自定义域post meta

WordPress管理员后台的搜索功能本身只能对文章标题和内容进行查询搜索,但当我们有比较重要的自定义域post meta时,就需要支持搜索包含自定义域的文章。为了实现后台支持对post meta自定义域的搜索我们需要用到WordPress的三个add_filter函数posts_join、posts_where和posts_groupby即可实现该功能。以下是具体代码:

/*

添加后台搜索支持post meta自定义域查询

代码来源: www.wpzxbj.com/jiaocheng/1794.html

*/

add_filter( \'posts_join\', \'posts_join_func\' );

add_filter( \'posts_where\', \'posts_where_func\' );

add_filter( \'posts_groupby\', \'posts_groupby_func\' );

/**

* 为搜索加入post meta数据

*/

function posts_join_func( $join ) {

global $wpdb;

if ( ! is_applicable() )

return $join;

$join .= \"LEFT JOIN $wpdb->postmeta ON $wpdb->posts.ID = $wpdb->postmeta.post_id \";

return $join;

}

/**

* 确保获取指定的搜索结果

*/

function posts_where_func( $where ) {

global $wpdb, $wp;

if ( ! is_applicable() )

return $where;

$where = preg_replace(

\"/($wpdb->posts.post_title LIKE \'%{$wp->query_vars[\'s\']}%\')/i\",

\"$0 OR $wpdb->postmeta.meta_value LIKE \'%{$wp->query_vars[\'s\']}%\' \",

$where

);

return $where;

}

/**

* 根据文章ID组合结果,并确保不获取重复结果

*/

function posts_groupby_func( $groupby ) {

global $wpdb;

if ( ! is_applicable() )

return $groupby;

if ( empty( $groupby ) )

$groupby = \"$wpdb->posts.ID\";

return $groupby;

}

/**

* 确保在正确的页面

*/

function is_applicable() {

global $pagenow, $wp_query;

// 检查是否在管理员后台

if ( ! is_admin() )

return false;

// 检查是否在文章编辑页

if ( \'edit.php\' != $pagenow )

return false;

// 检查是否搜索关键词已设置

if ( ! isset( $_GET[\'s\'] ) )

return false;

// 检查是否在搜索页面

if ( ! $wp_query->is_search )

return false;

return true;

}

代码说明:将以上代码插入主题的function.php文件即可实现自定义域post meta的搜索了。之后你可以尝试以自定义域内容来搜索看看是否能正确地查询到结果。

标签:

提交需求或反馈

Demand feedback