具有共享的自定义分类的自定义帖子类型列表的漂亮URL?

时间:2011-03-10 作者:José Pablo Orozco Marín

(Moderator\'s note: 标题是“将具有查询字符串值的共享自定义分类URL转换为尼斯URL”)

我有一个自定义分类模板:taxonomy-country.php 由两(2)种自定义帖子类型使用:\'event\'\'contact\'. 我想设置要显示的页面,例如:

“所有哥斯达黎加联系人”,以及

“所有美国活动”

当前这些URL为我提供了这些列表:

但我想将这些URL实现为如下漂亮的URL:

1 个回复
SO网友:TheDeadMedic

对于第一个首选项,您需要过滤其他重写规则,如下所示;

function __extra_country_rewrite_rules( $rules )
{
    global $wp_rewrite;
    if ( !isset( $wp_rewrite ) )
        $wp_rewrite = new WP_Rewrite;

    $m1 = $wp_rewrite->preg_index(1); // preg match backreferences
    $m2 = $wp_rewrite->preg_index(2);
    $m3 = $wp_rewrite->preg_index(3);

    $rules[\'country/([^/]+)/([^/]+)s/feed/(feed|rdf|rss|rss2|atom)/?$\'] = "index.php?country=$m1&post_type=$m2&feed=$m3";
    $rules[\'country/([^/]+)/([^/]+)s/(feed|rdf|rss|rss2|atom)/?$\'] = "index.php?country=$m1&post_type=$m2&feed=$m3";
    $rules[\'country/([^/]+)/([^/]+)s/page/?([0-9]{1,})/?$\'] = "index.php?country=$m1&post_type=$m2&paged=$m3";
    $rules[\'country/([^/]+)/([^/]+)s/?$\'] = "index.php?country=$m1&post_type=$m2";

    return $rules;
}
add_filter( \'country_rewrite_rules\', \'__extra_country_rewrite_rules\' );
第二个不太动态,因为您需要在重写中硬编码帖子类型(URL中没有初始的“标识符”,不像前者中的“国家”)。

function __extra_country_rewrite_rules( $rules )
{
    global $wp_rewrite;
    if ( !isset( $wp_rewrite ) )
        $wp_rewrite = new WP_Rewrite;

    $m1 = $wp_rewrite->preg_index(1); // preg match backreferences
    $m2 = $wp_rewrite->preg_index(2);
    $m3 = $wp_rewrite->preg_index(3);

    $rules["(event|contact)s/country/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$"] = "index.php?post_type=$m1&country=$m2&feed=$m3";
    $rules["(event|contact)s/country/([^/]+)/(feed|rdf|rss|rss2|atom)/?$"] = "index.php?post_type=$m1&country=$m2&feed=$m3";
    $rules["(event|contact)s/country/([^/]+)/page/?([0-9]{1,})/?$"] = "index.php?post_type=$m1&country=$m2&paged=$m3";
    $rules["(event|contact)s/country/([^/]+)/?$"] = "index.php?post_type=$m1&country=$m2";

    return $rules;
}
add_filter( \'rewrite_rules_array\', \'__extra_country_rewrite_rules\' );
您需要刷新永久链接以使更改生效(添加代码后只需访问永久链接设置页面)。

如果您发现问题仍然无法正常运行,请使用用于注册帖子类型的代码更新您的问题;自定义分类法。

结束

相关推荐

curl problem or permalinks

我刚刚配置了我的VPS,我使用的是Centos,一切都很好,但如果我将永久链接设置为自定义结构,然后接受主页,没有帖子出现,它会显示404页,我想这是因为我没有启用curl,但我不知道我的php在哪里。我的centos中的ini文件?好的,我的卷曲被启用了,我检查过了phpinfo(); 这里是URLhttp://74.117.158.182/info.php但如果我在我的wordpress中设置了永久链接,那么接受主页,所有都会给我404页,你可以在这个URL上查看http://mbas.co.in如果