需要在WordPress中使用友好URL的帮助

时间:2010-11-02 作者:Steven

我正在Wordpress中创建som自定义模板,并在URL中传递一些数据。

当前我的URL如下所示:http://www.mysite.com/designers/?id=43&name=designer+name

URL包含设计器ID和设计器名称。

我真的很想用这个:http://www.mysite.com/designers/designer+name/

我的永久链接结构设置为/%category%/%postname%/

我的htaccess文件如下所示:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
我已经看过了http://codex.wordpress.org/Using_Permalinks, 但不会变得更聪明。

我有两个问题:

更改上述关于SEO的URL有什么意义吗?我如何才能获得“漂亮”的URL


UPDATE<我正在添加更多信息以供澄清。

我正在自己开发该网站。该模板是100%自定义模板。根据$GET的信息,我从自定义数据库表加载数据,并将其显示在页面上。我的网站平均每天有3-400个独立访问者。在高峰期,我每天有2000名独立访客

Url = get_permalink().\'?bid=\'.$brand->id.\'&name=\'.$brand->name;

我在这里使用了类似的方法:
http://storelocator.no/search/?brandID=4673&storeID=0&brand=Moods+of+Norway

使用自定义帖子类型是我考虑的一个选项,但我需要自己的表格结构,因为设计师/品牌与图库(以及更多到其他表格的链接)相关联。所以在WP POST表中保存品牌数据是行不通的。

所以我需要知道:

  • What do I need to do with my Permalink structure?
  • What do I need to do with my .htaccess file?

3 个回复
最合适的回答,由SO网友:Jan Fabry 整理而成

我自己对重写规则不太了解(或不太了解)(但似乎nobody does), 但根据其他一些答案,我得出了这个结论。我们添加了一个新的重写规则designers/designer_name/. 我们“刷新”重写规则,以便将其保存到数据库中,但请确保只执行一次,因为这是一个昂贵的操作。现在,我们设置了一个与页面匹配的模式,并将多余部分保存在designer_name 查询变量。由于WordPress不知道它必须查看这个变量,因此我们将query_vars 过滤并告诉它也看看这个。

现在,在page-designers.php 主题文件,我们可以get_query_var(\'designer_name\') 它会给你一个设计师的名字。如果你想要额外的东西,比如分页(designer/designer_name/page/2), 您需要为其添加额外的重写规则(或feed,或任何以designer/designer_name). 但基本的东西应该有用。

<?php
/*
Plugin Name: WPA 3537
Plugin URI: http://wordpress.stackexchange.com/questions/3537/need-help-with-friendly-urls-in-wordpress
Description: Need help with friendly URL\'s in Wordpress
Version: 1.0
Author: Jan Fabry
*/

register_activation_hook(__FILE__, \'wpa3537_flush_rules\');
function wpa3537_flush_rules()
{
    add_rewrite_rule(\'designers/([^/]+)\', \'index.php?pagename=designers&designer_name=$matches[1]\', \'top\');
    flush_rewrite_rules(false);
}

add_filter(\'query_vars\', \'wpa3537_query_vars\');
function wpa3537_query_vars($query_vars)
{
    $query_vars[] = \'designer_name\';
    return $query_vars;
}

SO网友:MikeSchinkel

首先,我有一个问题:如何获得如下URL?

http://www.example.com/designers/?id=43&name=designer+name
这些不是WordPress的标准URL;这是你所设想的工作方式,还是你的网站真的是这样的?如果是这样,那么这些URL是如何产生的呢?这是一个高度定制的网站吗?谁定制的;你,还是其他人?

关于.htaccesswe\'ll start with .htaccess to get that out of the way. 您的安装与其他WordPress安装几乎完全相同.htaccess 除安装1以外的文件。)提供URL子目录(这样差别就很小了),2。)有人不明白WordPress是如何将URL发送到他们周围的,和/或3。)除了那些确实需要.htaccess 捣乱(如果你不知道为什么你需要这么做,那么几乎百分之百的可能性是你不知道。)

关于WordPress URL中的主要类别下一步desired URL format with category name in the first path segment 是WordPress社区因性能原因而不喜欢的模式,请参见以下内容:

SO网友:Merlinox

Jan Fabry写的都是我写的,但当我打电话时:

http://www.mysite.com/customPostTypeSlug/page/id
Wordpress重定向(301)me至:

http://www.mysite.com/customPostTypeSlug/page
我的规则是(由“init”操作调用):

add_rewrite_rule(
        \'customPostTypeSlug/page/([^/]+)/?\' ,
        \'index.php?customPostTypeSlug=page&id=$matches[1]\',
        \'top\'
    );
然后我冲洗它。

我将permalink从%category%/%postname%%postname% 而且似乎有效。

结束