有没有可能在不将旧的固定链接更改为帖子和301重定向的情况下更改固定链接结构?

时间:2021-12-07 作者:Rafaucau

我想改变permalink结构,只针对新职位。我想让旧的保持原样。我有一个网站有超过30000个帖子,我担心301个重定向可能会搞砸SEO。有没有办法在WordPress中解决这个问题?此外,该解决方案应与Yoast SEO兼容。

1 个回复
最合适的回答,由SO网友:Aboelabbas 整理而成

您可以使用一个插件来实现这一点,如;Custom Permalinks"E;

步骤如下:

1-安装并激活插件。

2-将所有帖子当前永久链接保存到自定义元字段中“;custom\\u permalink“自定义”;该元字段是插件用来为每个帖子保存自定义永久链接并将其用作永久链接的字段,无论默认结构是什么。

3-您将在中保存的永久链接;custom\\u permalink“自定义”;每个帖子的字段是不带起始斜杠的相对永久链接,例如:

如果您的post permalink是;https://yourdomain.com/something/something/";,将保存在元字段中的部分是;某物/某物;。

4-保存所有帖子的永久链接后,现在可以更改永久链接结构,插件将保留当前帖子的旧结构,因为每个帖子的结构都保存为自定义永久链接。

在更改结构之前,可以通过编程方式为所有当前帖子保存当前永久链接结构,如下所示:

add_action(\'admin_notices\', function(){
    $posts = get_posts([
            \'post_status\' => \'publish\',
            \'post_type\' => \'post\',
            \'no_found_rows\' => true,
            \'posts_per_page\' => 100,
            \'meta_query\' => [
                    [
                            \'key\' => \'custom_permalink\',
                            \'compare\' => \'NOT EXISTS\'
                    ]
            ]
    ]);

    if(empty($posts)) {
        echo \'<div class="notice notice-success"><p><strong>All custom permalinks were saved</strong></p></div>\';
        return;
    }

    foreach ($posts as $post) {
        $customPermalink = str_replace(home_url(\'/\'), \'\', get_permalink($post));
        update_post_meta($post->ID, \'custom_permalink\', $customPermalink);
    }

});
前面的代码将在每次仪表板页面刷新时为100篇文章保存永久链接,直到出现完成消息。

Important: You must remove this code when done using it.

相关推荐

如何从主页禁用Yoast SEO模式?

我知道它可以在任何地方禁用add_filter( \'wpseo_json_ld_output\', \'__return_false\' ); 但我想保留面包屑,所以如果我能做到的话if (is_home()) 那太好了。我只是不知道该挂在哪里。