WordPress 将全站所有文章的别名设置成自身的 ID数
咱们国内的WordPress用户,很多人的文章固定连接都是围绕着文章的 ID 设置的,而在国外则是大多数都是文章的别名(默认为文章的标题英文小写并去除或转义一些特殊字符)。如果使用文章的别名作为固定连接,不手动设置别名,就会出现中文链接,非常不好。
但如果有一天你想在固定连接里包含别名,那就最好手动设置每一篇文章的别名,当然了,主动去设置这种文章链接的除外。防止出现中文。但这样,之前的文章还是会出现中文,又懒得去改,怎么办呢?本文就教你怎么把老文章的别名自动设置成自身的 ID.
首先把下边的代码放到主题的 functions.php 里:
/**
* 将已发布文章别名改为文章ID
* 版权:灵异派 www.lypai.net
* 执行完请注释或删除本代码
*/
function Bing_post_name_id(){
// 仅管理员可执行
if ( ! current_user_can( 'manage_options' ) ){
die("权限不足,仅限管理员");
}
$args = [
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => 50,
'no_found_rows' => true,
];
$updated = 0;
$skipped = 0;
$offset = 0;
while ( $posts = get_posts( $args + ['offset'=>$offset] ) ){
foreach ( $posts as $post ){
if ( $post->post_name === (string)$post->ID ){
$skipped++;
continue;
}
wp_update_post([
'ID' => $post->ID,
'post_name' => $post->ID
]);
$updated++;
}
$offset += 50;
}
echo "执行完成\r\n";
echo "更新:{$updated} 篇\r\n";
echo "跳过无需更新:{$skipped} 篇\r\n";
exit;
}
// 访问地址:域名/?post_name_id=lypai2026
if( isset($_GET['post_name_id']) && $_GET['post_name_id'] === 'lypai2026' ){
add_action('init','Bing_post_name_id');
}
放置好代码后,访问一下下边的网站,访问前注意一定要备份数据,以免出错。
http://example.com/?post_name_id=lypai2026
文章多的话网页加载会比较慢,因为正在一篇文章一篇文章的修改别名,要耐心等到网页完全加载好才可以。
加载好后,删除之前添加的代码,修改完成,所有文章的别名都会变成自身的 ID.







《WordPress 将全站所有文章的别名设置成自身的 ID数》留言数:0