惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

人人都是产品经理
人人都是产品经理
aimingoo的专栏
aimingoo的专栏
Y
Y Combinator Blog
B
Blog
D
Docker
C
Check Point Blog
A
About on SuperTechFans
云风的 BLOG
云风的 BLOG
F
Fortinet All Blogs
Stack Overflow Blog
Stack Overflow Blog
Recent Announcements
Recent Announcements
MongoDB | Blog
MongoDB | Blog
WordPress大学
WordPress大学
Jina AI
Jina AI
罗磊的独立博客
月光博客
月光博客
博客园 - Franky
L
LangChain Blog
H
Help Net Security
Google DeepMind News
Google DeepMind News
Microsoft Security Blog
Microsoft Security Blog
小众软件
小众软件
T
Tailwind CSS Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

一纸忘忧

ONE DAY 0402 糟糕的远程桌面连接体验 ONE DAY 0331 国产替代派上用场 ONE DAY 0328 火炉山公园和地摊椰子鸡 ONE DAY 0327 好久不见,最佳员工! ONE DAY 0326 差点从程序员变成了跨境运营 ONE DAY 0325 入职新公司一个月 ONE DAY 0322 带走了中山的所有东西 ONE DAY 0320 便宜的东西就是最贵的 ONE DAY 0319 该来的终究还是来了 ONE DAY 0318 过了本命年,命就是硬! ONE DAY 0317 AI 时代的工作流 ONE DAY 0316 梅开二度,Opus 再次离职 ONE DAY 0315 小镇上的图书馆 ONE DAY 0314 股市里的价投与韭菜 ONE DAY 0313 AI 离职,重金返聘! ONE DAY 0312 长江电力回本!历史盈利新高! ONE DAY 0311 工作中的优先级 ONE DAY 0310 重启 One Day 计划 ONE DAY 0310 重启 One Day 计划 成立一周年!开源的本土化中文文档知识库 - 一纸忘忧 成立一周年!开源的本土化中文文档知识库 成立一周年!开源的本土化中文文档知识库 也许世界并不美好,但也没有那么糟糕 - 一纸忘忧 也许世界并不美好,但也没有那么糟糕 也许这个世界并不美好,但也没有那么糟糕 如何在团队项目中白嫖 Vercel 的免费服务 - 一纸忘忧 如何在团队项目中白嫖 Vercel 的免费服务 在 Github 团队项目中白嫖 Vercel 的免费服务 梅开二度,土区 iCloud 再次涨价 - 一纸忘忧 梅开二度,土区 iCloud 再次涨价
WordPress 设置文章 post_name 与 ID 同步
博主: 一纸忘忧 · 2023-07-20 · via 一纸忘忧

前言

我一直有个强迫症,看着 WordPress 的文章中有个字段 post_name 如果不设置的话,就会默认使用标题 title 作为 post_name,导致使用 post_name 作为文章 URL 的时候会出现中文,看着很不协调。

然而我又不想手动去设置 post_name,于是乎想着能不能将 post_name 默认设置成与 ID 相同。

批量替换现有数据

首先将已经发布的文章给全部替换掉,直接用 SQL 语句

UPDATE wp_posts SET post_name = ID;

这里的 wp_posts 是 WordPress 数据库中的文章表。

发布文章自动修改

要在 WordPress 中每次发布或更新文章时,默认将 post_name 设置为与 ID 相同,可以通过添加自定义功能来实现此功能。

打开 WordPress 主题文件夹中的 functions.php 文件,在文件的末尾添加以下代码:

function set_postname_as_id( $post_id ) {
    $post = get_post( $post_id );
    $post_name = $post->post_name;
    $post_id = $post->ID;

    if ( $post_name != $post_id ) {
        $args = array(
            'ID' => $post_id,
            'post_name' => $post_id,
        );
        wp_update_post( $args );
    }
}
add_action( 'save_post', 'set_postname_as_id' );

保存并上传 functions.php 文件到您的 WordPress 主题文件夹。

每当发布或更新文章时,WordPress 将检查文章的 post_name 是否与 ID 相同。如果不同,它将自动更新 post_name 为 ID。请注意,这将影响所有类型的文章,包括页面和自定义文章类型。如果只想应用于特定类型的文章,可以在 set_postname_as_id 函数内添加适当的条件检查。

比如我用的是 B2 主题,我想替换所有的文章类型,除了 page 页面,可以改成下面这样:

function set_postname_as_id( $post_id ) {
    // 获取文章对象
    $post = get_post( $post_id );

    // 获取当前文章的 post_name 和 ID
    $post_name = $post->post_name;
    $post_id = $post->ID;

    // 检查文章类型是否为 page,如果是则返回
    if ( $post->post_type == 'page' ) {
        return;
    }

    // 检查 post_name 是否与 ID 不同
    if ( $post_name != $post_id ) {
        // 准备要更新的文章参数
        $args = array(
            'ID' => $post_id,
            'post_name' => $post_id,
        );

        // 更新文章的 post_name 为 ID
        wp_update_post( $args );
    }
}

// 在保存文章时触发自定义功能
add_action( 'save_post', 'set_postname_as_id' );

赞赏作者

如果觉得我的文章对你有用,请随意赞赏