将 WordPress URL 批量转换为新 URL 结构的最佳方法?

Posted

技术标签:

【中文标题】将 WordPress URL 批量转换为新 URL 结构的最佳方法?【英文标题】:Best Method to Mass Convert WordPress URLs to new URL structure? 【发布时间】:2021-09-25 15:15:48 【问题描述】:

我制定了一个计划,将我的 30k+ 帖子 WordPress 网站迁移到我构建的自定义网站。我的主要争论点之一是 SEO,如果我不想在 Google 上削弱我的 SEO(这对我来说非常好),我很确定我需要正确转发我所有的帖子 URL。

当前结构: https://ygoprodeck.com/xyz-rank-up-shark/

新结构:https://ygoprodeck.com/deck/xyz-rank-up-shark

这部分很简单,因为我可以在新数据库中使用来自 WordPress 的 post_name 列构建新 URL,并将旧 URL 重定向到新的 /deck/ URL。 但是,如何让转发器区分帖子和页面?

举个例子:

当前结构:https://ygoprodeck.com/ritual-summoning-the-underdogs-greatest-hits/

新结构:https://ygoprodeck.com/article/ritual-summoning-the-underdogs-greatest-hits/

我不完全确定我的前锋如何知道重定向到/deck/ 或重定向到/article/

我能想到的唯一解决方案是手动重定向每个 30k+ 的 URL,这对我来说似乎是一项艰巨的任务。

【问题讨论】:

你怎么知道哪些放在甲板上,哪些是 ot 文章?标准是什么? 它设置的wordpress帖子类别将是标准 那么你想要做什么来检查类别并根据它进行重定向。对吗? 从逻辑上讲确实有道理,但是我认为任何类型的 url 转发器 (htaccess/cloudflare) 都没有这种功能 否 需要在wordpress php中完成 【参考方案1】:

类似这样的:

$file = wp_get_upload_dir() . 'rules.txt';
$open = fopen( $file, "a" );

args = array('post_type' => 'post', 'posts_per_page' => -1 );
$posts = new WP_Query($args);

if( $posts->have_posts() )
    while( $posts->have_posts() )
        $posts->the_post();
        global $post;

        $permalink = get_permalink($post->ID);
        //Assuming each post has only 1 category
        $category =  get_the_category($post->ID)[0]->name;

        $write = fputs( $open, 'Redirect 301 ' . $permalink . ' /' . $category . $permalink. '\n' );
    
    flocse( $open );
    wp_reset_query();

【讨论】:

以上是关于将 WordPress URL 批量转换为新 URL 结构的最佳方法?的主要内容,如果未能解决你的问题,请参考以下文章

将我的wordpress网站移动到主域名会导致一些错误

移动 Wordpress 域

将url参数转换成json格式,然后批量给url地址拼接参数

如何创建包含多个URL的WordPress页面?

WordPress对url做重定向处理

如何使用 wordpress 在 DOM 中附加回调函数