【问题标题】:How to create pretty URL's for category page queries in WordPress?如何在 WordPress 中为类别页面查询创建漂亮的 URL?
【发布时间】:2018-03-02 00:58:14
【问题描述】:

我正在尝试将类别链接从查询转换为漂亮的 URL。

例如,我有类别“阿拉斯加”。 它的网址是https://www.mywebsite.com/category/alaska/

我使用以下链接从 url 获得一些查询: https://www.mywebsite.com/category/alaska/?subscriber=1

我想将此 URL 转换为 Pretty URL (https://www.mywebsite.com/category/alaska/subscriber/) 并且还想为其显示自定义模板。

我试过这个代码:

试试 1

function my_template() {
    if ( is_archive() ) {
        if ( isset( $_REQUEST['subscriber'] )  ) {
            $myurl = get_category_link();
            if (substr($myurl) != "/") $myurl .= "/";
            $myurl .= "subscriber/";
            $myurl .= trim( sanitize_title_for_query( $_REQUEST['subscriber'] ) ) . "/";
            exit( wp_redirect( $myurl ) ) ;
        }
    }
}
add_action( 'template_redirect', 'my_template_redirect' );

上面的代码对我不起作用。

我对 WordPress 中的 URL 重写没有足够的知识。

请帮帮我。


更新:

尝试2:

comment by Oussama 中所述 我想出了这段代码:

function wallpaperinho_subcat_rewrite_rule() {
    add_rewrite_rule('^category/([^/]*)/subscriber/?','index.php?page_id=305965&subscriber=1','top');
}
add_action('init', 'wallpaperinho_subcat_rewrite_rule', 10, 0);

上述函数有效,但我无法在自定义页面和函数中检测到当前类别 ID。有什么办法吗?所以我可以用不同的类别显示不同的数据。

【问题讨论】:

  • 漂亮的网址是不是只有abcedfghijklmnopqrstuvwxyz./:中的字符的网址?
  • 是的。我想将这些查询 URL 转换为 SEO 友好 URL

标签: php wordpress url-rewriting


【解决方案1】:
url = "https://www.mywebsite.com/category/alaska/?subscriber=1"
pretty = ""
for char in url: ## Loop through every letter in the 'ugly' URL
    if char in "abcedfghijklmnopqrstuvwxyz./:": ## If the character is allowed
        pretty += char  ## Add it to the Pretty URL

编辑:刚刚意识到您的代码是用 PHP 编写的......这段代码是用 Python 编写的 :(......我正在开发一个 PHP 版本。

【讨论】:

  • 感谢 Adi C 的回答。可能其他人(Paython Coder)会发现它很有用。 :) 我会在 PHP 中等待你的回答? :)
【解决方案2】:

我不确定 WordPress,您正在寻找的是使用 .htaccessApache 配置重写 URL。

【讨论】:

  • 对不起,我使用 NGINX 作为我的服务器。我想知道如何在 WordPress 中做到这一点。
【解决方案3】:

您可以使用 .htaccess 使链接对 SEO 友好

RewriteRule ^category/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$  category/$1/?subscriber=$2  [NC,L]

然后您可以使用 $_GET['subscriber'] 检索您的 var 订阅者值

【讨论】:

  • 我正在使用 NGINX,但感谢您的回答 :) 在 WordPress 中有什么方法可以做到这一点吗?不使用服务器端重写规则。
  • 我想你所需要的都在这里:wordpress.stackexchange.com/questions/270397/… 它一步一步地解释了如何准确地做你需要的事情
猜你喜欢
  • 2011-03-27
  • 1970-01-01
  • 2013-06-16
  • 1970-01-01
  • 2018-02-07
  • 2013-05-25
  • 2011-06-03
  • 2013-03-10
  • 2014-12-02
相关资源
最近更新 更多