WordPress 設定文章 post_name 與 ID 同步
8,683 3
前言
我一直有個強迫症,看著 WordPress 的文章中有個欄位 post_name 如果不設定的話,就會預設使用標題 title 作為 post_name,導致使用 post_name 作為文章 URL 的時候會出現中文,看著很不協調。
然而我又不想手動去設定 post_name,於是乎想著能不能將 post_name 預設設定成與 ID 相同。
批次替換現有資料
首先將已經發布的文章全部替換掉,直接用 SQL 語句
SQL SQL
UPDATE wp_posts SET post_name = ID;
這裡的 wp_posts 是 WordPress 資料庫中的文章表。
發布文章自動修改
要在 WordPress 中每次發布或更新文章時,預設將 post_name 設定為與 ID 相同,可以透過新增自訂功能來實現此功能。
開啟 WordPress 主題資料夾中的 functions.php 檔案,在檔案的末尾新增以下程式碼:
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 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)你好,看你的站做的挺不错的,空了联系下我1587894193,想和你商量下广告事宜。
您好,想注册img的图床,不过似乎无法刷新出验证码
小俊博客的域名已更改,烦请博主更改一下,谢谢!