WordPress纯代码实现直接将文章别名设置为文章ID

代码2021-01-22530 人已阅来源:网络

已发布文章修改

建议直接替换SQL数据库里的 post_name 字段的方法,简单快捷。

进入 mysql 命令【 选择你所创建的数据库的命令:mysql> USE MYSQLDATA; (注:MYSQLDATA是数据库的名称。按回车键出现 Database changed 时说明操作成功!) 】或者 phpmyadmin 的 SQL (登录后打开数据库管理系统,找到网站对应的wordpress数据库,点击后,在上方有个SQL按钮) ,执行如下SQL命令修改即可:

update  wp_posts set post_name=ID where post_status='publish' and post_type='post';

PS:wp_posts 是 WordPress 的文章数据表,wp_ 是默认的前缀,如果自定义更改过,请根据实际修改即可。

新文章自动使用文章ID作为文章的别名

将下边的代码添加到到当前主题目录下 functions.php 文件,在php结束标记 ?> 前 ,新建的文章都会自动使用生成的文章ID作为文章别名。

/**
 * WordPress新文章自动使用ID作为别名
 * 作用:即使你设置固定连接结构为 %postname% ,仍旧自动生成 ID 结构的链接
 */
add_action('save_post', 'using_id_as_slug', 10, 2);
function using_id_as_slug($post_id, $post)
{
    global $post_type;
    if ($post_type == 'post') { //只对文章生效
        // 如果是文章的版本,不生效
        if (wp_is_post_revision($post_id))
            return false;
        // 取消挂载该函数,防止无限循环
        remove_action('save_post', 'using_id_as_slug');
        // 使用文章ID作为文章的别名
        wp_update_post(array('ID' => $post_id, 'post_name' => $post_id));
        // 重新挂载该函数
        add_action('save_post', 'using_id_as_slug');
    }
}

本文代码经过测试有效。介意的还请勿用。