Custome home page url

时间:2018-05-18 作者:Space Peasant

是否可以只为主页设置特定的url?

我已经设置了在主页上显示最近的帖子,我不希望它为空,而是像www.myweb这样的东西。com/home和其他页面/帖子中,我不希望包含主页。

所以www.myweb。com/other页面不应为www.myweb。com/主页/其他页面/

有可能吗?

顺便说一句,如果不需要的话,我不会这么做,这只是更大问题的一部分,但有一个解决方案是为主页提供特定的url。

1 个回复
SO网友:kero

首先:这根本不是网站的行为方式。标准是在根URL上有某种主页/.

现在WordPress是可定制的,我可以实现你想要的-至少在大多数方面。

// used to generate the link
add_filter(\'page_link\', \'WPSE_1805_page_link\', 10, 3);
function WPSE_1805_page_link($link, $post_id, $sample) {
    // if link for any page other than home was requested, return early
    if ($link !== home_url(\'/\'))
        return $link;

    // otherwise, return page link with slug
    return _get_page_link($post_id);
}

// don\'t redirect /slug to / for homepage
add_filter(\'redirect_canonical\', \'WPSE_1805_redirect_canonical\', 10, 2);
function WPSE_1805_redirect_canonical($redirect_url, $requested_url) {
    $home = get_page_link(get_option(\'page_on_front\'));

    // if home was requested, return requested URL
    if ($requested_url === $home)
        return $requested_url;

    return $redirect_url;
}
最必要的功能包括wp-includes/link-template.php 我在那里找到了这些钩子。

page_link 是必要的,所以/foo 不会被重写为/ 仅仅因为它是首页(当创建/获取页面链接时,例如通过get_permalink()).

redirect_canonical 你需要,所以当一个来访者/foo, 它们不会重定向到/.

有了这个,访客仍然可以/ 并将看到所选静态首页的内容(尽管规范链接将设置为/foo, 因此搜索引擎应该列出该链接)。

要禁用此功能,或者更好地说重定向访问者,可以使用以下命令

add_action(\'template_redirect\', \'WPSE_1805_template_redirect\');
function WPSE_1805_template_redirect() {
    global $wp;

    // get requested URL
    $current_url = home_url( $wp->request );
    // if requested URL is root or root with ending slash
    if ($current_url === home_url(\'\') || $current_url === home_url(\'/\')) {
        wp_redirect( get_page_link(get_option(\'page_on_front\')), 301 );
        exit;
    }
}
即使这样,你仍然可以链接到/, 只是因为主题作者可能使用home_url(\'/\') 在他们的代码中。您可以过滤它,但我的其他代码需要重写,因为它也使用此函数。

结束

相关推荐

WordPress URLs without posts

我们正在开发基于WordPress的更大系统,但WordPress只用于“静态”内容,系统的主要部分应该是使用外部API和显示数据。我的观点是:我是否能够告诉URL重写不要对某些URL使用WordPress内部系统,而使用其他系统?E、 g。mysite.com/news/news-title 会显示帖子,但是mysite.com/customcontent/anotherlink 将调用某种机制从API加载数据并显示它。我不知道WordPress是否能做到这一点。。谢谢你的观点。