WordPress分类固定链接-自定义?

时间:2015-04-03 作者:Scriptable

项目是否可以有多个永久链接?

我目前正在努力为已设置的自定义分类法设置路由。

我有一个自定义的帖子类型,比如酒店。

其中一个帖子的标准URL可能是/酒店/万豪酒店

但我也有一个自定义的分类法,位置。

我希望能够通过标准URL和类似于分类学面包屑的URL访问每家酒店,例如/地点/英国/万豪酒店,甚至/地点/利物浦/万豪酒店。

我尝试了获取术语链接和附加$post->post_name 最后,我发现一个404错误,所以它与路线不匹配

这可能吗?

我已经重写了我的分类法,并对其进行了尝试,因此我可以使用url/Locations/Liverpool浏览利物浦的酒店。这部分工作正常,但当用户单击此页面上的一篇帖子时,我希望它遵循该部分的URL方案

谢谢

2 个回复
SO网友:Rarst

WordPress中的每一篇帖子都有一个特定的永久链接(如果有的话,不包括基于非漂亮参数的短链接)。这不仅对WordPress有意义,而且对其他实体(如人员和搜索引擎)也有意义。

当然,也可以创建额外的URL来加载WP中的帖子。

然而,这对你没有任何帮助。您必须:

从头开始为其构建和实施重写规则要非常小心规范链接,搜索引擎不会将其视为不必要的重复内容

SO网友:Scriptable

我通过重写、添加query\\u var和在模板文件中进行一些条件检查,成功地实现了这一点。

我将在下面发布我使用的代码,但尽管这很有效,而且似乎工作得很好,但这并不是最好的方法。如果有人知道更好的方法,请张贴答案。

我用过这个online post 供参考。

Note: 列表页面在一侧下方的侧栏中显示分类法中的酒店列表,并在主内容区域中显示当前选定或随机选择的酒店。这将解释我如何使用下面的循环。

function prefix_locations_rewrite_rule() {
    add_rewrite_rule( \'Locations/([^/]+)/([^/]+)\', \'index.php?locations=$matches[1]&hotel=$matches[2]\', \'top\' );
}

function prefix_register_query_var( $vars ) {
    $vars[] = \'hotel\';

    return $vars;
}

function prefix_url_rewrite_templates() {

    if ( get_query_var( \'hotel\' ) && is_singular( \'hotel\' ) ) {
        add_filter( \'template_include\', function() {
            return get_template_directory() . \'/taxonomy-locations.php\';
        });
    }
}

add_action( \'template_redirect\', \'prefix_url_rewrite_templates\' );
add_filter( \'query_vars\', \'prefix_register_query_var\' );
add_action( \'init\', \'prefix_locations_rewrite_rule\' );
在酒店登录页的我的模板文件中:

$hotelSlug = get_query_var( \'hotel\', false);

if ( have_posts() ) {
    while (have_posts()) : the_post();

        if ($post->post_name == $hotelSlug) {
            break;
        }

    endwhile;
}
这段代码将在帖子上迭代,如果hotel slug与查询var匹配,它将在那里中断,以便当前帖子就是我们想要的帖子。

我们可以在这里使用一个查询,但由于我在分类法中已经有了一个帖子列表,所以我想我应该对它进行迭代。下面我检查是否选择了特定的酒店,否则我会从列表中随机显示一家酒店。

我仍在为这段代码添加额外的逻辑和错误处理,我希望它能帮助有类似问题的人

结束

相关推荐

Custom permalinks structure

我希望有这样的结构:www.mysite.com/2013 (必须显示2013年的所有职位)www.mysite.com/my-category/2013 (必须显示2013年和“我的类别”类别的所有帖子)www.mysite.com/my-category/my-tag/ (必须显示所有类别为“我的类别”和标记为“我的标记”的帖子)www.mysite.com/my-category/ (必须显示“我的类别”类别的所有帖子)www.mysite.com/my-