3

如何从子页面的永久链接中删除父 slug?这可能不是阿塔瓦尔帕特有的,但我不知道该怎么做……也许有一个插件可以工作?

我使用设置为父页面的子页面的页面(即不是帖子)。在我的菜单栏导航中,它们显示为:

/services/page1.html
/services/page2.html
/services/page3.html

我想要的是:

/page1.html
/page2.html
/page3.html

(我正在使用“html-on-pages”插件来添加 .html,因为我正在将此站点从另一台服务器移过来,这是它当前拥有的站点结构。)

有什么办法可以完成我想做的事情吗?

4

5 回答 5

5

将此添加到您的functions.php

add_filter( 'post_link', 'remove_parent_cats_from_link', 10, 3 );
function remove_parent_cats_from_link( $permalink, $post, $leavename )
{
$cats = get_the_category( $post->ID );
if ( $cats ) {
// Make sure we use the same start cat as the permalink generator
usort( $cats, '_usort_terms_by_ID' ); // order by ID
$category = $cats[0]->slug;
if ( $parent = $cats[0]->parent ) {
// If there are parent categories, collect them and replace them in the link
$parentcats = get_category_parents( $parent, false, '/', true );
// str_replace() is not the best solution if you can have duplicates:
// myexamplesite.com/luxemburg/luxemburg/ will be stripped down to myexamplesite.com/
// But if you don't expect that, it should work
$permalink = str_replace( $parentcats, '', $permalink );
}
}
return $permalink;
}
于 2013-04-28T14:11:49.710 回答
3

试试这个自定义永久链接插件。这可能会对您有所帮助。

于 2014-03-03T11:12:36.477 回答
0

也许自定义永久链接插件可能会对您有所帮助。

该插件基于每个帖子、每个标签或每个类别设置自定义永久链接。

于 2013-04-28T14:30:29.330 回答
0

它不能解决从 URL 中删除父 slug 的问题,但它可能会解决您遇到的问题。它需要您更改主题并使用 WordPress 的本地菜单构建器。

像往常一样创建所有页面,除了将它们嵌套在父级下。然后创建一个新菜单(外观 > 菜单)并添加“父”页面。使用菜单生成器,您可以使顶级页面嵌套在这些“父”页面下。完成后,将此菜单设置为主菜单。(一旦您进入此菜单构建器页面,这一切都很直观)

最后,您需要更改主题以删除它正在使用的名称菜单(可能wp_list_pages或类似的东西),然后调用您的新主菜单。您可以使用此代码调用该新菜单:

< ?php wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'primary' ) ); ?>

这是完成此操作的更完整指南。

FWIW,我正在尝试从自定义帖子类型的 url 中删除父 slug,所以如果你这样做了,碰巧弄明白,请告诉我。我很想看看你做了什么来完成这件事。

于 2013-05-28T16:24:51.383 回答
0

如果有人需要不同的提示:
如果您想要使用父页面的下拉导航菜单,则从管理仪表板创建一个菜单,您将在其中使用父页面设置下拉菜单。

于 2015-05-12T14:41:37.407 回答