---
title: "WordPress 设置文章 post_name 字段与 ID 同步 - 一纸忘忧"
description: "我一直有个强迫症，看着 WordPress 的文章中有个字段 post_name 如果不设置的话，就会默认使用标题 title 作为 post_name，导致使用 post_name 作为文章 URL 的时候会出现中文，看着很不协调。 然而我又不想手动去设置 post_name，于是乎想着能不能将 post_name "
canonical_url: "https://www.ikxin.com/article/wordpress-postname-id"
last_updated: "2026-09-16T09:59:27.259Z"
locale: zh-cn
meta:
  "og:description": "我一直有个强迫症，看着 WordPress 的文章中有个字段 post_name 如果不设置的话，就会默认使用标题 title 作为 post_name，导致使用 post_name 作为文章 URL 的时候会出现中文，看着很不协调。 然而我又不想手动去设置 post_name，于是乎想着能不能将 post_name "
  "og:image": "https://www.ikxin.com/_og/d/h_630%2Ca_~V29yZFByZXNzIOiuvue9ruaWh-eroCBwb3N0X25hbWUg5a2X5q615LiOIElEIOWQjOatpSAtIOS4gOe6uOW~mOW~pw%2Cc_Article%2Ctitle_~V29yZFByZXNzIOiuvue9ruaWh-eroCBwb3N0X25hbWUg5a2X5q615LiOIElEIOWQjOatpQ%2Cdescription_~5oiR5LiA55u05pyJ5Liq5by66L-r55eH77yM55yL552AIFdvcmRQcmVzcyDnmoTmlofnq6DkuK3mnInkuKrlrZfmrrUgcG9zdF9uYW1lIOWmguaenOS4jeiuvue9rueahOivne-8jOWwseS8mum7mOiupOS9v-eUqOagh-mimCB0aXRsZSDkvZzkuLogcG9zdF9uYW1l77yM5a-86Ie05L2~55SoIHBvc3RfbmFtZSDkvZzkuLrmlofnq6AgVVJMIOeahOaXtuWAmeS8muWHuueOsOS4reaWh--8jOeci-edgOW-iOS4jeWNj-iwg-OAgiDnhLbogIzmiJHlj4jkuI3mg7PmiYvliqjljrvorr7nva4gcG9zdF9uYW1l77yM5LqO5piv5LmO5oOz552A6IO95LiN6IO95bCGIHBvc3RfbmFtZSA%2CsiteName_~5LiA57q45b-Y5b-n%2CsiteHost_www.ikxin.com%2Cp_Ii9hcnRpY2xlL3dvcmRwcmVzcy1wb3N0bmFtZS1pZCI%2Cs_-qP-NnsnFlKwusdw.png"
  "og:image:alt": "WordPress 设置文章 post_name 字段与 ID 同步 - 一纸忘忧"
  "og:image:height": "630"
  "og:image:type": image/png
  "og:image:width": "1200"
  "og:title": "WordPress 设置文章 post_name 字段与 ID 同步"
  "twitter:image": "https://www.ikxin.com/_og/d/h_630%2Ca_~V29yZFByZXNzIOiuvue9ruaWh-eroCBwb3N0X25hbWUg5a2X5q615LiOIElEIOWQjOatpSAtIOS4gOe6uOW~mOW~pw%2Cc_Article%2Ctitle_~V29yZFByZXNzIOiuvue9ruaWh-eroCBwb3N0X25hbWUg5a2X5q615LiOIElEIOWQjOatpQ%2Cdescription_~5oiR5LiA55u05pyJ5Liq5by66L-r55eH77yM55yL552AIFdvcmRQcmVzcyDnmoTmlofnq6DkuK3mnInkuKrlrZfmrrUgcG9zdF9uYW1lIOWmguaenOS4jeiuvue9rueahOivne-8jOWwseS8mum7mOiupOS9v-eUqOagh-mimCB0aXRsZSDkvZzkuLogcG9zdF9uYW1l77yM5a-86Ie05L2~55SoIHBvc3RfbmFtZSDkvZzkuLrmlofnq6AgVVJMIOeahOaXtuWAmeS8muWHuueOsOS4reaWh--8jOeci-edgOW-iOS4jeWNj-iwg-OAgiDnhLbogIzmiJHlj4jkuI3mg7PmiYvliqjljrvorr7nva4gcG9zdF9uYW1l77yM5LqO5piv5LmO5oOz552A6IO95LiN6IO95bCGIHBvc3RfbmFtZSA%2CsiteName_~5LiA57q45b-Y5b-n%2CsiteHost_www.ikxin.com%2Cp_Ii9hcnRpY2xlL3dvcmRwcmVzcy1wb3N0bmFtZS1pZCI%2Cs_-qP-NnsnFlKwusdw.png"
  "twitter:image:alt": "WordPress 设置文章 post_name 字段与 ID 同步 - 一纸忘忧"
---

> Index of every page on this site: [llms.txt](https://www.ikxin.com/llms.txt)

# **WordPress 设置文章 post\_name 字段与 ID 同步**

2023.07.20 8,827  3

## 前言

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

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

## 批量替换现有数据

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

 SQL

```
UPDATE wp_posts SET post_name = ID;
```

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

## 发布文章自动修改

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

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

 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` 页面，可以改成下面这样：

 PHP

```
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' );
```

## **评论**

(3)

1. **随遇而安**2023/09/22 13:02 Chrome 104 Windows 7

   你好，看你的站做的挺不错的，空了联系下我1587894193，想和你商量下广告事宜。
2. **don**2023/10/17 16:43 Edge 118 Windows 10

   您好，想注册img的图床，不过似乎无法刷新出验证码
3. [**小俊**](https://www.smalljun.com/)2023/12/02 20:53 Edge 119 Windows 10

   小俊博客的域名已更改，烦请博主更改一下，谢谢！

## **发布评论**

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://www.ikxin.com/#website","@type":"WebSite","description":"一纸忘忧的个人网站，关于技术探索与日常生活，记录 Web 开发、服务端与 DevOps 实践，分享软件工具、数码体验，以及代码之外的见闻与思考。","inLanguage":"zh-CN","name":"一纸忘忧","url":"https://www.ikxin.com/","workTranslation":[{"@id":"https://www.ikxin.com/zh-tw#website"},{"@id":"https://www.ikxin.com/ko#website"},{"@id":"https://www.ikxin.com/en#website"},{"@id":"https://www.ikxin.com/ja#website"}]},{"@id":"https://www.ikxin.com/article/wordpress-postname-id#webpage","@type":"WebPage","description":"我一直有个强迫症，看着 WordPress 的文章中有个字段 post_name 如果不设置的话，就会默认使用标题 title 作为 post_name，导致使用 post_name 作为文章 URL 的时候会出现中文，看着很不协调。 然而我又不想手动去设置 post_name，于是乎想着能不能将 post_name ","name":"WordPress 设置文章 post_name 字段与 ID 同步","url":"https://www.ikxin.com/article/wordpress-postname-id","isPartOf":{"@id":"https://www.ikxin.com/#website"},"potentialAction":[{"@type":"ReadAction","target":["https://www.ikxin.com/article/wordpress-postname-id"]}]}]}
```

## Sitemap

See the full [sitemap](https://www.ikxin.com/sitemap.md) for all pages.
