迁移到WordPress后保留旧网站URL结构

时间:2020-03-24 作者:Ale

Old (non-Wordpress) URL structure:

“新闻”和“八卦”是类别,“意大利”和“英国”是子类别

https://example.com/news/italy
https://example.com/news/uk

https://example.com/gossip/italy
https://example.com/gossip/uk

New (Wordpress) URL structure:

从旧数据库导入所有内容时,创建的结构不同。

https://example.com/news/italy
https://example.com/news/uk-news

https://example.com/gossip/italy
https://example.com/gossip/uk-gossip
有没有办法重现和保留旧的URL结构?

1 个回复
SO网友:WebElaine

您将无法在WordPress中使用常规类别,因为所有类别都必须具有唯一的slug。

但是,您仍然可以实现此URL结构。您需要至少创建一个自定义帖子类型。我建议将“新闻”类别保留为常规核心帖子,并创建一个称为“八卦”的自定义帖子类型

您可以使用自己的自定义插件创建此插件。将此代码另存为“/wp-content/plugins/create-gossip-cpt/”中的“create-gossip-cpt.php”:

<?php
/* Plugin Name: Create Gossip CPT */
// Run everything when the plugin is activated
register_activation_hook(__FILE__, \'wpse_361317_activation\');
function wpse_361317_activation() {
    // (You may have to play around with the settings)
    register_post_type(\'gossip\',
        array(
            // Plural, human-readable label for menu
            \'label\' => \'Gossip Articles\',
            // Show in REST API must be true for the Block Editor
            \'show_in_rest\' => true,
            // Enable Title, Editor, and Excerpt
            \'supports\' => array(\'title\', \'editor\', \'excerpt\'),
            // has_archive will create http://example.com/gossip/
            // much like a Post Category archive
            \'has_archive\' => \'gossip\'
        )
    );
}
?>
这将为您提供基本结构。您将在wp admin的左侧导航窗口中有一个新的“八卦”项目,与您当前的“帖子”类似。

接下来你将面临一个选择。您可以将此帖子类型分层,在这种情况下http://example.com/gossip/italy 这将是一个CPT本身。在这种情况下,您将手动管理所有内容。这可能不是您想要的,但用于设置它的代码已经在上面介绍过了。

如果您希望它是所有分配到名为“意大利”的八卦类别的“八卦”项目的存档,并自动列出所有相关帖子,那么您必须创建自定义分类法,将其分配给CPT,并设置URL重写。从这里开始,如果您需要其他方面的帮助,您可能会在WPSE的回答问题中找到其余部分的代码。

相关推荐

Custom slugs for Each Tab

我有一个音乐家信息网站。这些信息通过“常规”、“歌曲”、“相册”和“视频”选项卡分为几个不同的主题。<?php if($tab_story){?> <li role=\"presentation\" class=\"active\"> <a href=\"#story\" aria-controls=\"story\" role=\"tab\" data-toggle=\"tab\">Information</a> </