我觉得我与目前的代码非常接近,但有些东西仍然无效。 Stack Overflow上的其他类似问题都没有解决这个问题。
我在WordPress中有父页面和子页面(不是帖子,不是自定义帖子类型),并且选择了默认的mydomain.com/%postname%结构。
目前页面的永久链接结构是mydomain.com/parent-page/child-page
在单页面编辑器的后端,正确显示所需的永久链接(删除了父页面)。即mydomain.com/child-page
但是,当我访问mydomain.com/child-page时,我得到了404。
我已经通过访问永久链接设置页面来刷新重写规则。
我做错了什么?
function wpse_101072_flatten_hierarchies( $page_link, $post ) {
$post = get_post($post);
$uri = '';
if($post->post_parent !== 0) {
$uri = get_post( $post->post_parent )->post_name . "/" . $uri;
return str_replace( $uri, '', $page_link );
} else {
return $page_link;
}
}
add_filter( 'page_link', 'wpse_101072_flatten_hierarchies', 10, 2 );
function wp_pages_permalink( $permalink_structure, $post_id ) {
if ( empty( $post_id ) ) return $permalink_structure ;
$post = get_post( $post_id );
if($post->post_parent !== 0) {
$par = get_post($post->post_parent);
$parname = $par->post_name . '/';
$permalink_structure = str_replace( '%pagename%', $post->post_name, $permalink_structure);
return $permalink_structure;
}
}
add_filter( 'page_link', 'wp_pages_permalink', 10, 2 );