【问题标题】:Remove parts of the url for a wordpress site删除 wordpress 网站的部分 url
【发布时间】:2023-03-28 22:24:01
【问题描述】:

我正在尝试在 htaccess 上设置服务器规则,以删除当您使用 CPT(自定义帖子类型)时 wordpress 通过永久链接生成的部分 url。 事实是我不确定这是否可以通过简单的重写规则来实现。

我的网址实际上是这样的:

http://www.13mdn.com/newreleases_post/white-stripes.

我想改成:

http://www.13mdn.com/white-stripes

http://www.13mdn.com/oldreleases_post/the-who

我想改成:

http://www.13mdn.com/the-who

这是我对 htacces 文件制定的规则

RewriteRule ^newreleases_post/(.*)$ $1
RewriteRule ^oldreleases_post/(.*)$ $1

这行不通。

我也尝试过通过wordpress函数like this设置规则

【问题讨论】:

  • 您不能将永久链接设置更改为%postname% 吗?
  • 其实我把它设置为 postname...

标签: wordpress .htaccess mod-rewrite url-rewriting


【解决方案1】:

要从帖子 URL 中删除自定义帖子类型 slug,您需要在 functions.php 中添加以下内容:

function remove_cpt_slug($post_link, $post, $leavename) {
    if($post->post_type == 'newreleases_post' || $post->post_type == 'oldreleases_post') {
        $post_link = str_replace('/'.$post->post_type.'/', '/', $post_link);
    }
    return $post_link;
}
add_filter('post_type_link', 'remove_cpt_slug', 10, 3);

这将更改 CPT 的所有 URL 以删除 CPT 名称。要让 Wordpress 知道他应该检查这些 CPT,请添加以下函数:

function request_cpt($query) {
    if(! $query->is_main_query()) {
        return;
    }
    if(count($query->query) != 2 || ! isset( $query->query['page'])) {
        return;
    }
    if (! empty( $query->query['name'])) {
        $query->set('post_type', array('post', 'newreleases_post', 'oldreleases_post'));
    }
}
add_action('pre_get_posts', 'request_cpt');

最后一步,要将旧网址重定向到新网址,请将其添加到 htaccess 顶部(在 Wordpress 部分之前):

RewriteEngine On
RewriteRule ^newreleases_post/(.*)$ $1 [L,R=301]
RewriteRule ^oldreleases_post/(.*)$ $1 [L,R=301]

请注意,如果您对 CPT 和页面使用相同的永久链接,这可能会导致冲突。

【讨论】:

    【解决方案2】:

    只需将您的永久链接更改为自定义格式:/%postname%/

    【讨论】:

    • 我之前说过我已经用自定义结构设置了永久链接,但是 wordpress 在每个帖子上都放了一个带有自定义帖子类型名称的 slug...这就是重点
    • @FrnndSgz 你在这里漏掉了一个重要的信息:newreleases_postoldreleases_post 是 CPT。 ehmad 和我都认为这是类别。
    • 我的错,问题不清楚。你能撤消否决票吗,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 2015-12-14
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 1970-01-01
    相关资源
    最近更新 更多